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_MB_UTILS_H_ 21*495ae853SAndroid Build Coastguard Worker #define _IH264D_MB_UTILS_H_ 22*495ae853SAndroid Build Coastguard Worker /*! 23*495ae853SAndroid Build Coastguard Worker ************************************************************************** 24*495ae853SAndroid Build Coastguard Worker * \file ih264d_mb_utils.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * \brief 27*495ae853SAndroid Build Coastguard Worker * Contains declarations of the utility functions needed to decode MB 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_structs.h" 39*495ae853SAndroid Build Coastguard Worker 40*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 41*495ae853SAndroid Build Coastguard Worker /* Macros to get raster scan position of a block[8x8] / sub block[4x4]*/ 42*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 43*495ae853SAndroid Build Coastguard Worker 44*495ae853SAndroid Build Coastguard Worker #define GET_BLK_RASTER_POS_X(x) ((x & 0x01) << 1) 45*495ae853SAndroid Build Coastguard Worker #define GET_BLK_RASTER_POS_Y(y) ((y >> 1) << 1) 46*495ae853SAndroid Build Coastguard Worker #define GET_SUB_BLK_RASTER_POS_X(x) ((x & 0x01)) 47*495ae853SAndroid Build Coastguard Worker #define GET_SUB_BLK_RASTER_POS_Y(y) ((y >> 1)) 48*495ae853SAndroid Build Coastguard Worker 49*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 50*495ae853SAndroid Build Coastguard Worker /* Masks used in decoding of Macroblock */ 51*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 52*495ae853SAndroid Build Coastguard Worker 53*495ae853SAndroid Build Coastguard Worker #define LEFT_MB_AVAILABLE_MASK 0x01 54*495ae853SAndroid Build Coastguard Worker #define TOP_LEFT_MB_AVAILABLE_MASK 0x02 55*495ae853SAndroid Build Coastguard Worker #define TOP_MB_AVAILABLE_MASK 0x04 56*495ae853SAndroid Build Coastguard Worker #define TOP_RIGHT_MB_AVAILABLE_MASK 0x08 57*495ae853SAndroid Build Coastguard Worker 58*495ae853SAndroid Build Coastguard Worker #define TOP_RT_SUBBLOCK_MASK_MOD 0xFFF7 59*495ae853SAndroid Build Coastguard Worker 60*495ae853SAndroid Build Coastguard Worker #define TOP_RIGHT_DEFAULT_AVAILABLE 0x5750 61*495ae853SAndroid Build Coastguard Worker #define TOP_RIGHT_TOPR_AVAILABLE 0x0008 62*495ae853SAndroid Build Coastguard Worker #define TOP_RIGHT_TOP_AVAILABLE 0x0007 63*495ae853SAndroid Build Coastguard Worker 64*495ae853SAndroid Build Coastguard Worker #define TOP_LEFT_DEFAULT_AVAILABLE 0xEEE0 65*495ae853SAndroid Build Coastguard Worker #define TOP_LEFT_TOPL_AVAILABLE 0x0001 66*495ae853SAndroid Build Coastguard Worker #define TOP_LEFT_TOP_AVAILABLE 0x000E 67*495ae853SAndroid Build Coastguard Worker #define TOP_LEFT_LEFT_AVAILABLE 0x1110 68*495ae853SAndroid Build Coastguard Worker 69*495ae853SAndroid Build Coastguard Worker #define CHECK_MB_MAP(u4_mb_num, mb_map, u4_cond) \ 70*495ae853SAndroid Build Coastguard Worker { \ 71*495ae853SAndroid Build Coastguard Worker UWORD32 u4_bit_number; \ 72*495ae853SAndroid Build Coastguard Worker volatile UWORD8 *pu1_mb_flag; \ 73*495ae853SAndroid Build Coastguard Worker \ 74*495ae853SAndroid Build Coastguard Worker u4_bit_number = u4_mb_num & 0x07; \ 75*495ae853SAndroid Build Coastguard Worker pu1_mb_flag = (UWORD8 *)mb_map + (u4_mb_num >> 3); \ 76*495ae853SAndroid Build Coastguard Worker \ 77*495ae853SAndroid Build Coastguard Worker u4_cond = CHECKBIT((*pu1_mb_flag), u4_bit_number); \ 78*495ae853SAndroid Build Coastguard Worker } 79*495ae853SAndroid Build Coastguard Worker 80*495ae853SAndroid Build Coastguard Worker #define CHECK_MB_MAP_BYTE(u4_mb_num, mb_map, u4_cond) \ 81*495ae853SAndroid Build Coastguard Worker { \ 82*495ae853SAndroid Build Coastguard Worker volatile UWORD8 *pu1_mb_flag; \ 83*495ae853SAndroid Build Coastguard Worker \ 84*495ae853SAndroid Build Coastguard Worker pu1_mb_flag = (UWORD8 *)mb_map + (u4_mb_num ); \ 85*495ae853SAndroid Build Coastguard Worker \ 86*495ae853SAndroid Build Coastguard Worker u4_cond = (*pu1_mb_flag); \ 87*495ae853SAndroid Build Coastguard Worker } 88*495ae853SAndroid Build Coastguard Worker 89*495ae853SAndroid Build Coastguard Worker #define UPDATE_MB_MAP(u2_frm_wd_in_mbs, u2_mbx, u2_mby, mb_map, mb_count) \ 90*495ae853SAndroid Build Coastguard Worker { \ 91*495ae853SAndroid Build Coastguard Worker UWORD32 u4_bit_number; \ 92*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mb_number; \ 93*495ae853SAndroid Build Coastguard Worker \ 94*495ae853SAndroid Build Coastguard Worker u4_mb_number = u2_frm_wd_in_mbs * (u2_mby >> u1_mbaff) + u2_mbx; \ 95*495ae853SAndroid Build Coastguard Worker \ 96*495ae853SAndroid Build Coastguard Worker u4_bit_number = u4_mb_number & 0x07; \ 97*495ae853SAndroid Build Coastguard Worker /* \ 98*495ae853SAndroid Build Coastguard Worker * In case of MbAff, update the mb_map only if the entire MB is done. We can check that \ 99*495ae853SAndroid Build Coastguard Worker * by checking if Y is odd, implying that this is the second row in the MbAff MB \ 100*495ae853SAndroid Build Coastguard Worker */ \ 101*495ae853SAndroid Build Coastguard Worker SET_BIT(mb_map[u4_mb_number >> 3], u4_bit_number); \ 102*495ae853SAndroid Build Coastguard Worker \ 103*495ae853SAndroid Build Coastguard Worker if (1 == u1_mbaff) \ 104*495ae853SAndroid Build Coastguard Worker { \ 105*495ae853SAndroid Build Coastguard Worker /* \ 106*495ae853SAndroid Build Coastguard Worker * If MBAFF u4_flag is set, set this MB and the MB just below this. \ 107*495ae853SAndroid Build Coastguard Worker * So, add frame width to the MB number and set that bit. \ 108*495ae853SAndroid Build Coastguard Worker */ \ 109*495ae853SAndroid Build Coastguard Worker /* \ 110*495ae853SAndroid Build Coastguard Worker u4_mb_number += u2_frm_wd_in_mbs; \ 111*495ae853SAndroid Build Coastguard Worker \ 112*495ae853SAndroid Build Coastguard Worker u4_bit_number = u4_mb_number & 0x07; \ 113*495ae853SAndroid Build Coastguard Worker \ 114*495ae853SAndroid Build Coastguard Worker SET_BIT(mb_map[u4_mb_number >> 3], u4_bit_number); \ 115*495ae853SAndroid Build Coastguard Worker */ \ 116*495ae853SAndroid Build Coastguard Worker } \ 117*495ae853SAndroid Build Coastguard Worker \ 118*495ae853SAndroid Build Coastguard Worker /*H264_DEC_DEBUG_PRINT("SETBIT: %d\n", u4_mb_number);*/ \ 119*495ae853SAndroid Build Coastguard Worker mb_count++; \ 120*495ae853SAndroid Build Coastguard Worker } 121*495ae853SAndroid Build Coastguard Worker 122*495ae853SAndroid Build Coastguard Worker #define UPDATE_MB_MAP_MBNUM(mb_map, u4_mb_number) \ 123*495ae853SAndroid Build Coastguard Worker { \ 124*495ae853SAndroid Build Coastguard Worker UWORD32 u4_bit_number; \ 125*495ae853SAndroid Build Coastguard Worker volatile UWORD8 *pu1_mb_flag; \ 126*495ae853SAndroid Build Coastguard Worker \ 127*495ae853SAndroid Build Coastguard Worker u4_bit_number = u4_mb_number & 0x07; \ 128*495ae853SAndroid Build Coastguard Worker pu1_mb_flag = (UWORD8 *)mb_map + (u4_mb_number >> 3); \ 129*495ae853SAndroid Build Coastguard Worker /* \ 130*495ae853SAndroid Build Coastguard Worker * In case of MbAff, update the mb_map only if the entire MB is done. We can check that \ 131*495ae853SAndroid Build Coastguard Worker * by checking if Y is odd, implying that this is the second row in the MbAff MB \ 132*495ae853SAndroid Build Coastguard Worker */ \ 133*495ae853SAndroid Build Coastguard Worker SET_BIT((*pu1_mb_flag), u4_bit_number); \ 134*495ae853SAndroid Build Coastguard Worker } 135*495ae853SAndroid Build Coastguard Worker 136*495ae853SAndroid Build Coastguard Worker #define UPDATE_MB_MAP_MBNUM_BYTE(mb_map, u4_mb_number) \ 137*495ae853SAndroid Build Coastguard Worker { \ 138*495ae853SAndroid Build Coastguard Worker volatile UWORD8 *pu1_mb_flag; \ 139*495ae853SAndroid Build Coastguard Worker \ 140*495ae853SAndroid Build Coastguard Worker pu1_mb_flag = (UWORD8 *)mb_map + (u4_mb_number); \ 141*495ae853SAndroid Build Coastguard Worker /* \ 142*495ae853SAndroid Build Coastguard Worker * In case of MbAff, update the mb_map only if the entire MB is done. We can check that \ 143*495ae853SAndroid Build Coastguard Worker * by checking if Y is odd, implying that this is the second row in the MbAff MB \ 144*495ae853SAndroid Build Coastguard Worker */ \ 145*495ae853SAndroid Build Coastguard Worker (*pu1_mb_flag) = 1; \ 146*495ae853SAndroid Build Coastguard Worker } 147*495ae853SAndroid Build Coastguard Worker 148*495ae853SAndroid Build Coastguard Worker #define UPDATE_SLICE_NUM_MAP(slice_map, u4_mb_number,u2_slice_num) \ 149*495ae853SAndroid Build Coastguard Worker { \ 150*495ae853SAndroid Build Coastguard Worker volatile UWORD16 *pu2_slice_map; \ 151*495ae853SAndroid Build Coastguard Worker \ 152*495ae853SAndroid Build Coastguard Worker pu2_slice_map = (UWORD16 *)slice_map + (u4_mb_number); \ 153*495ae853SAndroid Build Coastguard Worker (*pu2_slice_map) = u2_slice_num; \ 154*495ae853SAndroid Build Coastguard Worker } 155*495ae853SAndroid Build Coastguard Worker 156*495ae853SAndroid Build Coastguard Worker #define GET_SLICE_NUM_MAP(slice_map, mb_number,u2_slice_num) \ 157*495ae853SAndroid Build Coastguard Worker { \ 158*495ae853SAndroid Build Coastguard Worker volatile UWORD16 *pu2_slice_map; \ 159*495ae853SAndroid Build Coastguard Worker \ 160*495ae853SAndroid Build Coastguard Worker pu2_slice_map = (UWORD16 *)slice_map + (mb_number); \ 161*495ae853SAndroid Build Coastguard Worker u2_slice_num = (*pu2_slice_map) ; \ 162*495ae853SAndroid Build Coastguard Worker } 163*495ae853SAndroid Build Coastguard Worker 164*495ae853SAndroid Build Coastguard Worker 165*495ae853SAndroid Build Coastguard Worker #define GET_XPOS_PRED(u1_out,pkd_info) \ 166*495ae853SAndroid Build Coastguard Worker { \ 167*495ae853SAndroid Build Coastguard Worker WORD32 bit_field; \ 168*495ae853SAndroid Build Coastguard Worker bit_field = pkd_info & 0x3; \ 169*495ae853SAndroid Build Coastguard Worker u1_out = bit_field; \ 170*495ae853SAndroid Build Coastguard Worker } 171*495ae853SAndroid Build Coastguard Worker 172*495ae853SAndroid Build Coastguard Worker 173*495ae853SAndroid Build Coastguard Worker #define GET_YPOS_PRED(u1_out,pkd_info) \ 174*495ae853SAndroid Build Coastguard Worker { \ 175*495ae853SAndroid Build Coastguard Worker WORD32 bit_field; \ 176*495ae853SAndroid Build Coastguard Worker bit_field = pkd_info >> 2; \ 177*495ae853SAndroid Build Coastguard Worker u1_out = bit_field & 0x3; \ 178*495ae853SAndroid Build Coastguard Worker } 179*495ae853SAndroid Build Coastguard Worker 180*495ae853SAndroid Build Coastguard Worker 181*495ae853SAndroid Build Coastguard Worker 182*495ae853SAndroid Build Coastguard Worker #define GET_WIDTH_PRED(u1_out,pkd_info) \ 183*495ae853SAndroid Build Coastguard Worker { \ 184*495ae853SAndroid Build Coastguard Worker WORD32 bit_field; \ 185*495ae853SAndroid Build Coastguard Worker bit_field = pkd_info >> 4; \ 186*495ae853SAndroid Build Coastguard Worker bit_field = (bit_field & 0x3) << 1 ; \ 187*495ae853SAndroid Build Coastguard Worker u1_out = (bit_field == 0)?1:bit_field; \ 188*495ae853SAndroid Build Coastguard Worker } 189*495ae853SAndroid Build Coastguard Worker 190*495ae853SAndroid Build Coastguard Worker #define GET_HEIGHT_PRED(u1_out,pkd_info) \ 191*495ae853SAndroid Build Coastguard Worker { \ 192*495ae853SAndroid Build Coastguard Worker WORD32 bit_field; \ 193*495ae853SAndroid Build Coastguard Worker bit_field = pkd_info >> 6; \ 194*495ae853SAndroid Build Coastguard Worker bit_field = (bit_field & 0x3) << 1 ; \ 195*495ae853SAndroid Build Coastguard Worker u1_out = (bit_field == 0)?1:bit_field; \ 196*495ae853SAndroid Build Coastguard Worker } 197*495ae853SAndroid Build Coastguard Worker 198*495ae853SAndroid Build Coastguard Worker /*! 199*495ae853SAndroid Build Coastguard Worker ************************************************************************** 200*495ae853SAndroid Build Coastguard Worker * \brief Masks for elements present in the first column but not on the 201*495ae853SAndroid Build Coastguard Worker * first row. 202*495ae853SAndroid Build Coastguard Worker ************************************************************************** 203*495ae853SAndroid Build Coastguard Worker */ 204*495ae853SAndroid Build Coastguard Worker #define FIRST_COL_NOT_FIRST_ROW 0xFAFB 205*495ae853SAndroid Build Coastguard Worker #define FIRST_ROW_MASK 0xFFCC 206*495ae853SAndroid Build Coastguard Worker /*! 207*495ae853SAndroid Build Coastguard Worker ************************************************************************** 208*495ae853SAndroid Build Coastguard Worker * \brief Mask for elements presen in the first row but not in the 209*495ae853SAndroid Build Coastguard Worker * last column. 210*495ae853SAndroid Build Coastguard Worker ************************************************************************** 211*495ae853SAndroid Build Coastguard Worker */ 212*495ae853SAndroid Build Coastguard Worker #define FIRST_ROW_NOT_LAST_COL 0xFFEC 213*495ae853SAndroid Build Coastguard Worker /*! 214*495ae853SAndroid Build Coastguard Worker ************************************************************************** 215*495ae853SAndroid Build Coastguard Worker * \brief Mask for elements presen in the first row but not in the 216*495ae853SAndroid Build Coastguard Worker * first column. 217*495ae853SAndroid Build Coastguard Worker ************************************************************************** 218*495ae853SAndroid Build Coastguard Worker */ 219*495ae853SAndroid Build Coastguard Worker #define FIRST_ROW_NOT_FIRST_COL 0xFFCD 220*495ae853SAndroid Build Coastguard Worker /*! 221*495ae853SAndroid Build Coastguard Worker ************************************************************************** 222*495ae853SAndroid Build Coastguard Worker * \brief Masks for the top right subMB of a 4x4 block 223*495ae853SAndroid Build Coastguard Worker ************************************************************************** 224*495ae853SAndroid Build Coastguard Worker */ 225*495ae853SAndroid Build Coastguard Worker #define TOP_RT_SUBBLOCK_MASK 0xFFDF 226*495ae853SAndroid Build Coastguard Worker /*! 227*495ae853SAndroid Build Coastguard Worker ************************************************************************** 228*495ae853SAndroid Build Coastguard Worker * \brief Masks for the top left subMB of a 4x4 block 229*495ae853SAndroid Build Coastguard Worker ************************************************************************** 230*495ae853SAndroid Build Coastguard Worker */ 231*495ae853SAndroid Build Coastguard Worker #define TOP_LT_SUBBLOCK_MASK 0xFFFE 232*495ae853SAndroid Build Coastguard Worker /*! 233*495ae853SAndroid Build Coastguard Worker ************************************************************************** 234*495ae853SAndroid Build Coastguard Worker * \brief Indicates if a subMB has a top right subMB available 235*495ae853SAndroid Build Coastguard Worker ************************************************************************** 236*495ae853SAndroid Build Coastguard Worker */ 237*495ae853SAndroid Build Coastguard Worker #define TOP_RT_SUBBLOCK_MB_MASK 0x5F4C 238*495ae853SAndroid Build Coastguard Worker 239*495ae853SAndroid Build Coastguard Worker #define FIRST_COL_MASK 0xFAFA 240*495ae853SAndroid Build Coastguard Worker 241*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 242*495ae853SAndroid Build Coastguard Worker /* Macros to calculate the current position of a MB wrt picture */ 243*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 244*495ae853SAndroid Build Coastguard Worker #define MB_LUMA_PIC_OFFSET(mb_x,mb_y,frmWidthY) (((mb_y)*(frmWidthY) + (mb_x))<<4) 245*495ae853SAndroid Build Coastguard Worker #define MB_CHROMA_PIC_OFFSET(mb_x,mb_y,frmWidthUV) (((mb_y)*(frmWidthUV) + (mb_x))<<3) 246*495ae853SAndroid Build Coastguard Worker 247*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 248*495ae853SAndroid Build Coastguard Worker /* Macros to calculate the current position of a MB wrt N[ Num coeff] Array */ 249*495ae853SAndroid Build Coastguard Worker /*--------------------------------------------------------------------*/ 250*495ae853SAndroid Build Coastguard Worker #define MB_PARAM_OFFSET(mb_x,mb_y,frmWidthInMbs,u1_mbaff,u1_topmb) \ 251*495ae853SAndroid Build Coastguard Worker ((mb_x << u1_mbaff) + (1 - u1_topmb) + (mb_y * frmWidthInMbs)) 252*495ae853SAndroid Build Coastguard Worker 253*495ae853SAndroid Build Coastguard Worker UWORD32 ih264d_get_mb_info_cavlc_mbaff(dec_struct_t * ps_dec, 254*495ae853SAndroid Build Coastguard Worker const UWORD16 ui16_curMbAddress, 255*495ae853SAndroid Build Coastguard Worker dec_mb_info_t * ps_cur_mb_info, 256*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mbskip_run); 257*495ae853SAndroid Build Coastguard Worker UWORD32 ih264d_get_mb_info_cavlc_nonmbaff(dec_struct_t * ps_dec, 258*495ae853SAndroid Build Coastguard Worker const UWORD16 ui16_curMbAddress, 259*495ae853SAndroid Build Coastguard Worker dec_mb_info_t * ps_cur_mb_info, 260*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mbskip_run); 261*495ae853SAndroid Build Coastguard Worker 262*495ae853SAndroid Build Coastguard Worker UWORD32 ih264d_get_mb_info_cabac_mbaff(dec_struct_t * ps_dec, 263*495ae853SAndroid Build Coastguard Worker const UWORD16 ui16_curMbAddress, 264*495ae853SAndroid Build Coastguard Worker dec_mb_info_t * ps_cur_mb_info, 265*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mbskip_run); 266*495ae853SAndroid Build Coastguard Worker 267*495ae853SAndroid Build Coastguard Worker UWORD32 ih264d_get_mb_info_cabac_nonmbaff(dec_struct_t * ps_dec, 268*495ae853SAndroid Build Coastguard Worker const UWORD16 ui16_curMbAddress, 269*495ae853SAndroid Build Coastguard Worker dec_mb_info_t * ps_cur_mb_info, 270*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mbskip_run); 271*495ae853SAndroid Build Coastguard Worker 272*495ae853SAndroid Build Coastguard Worker UWORD8 get_cabac_context_non_mbaff(dec_struct_t * ps_dec, UWORD16 u2_mbskip); 273*495ae853SAndroid Build Coastguard Worker 274*495ae853SAndroid Build Coastguard Worker UWORD32 ih264d_get_cabac_context_mbaff(dec_struct_t * ps_dec, 275*495ae853SAndroid Build Coastguard Worker dec_mb_info_t * ps_cur_mb_info, 276*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mbskip); 277*495ae853SAndroid Build Coastguard Worker 278*495ae853SAndroid Build Coastguard Worker WORD32 PutMbToFrame(dec_struct_t * ps_dec); 279*495ae853SAndroid Build Coastguard Worker void ih264d_get_mbaff_neighbours(dec_struct_t * ps_dec, 280*495ae853SAndroid Build Coastguard Worker dec_mb_info_t * ps_cur_mb_info, 281*495ae853SAndroid Build Coastguard Worker UWORD8 uc_curMbFldDecFlag); 282*495ae853SAndroid Build Coastguard Worker 283*495ae853SAndroid Build Coastguard Worker void ih264d_update_mbaff_left_nnz(dec_struct_t * ps_dec, 284*495ae853SAndroid Build Coastguard Worker dec_mb_info_t * ps_cur_mb_info); 285*495ae853SAndroid Build Coastguard Worker void ih264d_transfer_mb_group_data(dec_struct_t * ps_dec, 286*495ae853SAndroid Build Coastguard Worker const UWORD8 u1_num_mbs, 287*495ae853SAndroid Build Coastguard Worker const UWORD8 u1_end_of_row, /* Cur n-Mb End of Row Flag */ 288*495ae853SAndroid Build Coastguard Worker const UWORD8 u1_end_of_row_next /* Next n-Mb End of Row Flag */ 289*495ae853SAndroid Build Coastguard Worker ); 290*495ae853SAndroid Build Coastguard Worker 291*495ae853SAndroid Build Coastguard Worker void ih264d_populate_mb_info_map(dec_struct_t *ps_dec, 292*495ae853SAndroid Build Coastguard Worker dec_mb_info_t *ps_cur_mb_info, 293*495ae853SAndroid Build Coastguard Worker UWORD16 u2_blk_x, 294*495ae853SAndroid Build Coastguard Worker UWORD16 u2_blk_y, 295*495ae853SAndroid Build Coastguard Worker UWORD8 u1_val); 296*495ae853SAndroid Build Coastguard Worker 297*495ae853SAndroid Build Coastguard Worker //void FillRandomData(UWORD8 *pu1_buf, WORD32 u4_bufSize); 298*495ae853SAndroid Build Coastguard Worker 299*495ae853SAndroid Build Coastguard Worker #endif /* _MB_UTILS_H_ */ 300