1*495ae853SAndroid Build Coastguard Worker /****************************************************************************** 2*495ae853SAndroid Build Coastguard Worker * 3*495ae853SAndroid Build Coastguard Worker * Copyright (C) 2022 The Android Open Source Project 4*495ae853SAndroid Build Coastguard Worker * 5*495ae853SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*495ae853SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*495ae853SAndroid Build Coastguard Worker * You may obtain a copy of the License at: 8*495ae853SAndroid Build Coastguard Worker * 9*495ae853SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*495ae853SAndroid Build Coastguard Worker * 11*495ae853SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*495ae853SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*495ae853SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*495ae853SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*495ae853SAndroid Build Coastguard Worker * limitations under the License. 16*495ae853SAndroid Build Coastguard Worker * 17*495ae853SAndroid Build Coastguard Worker ***************************************************************************** 18*495ae853SAndroid Build Coastguard Worker * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*495ae853SAndroid Build Coastguard Worker */ 20*495ae853SAndroid Build Coastguard Worker 21*495ae853SAndroid Build Coastguard Worker /** 22*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 23*495ae853SAndroid Build Coastguard Worker * @file 24*495ae853SAndroid Build Coastguard Worker * isvce_pred_structs.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * @brief 27*495ae853SAndroid Build Coastguard Worker * Contains struct definition used for prediction 28*495ae853SAndroid Build Coastguard Worker * 29*495ae853SAndroid Build Coastguard Worker * @author 30*495ae853SAndroid Build Coastguard Worker * ittiam 31*495ae853SAndroid Build Coastguard Worker * 32*495ae853SAndroid Build Coastguard Worker * @remarks 33*495ae853SAndroid Build Coastguard Worker * None 34*495ae853SAndroid Build Coastguard Worker * 35*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 36*495ae853SAndroid Build Coastguard Worker */ 37*495ae853SAndroid Build Coastguard Worker 38*495ae853SAndroid Build Coastguard Worker #ifndef _ISVCE_PRED_STRUCTS_H_ 39*495ae853SAndroid Build Coastguard Worker #define _ISVCE_PRED_STRUCTS_H_ 40*495ae853SAndroid Build Coastguard Worker 41*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h" 42*495ae853SAndroid Build Coastguard Worker #include "isvc_defs.h" 43*495ae853SAndroid Build Coastguard Worker #include "isvc_structs.h" 44*495ae853SAndroid Build Coastguard Worker #include "isvce_defs.h" 45*495ae853SAndroid Build Coastguard Worker 46*495ae853SAndroid Build Coastguard Worker /** 47*495ae853SAndroid Build Coastguard Worker * PU information 48*495ae853SAndroid Build Coastguard Worker */ 49*495ae853SAndroid Build Coastguard Worker typedef struct 50*495ae853SAndroid Build Coastguard Worker { 51*495ae853SAndroid Build Coastguard Worker /** 52*495ae853SAndroid Build Coastguard Worker * Motion Vector 53*495ae853SAndroid Build Coastguard Worker */ 54*495ae853SAndroid Build Coastguard Worker mv_t s_mv; 55*495ae853SAndroid Build Coastguard Worker 56*495ae853SAndroid Build Coastguard Worker /** 57*495ae853SAndroid Build Coastguard Worker * Ref index 58*495ae853SAndroid Build Coastguard Worker */ 59*495ae853SAndroid Build Coastguard Worker WORD8 i1_ref_idx; 60*495ae853SAndroid Build Coastguard Worker 61*495ae853SAndroid Build Coastguard Worker } isvce_enc_pu_mv_t; 62*495ae853SAndroid Build Coastguard Worker 63*495ae853SAndroid Build Coastguard Worker /* 64*495ae853SAndroid Build Coastguard Worker * Total Pu info for an MB 65*495ae853SAndroid Build Coastguard Worker */ 66*495ae853SAndroid Build Coastguard Worker typedef struct isvce_enc_pu_t 67*495ae853SAndroid Build Coastguard Worker { 68*495ae853SAndroid Build Coastguard Worker /* Array with ME info for all lists */ 69*495ae853SAndroid Build Coastguard Worker isvce_enc_pu_mv_t as_me_info[NUM_PRED_DIRS]; 70*495ae853SAndroid Build Coastguard Worker 71*495ae853SAndroid Build Coastguard Worker UWORD8 au1_mvp_idx[NUM_PRED_DIRS]; 72*495ae853SAndroid Build Coastguard Worker 73*495ae853SAndroid Build Coastguard Worker /** 74*495ae853SAndroid Build Coastguard Worker * PU X position in terms of min PU (4x4) units 75*495ae853SAndroid Build Coastguard Worker */ 76*495ae853SAndroid Build Coastguard Worker UWORD8 u1_pos_x_in_4x4; 77*495ae853SAndroid Build Coastguard Worker 78*495ae853SAndroid Build Coastguard Worker /** 79*495ae853SAndroid Build Coastguard Worker * PU Y position in terms of min PU (4x4) units 80*495ae853SAndroid Build Coastguard Worker */ 81*495ae853SAndroid Build Coastguard Worker UWORD8 u1_pos_y_in_4x4; 82*495ae853SAndroid Build Coastguard Worker 83*495ae853SAndroid Build Coastguard Worker /** 84*495ae853SAndroid Build Coastguard Worker * PU width in pixels = (u1_wd_in_4x4_m1 + 1) << 2 85*495ae853SAndroid Build Coastguard Worker */ 86*495ae853SAndroid Build Coastguard Worker UWORD8 u1_wd_in_4x4_m1; 87*495ae853SAndroid Build Coastguard Worker 88*495ae853SAndroid Build Coastguard Worker /** 89*495ae853SAndroid Build Coastguard Worker * PU height in pixels = (u1_ht_in_4x4_m1 + 1) << 2 90*495ae853SAndroid Build Coastguard Worker */ 91*495ae853SAndroid Build Coastguard Worker UWORD8 u1_ht_in_4x4_m1; 92*495ae853SAndroid Build Coastguard Worker 93*495ae853SAndroid Build Coastguard Worker /** 94*495ae853SAndroid Build Coastguard Worker * PRED_L0, PRED_L1, PRED_BI 95*495ae853SAndroid Build Coastguard Worker */ 96*495ae853SAndroid Build Coastguard Worker UWORD8 u1_pred_mode; 97*495ae853SAndroid Build Coastguard Worker 98*495ae853SAndroid Build Coastguard Worker } isvce_enc_pu_t; 99*495ae853SAndroid Build Coastguard Worker 100*495ae853SAndroid Build Coastguard Worker typedef struct intra4x4_mode_data_t 101*495ae853SAndroid Build Coastguard Worker { 102*495ae853SAndroid Build Coastguard Worker UWORD8 u1_predicted_mode; 103*495ae853SAndroid Build Coastguard Worker 104*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mode; 105*495ae853SAndroid Build Coastguard Worker 106*495ae853SAndroid Build Coastguard Worker } intra4x4_mode_data_t; 107*495ae853SAndroid Build Coastguard Worker 108*495ae853SAndroid Build Coastguard Worker typedef intra4x4_mode_data_t intra8x8_mode_data_t; 109*495ae853SAndroid Build Coastguard Worker 110*495ae853SAndroid Build Coastguard Worker typedef struct intra16x16_mode_data_t 111*495ae853SAndroid Build Coastguard Worker { 112*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mode; 113*495ae853SAndroid Build Coastguard Worker 114*495ae853SAndroid Build Coastguard Worker } intra16x16_mode_data_t; 115*495ae853SAndroid Build Coastguard Worker 116*495ae853SAndroid Build Coastguard Worker typedef struct enc_intra_pu_t 117*495ae853SAndroid Build Coastguard Worker { 118*495ae853SAndroid Build Coastguard Worker intra4x4_mode_data_t as_i4x4_mode_data[MAX_TU_IN_MB]; 119*495ae853SAndroid Build Coastguard Worker 120*495ae853SAndroid Build Coastguard Worker intra8x8_mode_data_t as_i8x8_mode_data[MIN_TU_IN_MB]; 121*495ae853SAndroid Build Coastguard Worker 122*495ae853SAndroid Build Coastguard Worker intra16x16_mode_data_t s_i16x16_mode_data; 123*495ae853SAndroid Build Coastguard Worker 124*495ae853SAndroid Build Coastguard Worker UWORD8 u1_chroma_intra_mode; 125*495ae853SAndroid Build Coastguard Worker 126*495ae853SAndroid Build Coastguard Worker } enc_intra_pu_t; 127*495ae853SAndroid Build Coastguard Worker 128*495ae853SAndroid Build Coastguard Worker typedef struct isvce_mb_info_t 129*495ae853SAndroid Build Coastguard Worker { 130*495ae853SAndroid Build Coastguard Worker isvce_enc_pu_t as_pu[ENC_MAX_PU_IN_MB]; 131*495ae853SAndroid Build Coastguard Worker 132*495ae853SAndroid Build Coastguard Worker enc_intra_pu_t s_intra_pu; 133*495ae853SAndroid Build Coastguard Worker 134*495ae853SAndroid Build Coastguard Worker UWORD32 u4_cbp; 135*495ae853SAndroid Build Coastguard Worker 136*495ae853SAndroid Build Coastguard Worker UWORD32 u4_csbp; 137*495ae853SAndroid Build Coastguard Worker 138*495ae853SAndroid Build Coastguard Worker UWORD32 u4_res_csbp; 139*495ae853SAndroid Build Coastguard Worker 140*495ae853SAndroid Build Coastguard Worker UWORD16 u2_mb_type; 141*495ae853SAndroid Build Coastguard Worker 142*495ae853SAndroid Build Coastguard Worker WORD32 i4_mb_distortion; 143*495ae853SAndroid Build Coastguard Worker 144*495ae853SAndroid Build Coastguard Worker UWORD8 u1_base_mode_flag; 145*495ae853SAndroid Build Coastguard Worker 146*495ae853SAndroid Build Coastguard Worker UWORD8 u1_residual_prediction_flag; 147*495ae853SAndroid Build Coastguard Worker 148*495ae853SAndroid Build Coastguard Worker UWORD8 u1_tx_size; 149*495ae853SAndroid Build Coastguard Worker 150*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mb_qp; 151*495ae853SAndroid Build Coastguard Worker 152*495ae853SAndroid Build Coastguard Worker UWORD8 u1_is_intra; 153*495ae853SAndroid Build Coastguard Worker 154*495ae853SAndroid Build Coastguard Worker } isvce_mb_info_t; 155*495ae853SAndroid Build Coastguard Worker 156*495ae853SAndroid Build Coastguard Worker #endif 157