1*a97c2a1fSXin Li /****************************************************************************** 2*a97c2a1fSXin Li * 3*a97c2a1fSXin Li * Copyright (C) 2015 The Android Open Source Project 4*a97c2a1fSXin Li * 5*a97c2a1fSXin Li * Licensed under the Apache License, Version 2.0 (the "License"); 6*a97c2a1fSXin Li * you may not use this file except in compliance with the License. 7*a97c2a1fSXin Li * You may obtain a copy of the License at: 8*a97c2a1fSXin Li * 9*a97c2a1fSXin Li * http://www.apache.org/licenses/LICENSE-2.0 10*a97c2a1fSXin Li * 11*a97c2a1fSXin Li * Unless required by applicable law or agreed to in writing, software 12*a97c2a1fSXin Li * distributed under the License is distributed on an "AS IS" BASIS, 13*a97c2a1fSXin Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*a97c2a1fSXin Li * See the License for the specific language governing permissions and 15*a97c2a1fSXin Li * limitations under the License. 16*a97c2a1fSXin Li * 17*a97c2a1fSXin Li ***************************************************************************** 18*a97c2a1fSXin Li * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*a97c2a1fSXin Li */ 20*a97c2a1fSXin Li #include <stdio.h> 21*a97c2a1fSXin Li #include "iv_datatypedef.h" 22*a97c2a1fSXin Li #include "iv.h" 23*a97c2a1fSXin Li #include "impeg2_buf_mgr.h" 24*a97c2a1fSXin Li #include "impeg2_disp_mgr.h" 25*a97c2a1fSXin Li #include "impeg2_defs.h" 26*a97c2a1fSXin Li #include "impeg2_platform_macros.h" 27*a97c2a1fSXin Li #include "impeg2_globals.h" 28*a97c2a1fSXin Li 29*a97c2a1fSXin Li /* Table for converting the quantizer_scale_code to quantizer_scale */ 30*a97c2a1fSXin Li const UWORD8 gau1_impeg2_non_linear_quant_scale[] = 31*a97c2a1fSXin Li { 32*a97c2a1fSXin Li 0, 1, 2, 3, 4, 5, 6, 7, 33*a97c2a1fSXin Li 8,10,12,14,16,18,20,22, 34*a97c2a1fSXin Li 24,28,32,36,40,44,48,52, 35*a97c2a1fSXin Li 56,64,72,80,88,96,104,112 36*a97c2a1fSXin Li }; 37*a97c2a1fSXin Li 38*a97c2a1fSXin Li 39*a97c2a1fSXin Li /* Default quantizer matrix to be used for intra blocks */ 40*a97c2a1fSXin Li const UWORD8 gau1_impeg2_intra_quant_matrix_default[] = 41*a97c2a1fSXin Li { 42*a97c2a1fSXin Li 8, 16, 19, 22, 26, 27, 29, 34, 43*a97c2a1fSXin Li 16, 16, 22, 24, 27, 29, 34, 37, 44*a97c2a1fSXin Li 19, 22, 26, 27, 29, 34, 34, 38, 45*a97c2a1fSXin Li 22, 22, 26, 27, 29, 34, 37, 40, 46*a97c2a1fSXin Li 22, 26, 27, 29, 32, 35, 40, 48, 47*a97c2a1fSXin Li 26, 27, 29, 32, 35, 40, 48, 58, 48*a97c2a1fSXin Li 26, 27, 29, 34, 38, 46, 56, 69, 49*a97c2a1fSXin Li 27, 29, 35, 38, 46, 56, 69, 83 50*a97c2a1fSXin Li }; 51*a97c2a1fSXin Li 52*a97c2a1fSXin Li /* Default quantizer matrix to be used for inter blocks */ 53*a97c2a1fSXin Li const UWORD8 gau1_impeg2_inter_quant_matrix_default[] = 54*a97c2a1fSXin Li { 55*a97c2a1fSXin Li 16,16,16,16,16,16,16,16, 56*a97c2a1fSXin Li 16,16,16,16,16,16,16,16, 57*a97c2a1fSXin Li 16,16,16,16,16,16,16,16, 58*a97c2a1fSXin Li 16,16,16,16,16,16,16,16, 59*a97c2a1fSXin Li 16,16,16,16,16,16,16,16, 60*a97c2a1fSXin Li 16,16,16,16,16,16,16,16, 61*a97c2a1fSXin Li 16,16,16,16,16,16,16,16, 62*a97c2a1fSXin Li 16,16,16,16,16,16,16,16 63*a97c2a1fSXin Li }; 64*a97c2a1fSXin Li 65*a97c2a1fSXin Li /* Table to perform inverse scan when the scan direction is zigzag */ 66*a97c2a1fSXin Li const UWORD8 gau1_impeg2_inv_scan_zig_zag[] = 67*a97c2a1fSXin Li { 68*a97c2a1fSXin Li 0, 1, 8, 16, 9, 2, 3, 10, 69*a97c2a1fSXin Li 17, 24, 32, 25, 18, 11, 4, 5, 70*a97c2a1fSXin Li 12, 19, 26, 33, 40, 48, 41, 34, 71*a97c2a1fSXin Li 27, 20, 13, 6, 7, 14, 21, 28, 72*a97c2a1fSXin Li 35, 42, 49, 56, 57, 50, 43, 36, 73*a97c2a1fSXin Li 29, 22, 15, 23, 30, 37, 44, 51, 74*a97c2a1fSXin Li 58, 59, 52, 45, 38, 31, 39, 46, 75*a97c2a1fSXin Li 53, 60, 61, 54, 47, 55, 62, 63 76*a97c2a1fSXin Li }; 77*a97c2a1fSXin Li 78*a97c2a1fSXin Li /* Table to perform inverse scan when the direction of scanning is vertical */ 79*a97c2a1fSXin Li const UWORD8 gau1_impeg2_inv_scan_vertical[] = 80*a97c2a1fSXin Li { 81*a97c2a1fSXin Li 0, 8, 16, 24, 1, 9, 2, 10, 82*a97c2a1fSXin Li 17, 25, 32, 40, 48, 56, 57, 49, 83*a97c2a1fSXin Li 41, 33, 26, 18, 3, 11, 4, 12, 84*a97c2a1fSXin Li 19, 27, 34, 42, 50, 58, 35, 43, 85*a97c2a1fSXin Li 51, 59, 20, 28, 5, 13, 6, 14, 86*a97c2a1fSXin Li 21, 29, 36, 44, 52, 60, 37, 45, 87*a97c2a1fSXin Li 53, 61, 22, 30, 7, 15, 23, 31, 88*a97c2a1fSXin Li 38, 46, 54, 62, 39, 47, 55, 63 89*a97c2a1fSXin Li }; 90*a97c2a1fSXin Li 91*a97c2a1fSXin Li /*****************************************************************************/ 92*a97c2a1fSXin Li /* Table that indicate which interpolation type is to used */ 93*a97c2a1fSXin Li /*****************************************************************************/ 94*a97c2a1fSXin Li /* Chroma when motion vector is positive */ 95*a97c2a1fSXin Li const UWORD16 gau2_impeg2_chroma_interp_mv[][16] = 96*a97c2a1fSXin Li { 97*a97c2a1fSXin Li /* Pos X Pos Y */ 98*a97c2a1fSXin Li { 99*a97c2a1fSXin Li 0, 0, 1, 1, 100*a97c2a1fSXin Li 0, 0, 1, 1, 101*a97c2a1fSXin Li 2, 2, 3, 3, 102*a97c2a1fSXin Li 2, 2, 3, 3 103*a97c2a1fSXin Li }, 104*a97c2a1fSXin Li /* Neg X Pos Y */ 105*a97c2a1fSXin Li { 106*a97c2a1fSXin Li 0, 1, 1, 0, 107*a97c2a1fSXin Li 0, 1, 1, 0, 108*a97c2a1fSXin Li 2, 3, 3, 2, 109*a97c2a1fSXin Li 2, 3, 3, 2 110*a97c2a1fSXin Li }, 111*a97c2a1fSXin Li /* Pos X Neg Y */ 112*a97c2a1fSXin Li { 113*a97c2a1fSXin Li 0, 0, 1, 1, 114*a97c2a1fSXin Li 2, 2, 3, 3, 115*a97c2a1fSXin Li 2, 2, 3, 3, 116*a97c2a1fSXin Li 0, 0, 1, 1 117*a97c2a1fSXin Li }, 118*a97c2a1fSXin Li /* Neg X Neg Y */ 119*a97c2a1fSXin Li { 120*a97c2a1fSXin Li 0, 1, 1, 0, 121*a97c2a1fSXin Li 2, 3, 3, 2, 122*a97c2a1fSXin Li 2, 3, 3, 2, 123*a97c2a1fSXin Li 0, 1, 1, 0 124*a97c2a1fSXin Li } 125*a97c2a1fSXin Li }; 126*a97c2a1fSXin Li /*****************************************************************************/ 127*a97c2a1fSXin Li /* Input #1 Offset in bytes */ 128*a97c2a1fSXin Li /*****************************************************************************/ 129*a97c2a1fSXin Li /* Chroma */ 130*a97c2a1fSXin Li const UWORD16 gau2_impeg2_chroma_interp_inp1[][16] = 131*a97c2a1fSXin Li { 132*a97c2a1fSXin Li /* Pos X Pos Y */ 133*a97c2a1fSXin Li { 134*a97c2a1fSXin Li 0, 0, 0, 0, 135*a97c2a1fSXin Li 0, 0, 0, 0, 136*a97c2a1fSXin Li 0, 0, 0, 0, 137*a97c2a1fSXin Li 0, 0, 0, 0 138*a97c2a1fSXin Li }, 139*a97c2a1fSXin Li /* Neg X Pos Y */ 140*a97c2a1fSXin Li { 141*a97c2a1fSXin Li 0, 0, 0, 4, 142*a97c2a1fSXin Li 0, 0, 0, 4, 143*a97c2a1fSXin Li 0, 0, 0, 4, 144*a97c2a1fSXin Li 0, 0, 0, 4 145*a97c2a1fSXin Li }, 146*a97c2a1fSXin Li /* Pos X Neg Y */ 147*a97c2a1fSXin Li { 148*a97c2a1fSXin Li 0, 0, 0, 0, 149*a97c2a1fSXin Li 0, 0, 0, 0, 150*a97c2a1fSXin Li 0, 0, 0, 0, 151*a97c2a1fSXin Li 72, 72, 72, 72 152*a97c2a1fSXin Li }, 153*a97c2a1fSXin Li /* Neg X Neg Y */ 154*a97c2a1fSXin Li { 155*a97c2a1fSXin Li 0, 0, 0, 4, 156*a97c2a1fSXin Li 0, 0, 0, 4, 157*a97c2a1fSXin Li 0, 0, 0, 4, 158*a97c2a1fSXin Li 72, 72, 72, 76 159*a97c2a1fSXin Li } 160*a97c2a1fSXin Li }; 161*a97c2a1fSXin Li /* Luma */ 162*a97c2a1fSXin Li const UWORD16 gau2_impeg2_luma_interp_inp1[] = 163*a97c2a1fSXin Li { 164*a97c2a1fSXin Li 1, 1, 3, 3, 165*a97c2a1fSXin Li 1, 1, 3, 3, 166*a97c2a1fSXin Li 37, 37, 39, 39, 167*a97c2a1fSXin Li 37, 37, 39, 39 168*a97c2a1fSXin Li }; 169*a97c2a1fSXin Li /*****************************************************************************/ 170*a97c2a1fSXin Li /* Input #2 Offset from Input #1 in bytes */ 171*a97c2a1fSXin Li /*****************************************************************************/ 172*a97c2a1fSXin Li /* 173*a97c2a1fSXin Li FXFY 0, 174*a97c2a1fSXin Li HXFY 2, 175*a97c2a1fSXin Li FXHY 36, 176*a97c2a1fSXin Li HXHY 36 177*a97c2a1fSXin Li */ 178*a97c2a1fSXin Li const UWORD16 gau2_impeg2_luma_interp_inp2[] = 179*a97c2a1fSXin Li { 180*a97c2a1fSXin Li 0, 2, 0, 2, 181*a97c2a1fSXin Li 36, 36, 36, 36, 182*a97c2a1fSXin Li 0, 2, 0, 2, 183*a97c2a1fSXin Li 36, 36, 36, 36 184*a97c2a1fSXin Li }; 185*a97c2a1fSXin Li const UWORD16 gau2_impeg2_chroma_interp_inp2[] = 186*a97c2a1fSXin Li { 187*a97c2a1fSXin Li /* FXFY */ 188*a97c2a1fSXin Li 0, 189*a97c2a1fSXin Li /* HXFY */ 190*a97c2a1fSXin Li 4, 191*a97c2a1fSXin Li /* FXHY */ 192*a97c2a1fSXin Li 72, 193*a97c2a1fSXin Li /* HXHY */ 194*a97c2a1fSXin Li 72 195*a97c2a1fSXin Li }; 196*a97c2a1fSXin Li 197*a97c2a1fSXin Li /*****************************************************************************/ 198*a97c2a1fSXin Li /* Corresponds to Table 6-4 frame_rate_value of the standard */ 199*a97c2a1fSXin Li /*****************************************************************************/ 200*a97c2a1fSXin Li /* 201*a97c2a1fSXin Li frame_rate_code frame_rate_value 202*a97c2a1fSXin Li 203*a97c2a1fSXin Li 0000 Forbidden 204*a97c2a1fSXin Li 0001 24 000 � 1001 205*a97c2a1fSXin Li 0010 24 206*a97c2a1fSXin Li 0011 25 207*a97c2a1fSXin Li 0100 30 000 � 1001 208*a97c2a1fSXin Li 0101 30 209*a97c2a1fSXin Li 0110 50 210*a97c2a1fSXin Li 0111 60 000 � 1001 211*a97c2a1fSXin Li 1000 60 212*a97c2a1fSXin Li 1001 Reserved 213*a97c2a1fSXin Li .... 214*a97c2a1fSXin Li 1111 Reserved 215*a97c2a1fSXin Li */ 216*a97c2a1fSXin Li const UWORD16 gau2_impeg2_frm_rate_code[][2] = 217*a97c2a1fSXin Li { 218*a97c2a1fSXin Li {1 , 1}, /* Forbidden */ 219*a97c2a1fSXin Li {24000, 1001}, 220*a97c2a1fSXin Li {24000, 1000}, 221*a97c2a1fSXin Li {25000, 1000}, 222*a97c2a1fSXin Li {30000, 1001}, 223*a97c2a1fSXin Li {30000, 1000}, 224*a97c2a1fSXin Li {50000, 1000}, 225*a97c2a1fSXin Li {60000, 1001}, 226*a97c2a1fSXin Li {60000, 1000} 227*a97c2a1fSXin Li /* Rest reserved */ 228*a97c2a1fSXin Li }; 229*a97c2a1fSXin Li 230*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_q15[] = 231*a97c2a1fSXin Li { 232*a97c2a1fSXin Li 23170, 23170, 23170, 23170, 23170, 23170, 23170, 23170, 233*a97c2a1fSXin Li 32138, 27246, 18205, 6393, -6393, -18205, -27246, -32138, 234*a97c2a1fSXin Li 30274, 12540, -12540, -30274, -30274, -12540, 12540, 30274, 235*a97c2a1fSXin Li 27246, -6393, -32138, -18205, 18205, 32138, 6393, -27246, 236*a97c2a1fSXin Li 23170, -23170, -23170, 23170, 23170, -23170, -23170, 23170, 237*a97c2a1fSXin Li 18205, -32138, 6393, 27246, -27246, -6393, 32138, -18205, 238*a97c2a1fSXin Li 12540, -30274, 30274, -12540, -12540, 30274, -30274, 12540, 239*a97c2a1fSXin Li 6393, -18205, 27246, -32138, 32138, -27246, 18205, -6393, 240*a97c2a1fSXin Li }; 241*a97c2a1fSXin Li 242*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_q11[] = 243*a97c2a1fSXin Li { 244*a97c2a1fSXin Li 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 245*a97c2a1fSXin Li 2009, 1703, 1138, 400, -400, -1138, -1703, -2009, 246*a97c2a1fSXin Li 1892, 784, -784, -1892, -1892, -784, 784, 1892, 247*a97c2a1fSXin Li 1703, -400, -2009, -1138, 1138, 2009, 400, -1703, 248*a97c2a1fSXin Li 1448, -1448, -1448, 1448, 1448, -1448, -1448, 1448, 249*a97c2a1fSXin Li 1138, -2009, 400, 1703, -1703, -400, 2009, -1138, 250*a97c2a1fSXin Li 784, -1892, 1892, -784, -784, 1892, -1892, 784, 251*a97c2a1fSXin Li 400, -1138, 1703, -2009, 2009, -1703, 1138, -400, 252*a97c2a1fSXin Li }; 253*a97c2a1fSXin Li 254*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_even_8_q15[][8] = 255*a97c2a1fSXin Li { 256*a97c2a1fSXin Li { 23170, 23170, 23170, 23170, 23170, 23170, 23170, 23170 }, 257*a97c2a1fSXin Li { 12540, -30274, 12540, -30274, 12540, -30274, 12540, -30274 }, 258*a97c2a1fSXin Li { 30274, 12540, 30274, 12540, 30274, 12540, 30274, 12540 }, 259*a97c2a1fSXin Li { 23170, -23170, 23170, -23170, 23170, -23170, 23170, -23170 } 260*a97c2a1fSXin Li }; 261*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_odd_8_q15[][8] = 262*a97c2a1fSXin Li { 263*a97c2a1fSXin Li { 32138, 27246, 32138, 27246, 32138, 27246, 32138, 27246 }, 264*a97c2a1fSXin Li { 18205, 6393, 18205, 6393, 18205, 6393, 18205, 6393 }, 265*a97c2a1fSXin Li { 27246, -6393, 27246, -6393, 27246, -6393, 27246, -6393 }, 266*a97c2a1fSXin Li { 32138, 18205, 32138, 18205, 32138, 18205, 32138, 18205 }, 267*a97c2a1fSXin Li { 18205, -32138, 18205, -32138, 18205, -32138, 18205, -32138 }, 268*a97c2a1fSXin Li { 6393, 27246, 6393, 27246, 6393, 27246, 6393, 27246 }, 269*a97c2a1fSXin Li { 6393, -18205, 6393, -18205, 6393, -18205, 6393, -18205 }, 270*a97c2a1fSXin Li { 27246, -32138, 27246, -32138, 27246, -32138, 27246, -32138 }, 271*a97c2a1fSXin Li }; 272*a97c2a1fSXin Li 273*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_even_8_q11[][8] = 274*a97c2a1fSXin Li { 275*a97c2a1fSXin Li { 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448 }, 276*a97c2a1fSXin Li { 784, -1892, 784, -1892, 784, -1892, 784, -1892 }, 277*a97c2a1fSXin Li { 1892, 784, 1892, 784, 1892, 784, 1892, 784 }, 278*a97c2a1fSXin Li { 1448, -1448, 1448, -1448, 1448, -1448, 1448, -1448 } 279*a97c2a1fSXin Li }; 280*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_odd_8_q11[][8] = 281*a97c2a1fSXin Li { 282*a97c2a1fSXin Li { 2009, 1703, 2009, 1703, 2009, 1703, 2009, 1703 }, 283*a97c2a1fSXin Li { 1138, 400, 1138, 400, 1138, 400, 1138, 400 }, 284*a97c2a1fSXin Li { 1703, -400, 1703, -400, 1703, -400, 1703, -400 }, 285*a97c2a1fSXin Li { 2009, 1138, 2009, 1138, 2009, 1138, 2009, 1138 }, 286*a97c2a1fSXin Li { 1138, -2009, 1138, -2009, 1138, -2009, 1138, -2009 }, 287*a97c2a1fSXin Li { 400, 1703, 400, 1703, 400, 1703, 400, 1703 }, 288*a97c2a1fSXin Li { 400, -1138, 400, -1138, 400, -1138, 400, -1138 }, 289*a97c2a1fSXin Li { 1703, -2009, 1703, -2009, 1703, -2009, 1703, -2009 }, 290*a97c2a1fSXin Li }; 291*a97c2a1fSXin Li 292*a97c2a1fSXin Li 293*a97c2a1fSXin Li 294*a97c2a1fSXin Li /*****************************************************************************/ 295*a97c2a1fSXin Li /* Last row IDCT Coefficients in Q11 format */ 296*a97c2a1fSXin Li /*****************************************************************************/ 297*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_last_row_q11[] = 298*a97c2a1fSXin Li { 299*a97c2a1fSXin Li 400, -1138, 1703, -2009, 2009, -1703, 1138, -400, 300*a97c2a1fSXin Li }; 301*a97c2a1fSXin Li 302*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_first_col_q15[] = 303*a97c2a1fSXin Li { 304*a97c2a1fSXin Li 23170, 32138, 30274, 27246, 23170, 18205, 12540, 6393, 305*a97c2a1fSXin Li }; 306*a97c2a1fSXin Li 307*a97c2a1fSXin Li const WORD16 gai2_impeg2_idct_first_col_q11[] = 308*a97c2a1fSXin Li { 309*a97c2a1fSXin Li 1448, 2009, 1892, 1703, 1448, 1138, 784, 400, 310*a97c2a1fSXin Li }; 311*a97c2a1fSXin Li 312*a97c2a1fSXin Li /*****************************************************************************/ 313*a97c2a1fSXin Li /* Output of first stage dct (using gai2_impeg2_idct_q15 as coeffs) */ 314*a97c2a1fSXin Li /* for a 1D data (0, 0, 0, 0, 0, 0, 0, 1) */ 315*a97c2a1fSXin Li /*****************************************************************************/ 316*a97c2a1fSXin Li 317*a97c2a1fSXin Li const WORD16 gai2_impeg2_mismatch_stg1_outp[] = 318*a97c2a1fSXin Li { 319*a97c2a1fSXin Li 2, -4, 7, -8, 8, -7, 4, -2 320*a97c2a1fSXin Li }; 321*a97c2a1fSXin Li 322*a97c2a1fSXin Li const WORD16 gai2_impeg2_mismatch_stg2_additive[] = 323*a97c2a1fSXin Li { 324*a97c2a1fSXin Li 800, -2276, 3406, -4018, 4018, -3406, 2276, -800, 325*a97c2a1fSXin Li -1600, 4552, -6812, 8036, -8036, 6812, -4552, 1600, 326*a97c2a1fSXin Li 2800, -7966, 11921, -14063, 14063, -11921, 7966, -2800, 327*a97c2a1fSXin Li -3200, 9104, -13624, 16072, -16072, 13624, -9104, 3200, 328*a97c2a1fSXin Li 3200, -9104, 13624, -16072, 16072, -13624, 9104, -3200, 329*a97c2a1fSXin Li -2800, 7966, -11921, 14063, -14063, 11921, -7966, 2800, 330*a97c2a1fSXin Li 1600, -4552, 6812, -8036, 8036, -6812, 4552, -1600, 331*a97c2a1fSXin Li -800, 2276, -3406, 4018, -4018, 3406, -2276, 800, 332*a97c2a1fSXin Li }; 333*a97c2a1fSXin Li 334*a97c2a1fSXin Li 335*a97c2a1fSXin Li const UWORD8 gau1_impeg2_zerobuf[] = 336*a97c2a1fSXin Li { 337*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 338*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 339*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 340*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 341*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 342*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 343*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 344*a97c2a1fSXin Li 0, 0, 0, 0, 0, 0, 0, 0, 345*a97c2a1fSXin Li }; 346*a97c2a1fSXin Li /*****************************************************************************/ 347*a97c2a1fSXin Li /* Tables of offset needed to address block in an MB */ 348*a97c2a1fSXin Li /*****************************************************************************/ 349*a97c2a1fSXin Li const WORD16 gai2_impeg2_blk_y_off_fld[] = {0,0,1,1}; 350*a97c2a1fSXin Li const WORD16 gai2_impeg2_blk_y_off_frm[] = {0,0,8,8}; 351*a97c2a1fSXin Li const WORD16 gai2_impeg2_blk_x_off[] = {0,8,0,8}; 352