18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/******************************************************************************
28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project
48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License");
68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License.
78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at:
88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0
108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software
128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS,
138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and
158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License.
168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *****************************************************************************
188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef _IH264D_PARSE_CAVLC_H_
218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define _IH264D_PARSE_CAVLC_H_
228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*!
238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \file ih264d_parse_cavlc.h
258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief
278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Declaration of UVLC and CAVLC functions
288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \date
308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    18/12/2002
318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \author  AI
338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_typedefs.h"
368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_macros.h"
378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_platform_macros.h"
388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_bitstrm.h"
398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_structs.h"
408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_cabac.h"
418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Senum cavlcTableNum
438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    tableTotalZeroOffset,
458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    tableTotalZero,
468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    tableRunBefore,
478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    codeGx,
488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    chromTab,
498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    offsetNumVlcTab
508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S};
518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_uvlc(dec_bit_stream_t *ps_bitstrm,
538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                   UWORD32 u4_range,
548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                   UWORD32 *pi_bitstrm_ofst,
558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                   UWORD8 u1_flag,
568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                   UWORD32 u4_bitstrm_ofst,
578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                   UWORD32 *pi_bitstrm_buf);
588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SUWORD32 ih264d_uev(UWORD32 *pu4_bitstrm_ofst, UWORD32 *pu4_bitstrm_buf);
608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_sev(UWORD32 *pu4_bitstrm_ofst, UWORD32 *pu4_bitstrm_buf);
628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SUWORD32 ih264d_tev_range1(UWORD32 *pu4_bitstrm_ofst,
648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                          UWORD32 *pu4_bitstrm_buf);
658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SUWORD8 RestOfResidualBlockCavlc(WORD16 *pi2_coeff_block,
678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                UWORD32 u1_ofst_is_dc_max_coef_scale_fact,
688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                UWORD32 u4_total_coeff_trail_one,
698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                dec_bit_stream_t *ps_bitstrm,
708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                UWORD8 *pu1_invscan);
718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_4x4res_block_totalcoeff_1( UWORD32 u4_isdc,
738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD32 u4_total_coeff_trail_one,
748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           dec_bit_stream_t *ps_bitstrm);
758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_4x4res_block_totalcoeff_2to10(UWORD32 u4_isdc,
778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               UWORD32 u4_total_coeff_trail_one,
788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               dec_bit_stream_t *ps_bitstrm);
798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_4x4res_block_totalcoeff_11to16(UWORD32 u4_isdc,
818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                UWORD32 u4_total_coeff_trail_one,
828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                dec_bit_stream_t *ps_bitstrm);
838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_parse4x4coeff_n0to7(WORD16 *pi2_coeff_block,
858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        UWORD32 u4_isdc,
868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        WORD32 u4_n,
878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        dec_struct_t *ps_dec,
888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        UWORD32 *pu4_total_coeff);
898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_parse4x4coeff_n8(WORD16 *pi2_coeff_block,
918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      UWORD32 u4_isdc,
928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      WORD32 u4_n,
938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      dec_struct_t *ps_dec,
948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      UWORD32 *pu4_total_coeff);
958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_cavlc_parse_chroma_dc(dec_mb_info_t *ps_cur_mb_info,
978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  WORD16 *pi2_coeff_block,
988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  dec_bit_stream_t *ps_bitstrm,
998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  UWORD32 u4_scale_u,
1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  UWORD32 u4_scale_v,
1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  WORD32 i4_mb_inter_inc);
1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_parse_8x8block_none_available(WORD16 *pi2_coeff_block,
1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 u4_sub_block_strd,
1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 u4_isdc,
1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  dec_struct_t * ps_dec,
1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_top_nnz,
1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_left_nnz,
1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 u1_tran_form8x8,
1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 u1_mb_field_decodingflag,
1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 *pu4_csbp);
1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_parse_8x8block_left_available(WORD16 *pi2_coeff_block,
1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 u4_sub_block_strd,
1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 u4_isdc,
1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  dec_struct_t * ps_dec,
1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_top_nnz,
1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_left_nnz,
1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 u1_tran_form8x8,
1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 u1_mb_field_decodingflag,
1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 *pu4_csbp);
1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_parse_8x8block_top_available(WORD16 *pi2_coeff_block,
1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 UWORD32 u4_sub_block_strd,
1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 UWORD32 u4_isdc,
1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 dec_struct_t * ps_dec,
1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 UWORD8 *pu1_top_nnz,
1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 UWORD8 *pu1_left_nnz,
1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 UWORD8 u1_tran_form8x8,
1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 UWORD8 u1_mb_field_decodingflag,
1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 UWORD32 *pu4_csbp);
1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_cavlc_parse_8x8block_both_available(WORD16 *pi2_coeff_block,
1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 u4_sub_block_strd,
1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 u4_isdc,
1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  dec_struct_t * ps_dec,
1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_top_nnz,
1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_left_nnz,
1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 u1_tran_form8x8,
1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 u1_mb_field_decodingflag,
1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 *pu4_csbp);
1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD8 ResidualBlockChromaDC(WORD16 *pi2_level, dec_bit_stream_t *ps_bitstrm);
1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_parse_pmb_ref_index_cavlc_range1(UWORD32 u4_num_part,
1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                             dec_bit_stream_t *ps_bitstrm,
1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                             WORD8 *pi1_ref_idx,
1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                             UWORD32 u4_num_ref_idx_active_minus1);
1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_parse_pmb_ref_index_cavlc(UWORD32 u4_num_part,
1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      dec_bit_stream_t *ps_bitstrm,
1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      WORD8 *pi1_ref_idx,
1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      UWORD32 u4_num_ref_idx_active_minus1);
1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_parse_bmb_ref_index_cavlc_range1(UWORD32 u4_num_part,
1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                             dec_bit_stream_t *ps_bitstrm,
1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                             WORD8 *pi1_ref_idx,
1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                             UWORD32 u4_num_ref_idx_active_minus1);
1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264d_parse_bmb_ref_index_cavlc(UWORD32 u4_num_part,
1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      dec_bit_stream_t *ps_bitstrm,
1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      WORD8 *pi1_ref_idx,
1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                      UWORD32 u4_num_ref_idx_active_minus1);
1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif  /* _IH264D_PARSE_CAVLC_H_ */
166