1*495ae853SAndroid Build Coastguard Worker /****************************************************************************** 2*495ae853SAndroid Build Coastguard Worker * 3*495ae853SAndroid Build Coastguard Worker * Copyright (C) 2015 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 #ifndef _IH264D_PARSE_CAVLC_H_ 21*495ae853SAndroid Build Coastguard Worker #define _IH264D_PARSE_CAVLC_H_ 22*495ae853SAndroid Build Coastguard Worker /*! 23*495ae853SAndroid Build Coastguard Worker ************************************************************************** 24*495ae853SAndroid Build Coastguard Worker * \file ih264d_parse_cavlc.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * \brief 27*495ae853SAndroid Build Coastguard Worker * Declaration of UVLC and CAVLC functions 28*495ae853SAndroid Build Coastguard Worker * 29*495ae853SAndroid Build Coastguard Worker * \date 30*495ae853SAndroid Build Coastguard Worker * 18/12/2002 31*495ae853SAndroid Build Coastguard Worker * 32*495ae853SAndroid Build Coastguard Worker * \author AI 33*495ae853SAndroid Build Coastguard Worker ************************************************************************** 34*495ae853SAndroid Build Coastguard Worker */ 35*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h" 36*495ae853SAndroid Build Coastguard Worker #include "ih264_macros.h" 37*495ae853SAndroid Build Coastguard Worker #include "ih264_platform_macros.h" 38*495ae853SAndroid Build Coastguard Worker #include "ih264d_bitstrm.h" 39*495ae853SAndroid Build Coastguard Worker #include "ih264d_structs.h" 40*495ae853SAndroid Build Coastguard Worker #include "ih264d_cabac.h" 41*495ae853SAndroid Build Coastguard Worker 42*495ae853SAndroid Build Coastguard Worker enum cavlcTableNum 43*495ae853SAndroid Build Coastguard Worker { 44*495ae853SAndroid Build Coastguard Worker tableTotalZeroOffset, 45*495ae853SAndroid Build Coastguard Worker tableTotalZero, 46*495ae853SAndroid Build Coastguard Worker tableRunBefore, 47*495ae853SAndroid Build Coastguard Worker codeGx, 48*495ae853SAndroid Build Coastguard Worker chromTab, 49*495ae853SAndroid Build Coastguard Worker offsetNumVlcTab 50*495ae853SAndroid Build Coastguard Worker }; 51*495ae853SAndroid Build Coastguard Worker 52*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_uvlc(dec_bit_stream_t *ps_bitstrm, 53*495ae853SAndroid Build Coastguard Worker UWORD32 u4_range, 54*495ae853SAndroid Build Coastguard Worker UWORD32 *pi_bitstrm_ofst, 55*495ae853SAndroid Build Coastguard Worker UWORD8 u1_flag, 56*495ae853SAndroid Build Coastguard Worker UWORD32 u4_bitstrm_ofst, 57*495ae853SAndroid Build Coastguard Worker UWORD32 *pi_bitstrm_buf); 58*495ae853SAndroid Build Coastguard Worker 59*495ae853SAndroid Build Coastguard Worker UWORD32 ih264d_uev(UWORD32 *pu4_bitstrm_ofst, UWORD32 *pu4_bitstrm_buf); 60*495ae853SAndroid Build Coastguard Worker 61*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_sev(UWORD32 *pu4_bitstrm_ofst, UWORD32 *pu4_bitstrm_buf); 62*495ae853SAndroid Build Coastguard Worker 63*495ae853SAndroid Build Coastguard Worker UWORD32 ih264d_tev_range1(UWORD32 *pu4_bitstrm_ofst, 64*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_bitstrm_buf); 65*495ae853SAndroid Build Coastguard Worker 66*495ae853SAndroid Build Coastguard Worker UWORD8 RestOfResidualBlockCavlc(WORD16 *pi2_coeff_block, 67*495ae853SAndroid Build Coastguard Worker UWORD32 u1_ofst_is_dc_max_coef_scale_fact, 68*495ae853SAndroid Build Coastguard Worker UWORD32 u4_total_coeff_trail_one, 69*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm, 70*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_invscan); 71*495ae853SAndroid Build Coastguard Worker 72*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_4x4res_block_totalcoeff_1( UWORD32 u4_isdc, 73*495ae853SAndroid Build Coastguard Worker UWORD32 u4_total_coeff_trail_one, 74*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm); 75*495ae853SAndroid Build Coastguard Worker 76*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_4x4res_block_totalcoeff_2to10(UWORD32 u4_isdc, 77*495ae853SAndroid Build Coastguard Worker UWORD32 u4_total_coeff_trail_one, 78*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm); 79*495ae853SAndroid Build Coastguard Worker 80*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_4x4res_block_totalcoeff_11to16(UWORD32 u4_isdc, 81*495ae853SAndroid Build Coastguard Worker UWORD32 u4_total_coeff_trail_one, 82*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm); 83*495ae853SAndroid Build Coastguard Worker 84*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_parse4x4coeff_n0to7(WORD16 *pi2_coeff_block, 85*495ae853SAndroid Build Coastguard Worker UWORD32 u4_isdc, 86*495ae853SAndroid Build Coastguard Worker WORD32 u4_n, 87*495ae853SAndroid Build Coastguard Worker dec_struct_t *ps_dec, 88*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_total_coeff); 89*495ae853SAndroid Build Coastguard Worker 90*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_parse4x4coeff_n8(WORD16 *pi2_coeff_block, 91*495ae853SAndroid Build Coastguard Worker UWORD32 u4_isdc, 92*495ae853SAndroid Build Coastguard Worker WORD32 u4_n, 93*495ae853SAndroid Build Coastguard Worker dec_struct_t *ps_dec, 94*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_total_coeff); 95*495ae853SAndroid Build Coastguard Worker 96*495ae853SAndroid Build Coastguard Worker void ih264d_cavlc_parse_chroma_dc(dec_mb_info_t *ps_cur_mb_info, 97*495ae853SAndroid Build Coastguard Worker WORD16 *pi2_coeff_block, 98*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm, 99*495ae853SAndroid Build Coastguard Worker UWORD32 u4_scale_u, 100*495ae853SAndroid Build Coastguard Worker UWORD32 u4_scale_v, 101*495ae853SAndroid Build Coastguard Worker WORD32 i4_mb_inter_inc); 102*495ae853SAndroid Build Coastguard Worker 103*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_parse_8x8block_none_available(WORD16 *pi2_coeff_block, 104*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sub_block_strd, 105*495ae853SAndroid Build Coastguard Worker UWORD32 u4_isdc, 106*495ae853SAndroid Build Coastguard Worker dec_struct_t * ps_dec, 107*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_top_nnz, 108*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_left_nnz, 109*495ae853SAndroid Build Coastguard Worker UWORD8 u1_tran_form8x8, 110*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mb_field_decodingflag, 111*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_csbp); 112*495ae853SAndroid Build Coastguard Worker 113*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_parse_8x8block_left_available(WORD16 *pi2_coeff_block, 114*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sub_block_strd, 115*495ae853SAndroid Build Coastguard Worker UWORD32 u4_isdc, 116*495ae853SAndroid Build Coastguard Worker dec_struct_t * ps_dec, 117*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_top_nnz, 118*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_left_nnz, 119*495ae853SAndroid Build Coastguard Worker UWORD8 u1_tran_form8x8, 120*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mb_field_decodingflag, 121*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_csbp); 122*495ae853SAndroid Build Coastguard Worker 123*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_parse_8x8block_top_available(WORD16 *pi2_coeff_block, 124*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sub_block_strd, 125*495ae853SAndroid Build Coastguard Worker UWORD32 u4_isdc, 126*495ae853SAndroid Build Coastguard Worker dec_struct_t * ps_dec, 127*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_top_nnz, 128*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_left_nnz, 129*495ae853SAndroid Build Coastguard Worker UWORD8 u1_tran_form8x8, 130*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mb_field_decodingflag, 131*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_csbp); 132*495ae853SAndroid Build Coastguard Worker 133*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_cavlc_parse_8x8block_both_available(WORD16 *pi2_coeff_block, 134*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sub_block_strd, 135*495ae853SAndroid Build Coastguard Worker UWORD32 u4_isdc, 136*495ae853SAndroid Build Coastguard Worker dec_struct_t * ps_dec, 137*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_top_nnz, 138*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_left_nnz, 139*495ae853SAndroid Build Coastguard Worker UWORD8 u1_tran_form8x8, 140*495ae853SAndroid Build Coastguard Worker UWORD8 u1_mb_field_decodingflag, 141*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_csbp); 142*495ae853SAndroid Build Coastguard Worker 143*495ae853SAndroid Build Coastguard Worker WORD8 ResidualBlockChromaDC(WORD16 *pi2_level, dec_bit_stream_t *ps_bitstrm); 144*495ae853SAndroid Build Coastguard Worker 145*495ae853SAndroid Build Coastguard Worker void ih264d_parse_pmb_ref_index_cavlc_range1(UWORD32 u4_num_part, 146*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm, 147*495ae853SAndroid Build Coastguard Worker WORD8 *pi1_ref_idx, 148*495ae853SAndroid Build Coastguard Worker UWORD32 u4_num_ref_idx_active_minus1); 149*495ae853SAndroid Build Coastguard Worker 150*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_parse_pmb_ref_index_cavlc(UWORD32 u4_num_part, 151*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm, 152*495ae853SAndroid Build Coastguard Worker WORD8 *pi1_ref_idx, 153*495ae853SAndroid Build Coastguard Worker UWORD32 u4_num_ref_idx_active_minus1); 154*495ae853SAndroid Build Coastguard Worker 155*495ae853SAndroid Build Coastguard Worker void ih264d_parse_bmb_ref_index_cavlc_range1(UWORD32 u4_num_part, 156*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm, 157*495ae853SAndroid Build Coastguard Worker WORD8 *pi1_ref_idx, 158*495ae853SAndroid Build Coastguard Worker UWORD32 u4_num_ref_idx_active_minus1); 159*495ae853SAndroid Build Coastguard Worker 160*495ae853SAndroid Build Coastguard Worker WORD32 ih264d_parse_bmb_ref_index_cavlc(UWORD32 u4_num_part, 161*495ae853SAndroid Build Coastguard Worker dec_bit_stream_t *ps_bitstrm, 162*495ae853SAndroid Build Coastguard Worker WORD8 *pi1_ref_idx, 163*495ae853SAndroid Build Coastguard Worker UWORD32 u4_num_ref_idx_active_minus1); 164*495ae853SAndroid Build Coastguard Worker 165*495ae853SAndroid Build Coastguard Worker #endif /* _IH264D_PARSE_CAVLC_H_ */ 166