xref: /aosp_15_r20/external/libavc/decoder/ih264d_parse_cavlc.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
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