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_cabac_structs.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * @brief 27*495ae853SAndroid Build Coastguard Worker * This file contains cabac related structure definitions. 28*495ae853SAndroid Build Coastguard Worker * 29*495ae853SAndroid Build Coastguard Worker * @author 30*495ae853SAndroid Build Coastguard Worker * Doney Alex 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_CABAC_STRUCTS_H_ 39*495ae853SAndroid Build Coastguard Worker #define _ISVCE_CABAC_STRUCTS_H_ 40*495ae853SAndroid Build Coastguard Worker 41*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h" 42*495ae853SAndroid Build Coastguard Worker #include "isvc_cabac_tables.h" 43*495ae853SAndroid Build Coastguard Worker #include "ih264e_bitstream.h" 44*495ae853SAndroid Build Coastguard Worker #include "ih264e_cabac_structs.h" 45*495ae853SAndroid Build Coastguard Worker 46*495ae853SAndroid Build Coastguard Worker /** 47*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 48*495ae853SAndroid Build Coastguard Worker * @brief MB info for cabac 49*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 50*495ae853SAndroid Build Coastguard Worker */ 51*495ae853SAndroid Build Coastguard Worker typedef struct isvce_mb_info_ctxt_t 52*495ae853SAndroid Build Coastguard Worker { 53*495ae853SAndroid Build Coastguard Worker /* Neighbour availability Variables needed to get CtxtInc, for CABAC */ 54*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mb_type; /* !< macroblock type: I/P/B/SI/SP */ 55*495ae853SAndroid Build Coastguard Worker 56*495ae853SAndroid Build Coastguard Worker UWORD8 u1_cbp; /* !< Coded Block Pattern */ 57*495ae853SAndroid Build Coastguard Worker UWORD8 u1_intrapred_chroma_mode; 58*495ae853SAndroid Build Coastguard Worker 59*495ae853SAndroid Build Coastguard Worker /*************************************************************************/ 60*495ae853SAndroid Build Coastguard Worker /* Arrangnment of AC CSBP */ 61*495ae853SAndroid Build Coastguard Worker /* bits: b7 b6 b5 b4 b3 b2 b1 b0 */ 62*495ae853SAndroid Build Coastguard Worker /* CSBP: V1 V0 U1 U0 Y3 Y2 Y1 Y0 */ 63*495ae853SAndroid Build Coastguard Worker /*************************************************************************/ 64*495ae853SAndroid Build Coastguard Worker UWORD8 u1_yuv_ac_csbp; 65*495ae853SAndroid Build Coastguard Worker /*************************************************************************/ 66*495ae853SAndroid Build Coastguard Worker /* Arrangnment of DC CSBP */ 67*495ae853SAndroid Build Coastguard Worker /* bits: b7 b6 b5 b4 b3 b2 b1 b0 */ 68*495ae853SAndroid Build Coastguard Worker /* CSBP: x x x x x Vdc Udc Ydc */ 69*495ae853SAndroid Build Coastguard Worker /*************************************************************************/ 70*495ae853SAndroid Build Coastguard Worker UWORD8 u1_yuv_dc_csbp; 71*495ae853SAndroid Build Coastguard Worker 72*495ae853SAndroid Build Coastguard Worker WORD8 i1_ref_idx[4]; 73*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mv[4][4]; 74*495ae853SAndroid Build Coastguard Worker 75*495ae853SAndroid Build Coastguard Worker UWORD8 u1_base_mode_flag; 76*495ae853SAndroid Build Coastguard Worker } isvce_mb_info_ctxt_t; 77*495ae853SAndroid Build Coastguard Worker 78*495ae853SAndroid Build Coastguard Worker /** 79*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 80*495ae853SAndroid Build Coastguard Worker * @brief CABAC Context structure : Variables to handle Cabac 81*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 82*495ae853SAndroid Build Coastguard Worker */ 83*495ae853SAndroid Build Coastguard Worker typedef struct isvce_cabac_ctxt_t 84*495ae853SAndroid Build Coastguard Worker { 85*495ae853SAndroid Build Coastguard Worker /* Base pointer to all the cabac contexts */ 86*495ae853SAndroid Build Coastguard Worker bin_ctxt_model au1_cabac_ctxt_table[NUM_SVC_CABAC_CTXTS]; 87*495ae853SAndroid Build Coastguard Worker 88*495ae853SAndroid Build Coastguard Worker cab_csbp_t s_lft_csbp; 89*495ae853SAndroid Build Coastguard Worker 90*495ae853SAndroid Build Coastguard Worker /** 91*495ae853SAndroid Build Coastguard Worker * pointer to Bitstream structure 92*495ae853SAndroid Build Coastguard Worker */ 93*495ae853SAndroid Build Coastguard Worker bitstrm_t *ps_bitstrm; 94*495ae853SAndroid Build Coastguard Worker 95*495ae853SAndroid Build Coastguard Worker /* Pointer to mb_info_ctxt_t map_base */ 96*495ae853SAndroid Build Coastguard Worker isvce_mb_info_ctxt_t *ps_mb_map_ctxt_inc_base; 97*495ae853SAndroid Build Coastguard Worker 98*495ae853SAndroid Build Coastguard Worker /* Pointer to encoding_envirnoment_t */ 99*495ae853SAndroid Build Coastguard Worker encoding_envirnoment_t s_cab_enc_env; 100*495ae853SAndroid Build Coastguard Worker 101*495ae853SAndroid Build Coastguard Worker /* These things need to be updated at each MbLevel */ 102*495ae853SAndroid Build Coastguard Worker 103*495ae853SAndroid Build Coastguard Worker /* Prev ps_mb_qp_delta_ctxt */ 104*495ae853SAndroid Build Coastguard Worker WORD8 i1_prevps_mb_qp_delta_ctxt; 105*495ae853SAndroid Build Coastguard Worker 106*495ae853SAndroid Build Coastguard Worker /* Pointer to mb_info_ctxt_t map */ 107*495ae853SAndroid Build Coastguard Worker isvce_mb_info_ctxt_t *ps_mb_map_ctxt_inc; 108*495ae853SAndroid Build Coastguard Worker 109*495ae853SAndroid Build Coastguard Worker /* Pointer to default mb_info_ctxt_t */ 110*495ae853SAndroid Build Coastguard Worker isvce_mb_info_ctxt_t *ps_def_ctxt_mb_info; 111*495ae853SAndroid Build Coastguard Worker 112*495ae853SAndroid Build Coastguard Worker /* Pointer to current mb_info_ctxt_t */ 113*495ae853SAndroid Build Coastguard Worker isvce_mb_info_ctxt_t *ps_curr_ctxt_mb_info; 114*495ae853SAndroid Build Coastguard Worker 115*495ae853SAndroid Build Coastguard Worker /* Pointer to left mb_info_ctxt_t */ 116*495ae853SAndroid Build Coastguard Worker isvce_mb_info_ctxt_t *ps_left_ctxt_mb_info; 117*495ae853SAndroid Build Coastguard Worker 118*495ae853SAndroid Build Coastguard Worker /* Pointer to top mb_info_ctxt_t */ 119*495ae853SAndroid Build Coastguard Worker isvce_mb_info_ctxt_t *ps_top_ctxt_mb_info; 120*495ae853SAndroid Build Coastguard Worker 121*495ae853SAndroid Build Coastguard Worker /* Poniter to left csbp structure */ 122*495ae853SAndroid Build Coastguard Worker cab_csbp_t *ps_lft_csbp; 123*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_left_y_ac_csbp; 124*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_left_uv_ac_csbp; 125*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_left_yuv_dc_csbp; 126*495ae853SAndroid Build Coastguard Worker 127*495ae853SAndroid Build Coastguard Worker /***************************************************************************/ 128*495ae853SAndroid Build Coastguard Worker /* Ref_idx contexts are stored in the following way */ 129*495ae853SAndroid Build Coastguard Worker /* Array Idx 0,1 for reference indices in Forward direction */ 130*495ae853SAndroid Build Coastguard Worker /* Array Idx 2,3 for reference indices in backward direction */ 131*495ae853SAndroid Build Coastguard Worker /***************************************************************************/ 132*495ae853SAndroid Build Coastguard Worker /* Dimensions for u1_left_ref_ctxt_inc_arr is [2][4] for Mbaff:Top and Bot */ 133*495ae853SAndroid Build Coastguard Worker WORD8 i1_left_ref_idx_ctx_inc_arr[2][4]; 134*495ae853SAndroid Build Coastguard Worker WORD8 *pi1_left_ref_idx_ctxt_inc; 135*495ae853SAndroid Build Coastguard Worker 136*495ae853SAndroid Build Coastguard Worker /* Dimensions for u1_left_mv_ctxt_inc_arr is [2][4][4] for Mbaff case */ 137*495ae853SAndroid Build Coastguard Worker UWORD8 u1_left_mv_ctxt_inc_arr[2][4][4]; 138*495ae853SAndroid Build Coastguard Worker UWORD8 (*pu1_left_mv_ctxt_inc)[4]; 139*495ae853SAndroid Build Coastguard Worker 140*495ae853SAndroid Build Coastguard Worker } isvce_cabac_ctxt_t; 141*495ae853SAndroid Build Coastguard Worker 142*495ae853SAndroid Build Coastguard Worker #endif 143