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