Home | History | Annotate | Download | only in common
      1 /******************************************************************************
      2  *
      3  * Copyright (C) 2015 The Android Open Source Project
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at:
      8  *
      9  * http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  *
     17  *****************************************************************************
     18  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
     19 */
     20 /**
     21 *******************************************************************************
     22 * @file
     23 *  ih264_common_tables.c
     24 *
     25 * @brief
     26 *  Contains common global tables
     27 *
     28 * @author
     29 *  Harish M
     30 *
     31 * @par List of Functions:
     32 *
     33 * @remarks
     34 *  None
     35 *
     36 *******************************************************************************
     37 */
     38 
     39 /*****************************************************************************/
     40 /* File Includes                                                             */
     41 /*****************************************************************************/
     42 
     43 /* User include files */
     44 #include "ih264_typedefs.h"
     45 #include "ih264_defs.h"
     46 #include "ih264_macros.h"
     47 #include "ih264_structs.h"
     48 #include "ih264_common_tables.h"
     49 
     50 
     51 /*****************************************************************************/
     52 /* Extern global definitions                                                 */
     53 /*****************************************************************************/
     54 
     55 /**
     56  ******************************************************************************
     57  * @brief  while encoding, basing on the input configuration parameters, the
     58  * the level of the bitstream is computed basing on the table below.
     59  * input  : table_idx
     60  * output : level_idc or cpb size
     61  * @remarks Table A-1  level table limits
     62  ******************************************************************************
     63  */
     64 const level_tables_t gas_ih264_lvl_tbl[16] =
     65 {
     66     { IH264_LEVEL_10,    1485,       99,         297,       64,         175,         64  },
     67     { IH264_LEVEL_1B,    1485,       99,         297,       128,        350,         64  },
     68     { IH264_LEVEL_11,    3000,       396,        675,       192,        500,         128 },
     69     { IH264_LEVEL_12,    6000,       396,        1782,      384,        1000,        128 },
     70     { IH264_LEVEL_13,    11880,      396,        1782,      768,        2000,        128 },
     71     { IH264_LEVEL_20,    11880,      396,        1782,      2000,       2000,        128 },
     72     { IH264_LEVEL_21,    19800,      792,        3564,      4000,       4000,        256 },
     73     { IH264_LEVEL_22,    20250,      1620,       6075,      4000,       4000,        256 },
     74     { IH264_LEVEL_30,    40500,      1620,       6075,      10000,      10000,       256 },
     75     { IH264_LEVEL_31,    108000,     3600,       13500,     14000,      14000,       512 },
     76     { IH264_LEVEL_32,    216000,     5120,       15360,     20000,      20000,       512 },
     77     { IH264_LEVEL_40,    245760,     8192,       24576,     20000,      25000,       512 },
     78     { IH264_LEVEL_41,    245760,     8192,       24576,     50000,      62500,       512 },
     79     { IH264_LEVEL_42,    522240,     8704,       26112,     50000,      62500,       512 },
     80     { IH264_LEVEL_50,    589824,     22080,      82800,     135000,     135000,      512 },
     81     { IH264_LEVEL_51,    983040,     36864,      138240,    240000,     240000,      512 },
     82 };
     83 
     84 
     85 /**
     86  * Array containing supported levels
     87  */
     88 const WORD32 gai4_ih264_levels[] =
     89 {
     90     IH264_LEVEL_10,
     91     IH264_LEVEL_11,
     92     IH264_LEVEL_12,
     93     IH264_LEVEL_13,
     94     IH264_LEVEL_20,
     95     IH264_LEVEL_21,
     96     IH264_LEVEL_22,
     97     IH264_LEVEL_30,
     98     IH264_LEVEL_31,
     99     IH264_LEVEL_32,
    100     IH264_LEVEL_40,
    101     IH264_LEVEL_41,
    102     IH264_LEVEL_42,
    103     IH264_LEVEL_50,
    104     IH264_LEVEL_51,
    105 };
    106 
    107 
    108 /**
    109  * Array giving size of max luma samples in a picture for a given level
    110  */
    111 const WORD32 gai4_ih264_max_luma_pic_size[] =
    112 {
    113     /* Level 1 */
    114     25344,
    115     /* Level 1.1 */
    116     101376,
    117     /* Level 1.2 */
    118     101376,
    119     /* Level 1.3 */
    120     101376,
    121     /* Level 2 */
    122     101376,
    123     /* Level 2.1 */
    124     202752,
    125     /* Level 2.2 */
    126     414720,
    127     /* Level 3 */
    128     414720,
    129     /* Level 3.1 */
    130     921600,
    131     /* Level 3.2 */
    132     1310720,
    133     /* Level 4 */
    134     2097152,
    135     /* Level 4.1 */
    136     2097152,
    137     /* Level 4.2 */
    138     2228224,
    139     /* Level 5 */
    140     5652480,
    141     /* Level 5.1 */
    142     9437184
    143 };
    144 
    145 
    146 /** Max width and height allowed for a given level */
    147 /** This is derived as SQRT(8 * gai4_ih264_max_luma_pic_size[]) */
    148 const WORD32 gai4_ih264_max_wd_ht[] =
    149 {
    150     /* Level 1 */
    151     451,
    152     /* Level 1.1 */
    153     901,
    154     /* Level 1.2 */
    155     901,
    156     /* Level 1.3 */
    157     901,
    158     /* Level 2 */
    159     901,
    160     /* Level 2.1 */
    161     1274,
    162     /* Level 2.2 */
    163     1822,
    164     /* Level 3 */
    165     1822,
    166     /* Level 3.1 */
    167     2716,
    168     /* Level 3.2 */
    169     3239,
    170     /* Level 4 */
    171     4096,
    172     /* Level 4.1 */
    173     4096,
    174     /* Level 4.2 */
    175     4223,
    176     /* Level 5 */
    177     6725,
    178     /* Level 5.1 */
    179     8689
    180 };
    181 
    182 /** Min width and height allowed for a given level */
    183 /** This is derived as gai4_ih264_max_luma_pic_size[]/gai4_ih264_max_wd_ht[] */
    184 const WORD32 gai4_ih264_min_wd_ht[] =
    185 {
    186     /* Level 1 */
    187     57,
    188     /* Level 1.1 */
    189     113,
    190     /* Level 1.2 */
    191     113,
    192     /* Level 1.3 */
    193     113,
    194     /* Level 2 */
    195     113,
    196     /* Level 2.1 */
    197     160,
    198     /* Level 2.2 */
    199     228,
    200     /* Level 3 */
    201     228,
    202     /* Level 3.1 */
    203     340,
    204     /* Level 3.2 */
    205     405,
    206     /* Level 4 */
    207     512,
    208     /* Level 4.1 */
    209     512,
    210     /* Level 4.2 */
    211     528,
    212     /* Level 5 */
    213     841,
    214     /* Level 5.1 */
    215     1087
    216 
    217 };
    218 
    219 
    220 /** Table 7-11 Macroblock types for I slices */
    221 intra_mbtype_info_t gas_ih264_i_mbtype_info[] =
    222 {
    223     /* For first entry, if transform_size_8x8_flag is 1, mode will be MBPART_I8x8 */
    224     /* This has to be taken care while accessing the table */
    225     {0, MBPART_I4x4,   VERT_I16x16,     0,  0},
    226     {0, MBPART_I16x16, VERT_I16x16,     0,  0},
    227     {0, MBPART_I16x16, HORZ_I16x16,     0,  0},
    228     {0, MBPART_I16x16, DC_I16x16,       0,  0},
    229     {0, MBPART_I16x16, PLANE_I16x16,    0,  0},
    230     {0, MBPART_I16x16, VERT_I16x16,     1,  0},
    231     {0, MBPART_I16x16, HORZ_I16x16,     1,  0},
    232     {0, MBPART_I16x16, DC_I16x16,       1,  0},
    233     {0, MBPART_I16x16, PLANE_I16x16,    1,  0},
    234     {0, MBPART_I16x16, VERT_I16x16,     2,  0},
    235     {0, MBPART_I16x16, HORZ_I16x16,     2,  0},
    236     {0, MBPART_I16x16, DC_I16x16,       2,  0},
    237     {0, MBPART_I16x16, PLANE_I16x16,    2,  0},
    238     {0, MBPART_I16x16, VERT_I16x16,     0,  15},
    239     {0, MBPART_I16x16, HORZ_I16x16,     0,  15},
    240     {0, MBPART_I16x16, DC_I16x16,       0,  15},
    241     {0, MBPART_I16x16, PLANE_I16x16,    0,  15},
    242     {0, MBPART_I16x16, VERT_I16x16,     1,  15},
    243     {0, MBPART_I16x16, HORZ_I16x16,     1,  15},
    244     {0, MBPART_I16x16, DC_I16x16,       1,  15},
    245     {0, MBPART_I16x16, PLANE_I16x16,    1,  15},
    246     {0, MBPART_I16x16, VERT_I16x16,     2,  15},
    247     {0, MBPART_I16x16, HORZ_I16x16,     2,  15},
    248     {0, MBPART_I16x16, DC_I16x16,       2,  15},
    249     {0, MBPART_I16x16, PLANE_I16x16,    2,  15},
    250     {0, MBPART_IPCM,   VERT_I16x16,     0,  0}
    251 };
    252 
    253 /** Table 7-13 Macroblock types for P slices */
    254 inter_mbtype_info_t gas_ih264_p_mbtype_info[] =
    255 {
    256     {1, MBPART_L0,  MBPART_NA,  16, 16},
    257     {2, MBPART_L0,  MBPART_L0,  16, 8},
    258     {2, MBPART_L0,  MBPART_L0,  8,  16},
    259     {4, MBPART_NA,  MBPART_NA,  8,  8},
    260     {4, MBPART_NA,  MBPART_NA,  8,  8},
    261 };
    262 
    263 /** Table 7-14 Macroblock types for B slices */
    264 inter_mbtype_info_t gas_ih264_b_mbtype_info[] =
    265 {
    266     {0, MBPART_DIRECT,  MBPART_NA,  8,  8,  },
    267     {1, MBPART_L0,      MBPART_NA,  16, 16, },
    268     {1, MBPART_L1,      MBPART_NA,  16, 16, },
    269     {1, MBPART_BI,      MBPART_NA,  16, 16, },
    270     {2, MBPART_L0,      MBPART_L0,  16, 8,  },
    271     {2, MBPART_L0,      MBPART_L0,  8,  16, },
    272     {2, MBPART_L1,      MBPART_L1,  16, 8,  },
    273     {2, MBPART_L1,      MBPART_L1,  8,  16, },
    274     {2, MBPART_L0,      MBPART_L1,  16, 8,  },
    275     {2, MBPART_L0,      MBPART_L1,  8,  16, },
    276     {2, MBPART_L1,      MBPART_L0,  16, 8,  },
    277     {2, MBPART_L1,      MBPART_L0,  8,  16, },
    278     {2, MBPART_L0,      MBPART_BI,  16, 8,  },
    279     {2, MBPART_L0,      MBPART_BI,  8,  16, },
    280     {2, MBPART_L1,      MBPART_BI,  16, 8,  },
    281     {2, MBPART_L1,      MBPART_BI,  8,  16, },
    282     {2, MBPART_BI,      MBPART_L0,  16, 8,  },
    283     {2, MBPART_BI,      MBPART_L0,  8,  16, },
    284     {2, MBPART_BI,      MBPART_L1,  16, 8,  },
    285     {2, MBPART_BI,      MBPART_L1,  8,  16, },
    286     {2, MBPART_BI,      MBPART_BI,  16, 8,  },
    287     {2, MBPART_BI,      MBPART_BI,  8,  16, },
    288     {4, MBPART_NA,      MBPART_NA,  8,  8,  },
    289 };
    290 
    291 /** Table 7-17  Sub-macroblock types in P macroblocks */
    292 submbtype_info_t gas_ih264_p_submbtype_info[] =
    293 {
    294    {1, MBPART_L0, 8,  8},
    295    {2, MBPART_L0, 8,  4},
    296    {2, MBPART_L0, 4,  8},
    297    {4, MBPART_L0, 4,  4},
    298 };
    299 
    300 /** Table 7-18  Sub-macroblock types in B macroblocks */
    301 submbtype_info_t gas_ih264_b_submbtype_info[] =
    302 {
    303     {4, MBPART_DIRECT,  4,  4},
    304     {1, MBPART_L0,      8,  8},
    305     {1, MBPART_L1,      8,  8},
    306     {1, MBPART_BI,      8,  8},
    307     {2, MBPART_L0,      8,  4},
    308     {2, MBPART_L0,      4,  8},
    309     {2, MBPART_L1,      8,  4},
    310     {2, MBPART_L1,      4,  8},
    311     {2, MBPART_BI,      8,  4},
    312     {2, MBPART_BI,      4,  8},
    313     {4, MBPART_L0,      4,  4},
    314     {4, MBPART_L1,      4,  4},
    315     {4, MBPART_BI,      4,  4},
    316 };
    317 
    318 
    319 
    320 
    321 const UWORD8 gau1_ih264_inv_scan_prog4x4[] =
    322 {
    323     0,   1,  4,  8,
    324     5,   2,  3,  6,
    325     9,  12, 13, 10,
    326     7,  11, 14, 15
    327 };
    328 
    329 const UWORD8 gau1_ih264_inv_scan_int4x4[] =
    330 {
    331      0, 4,  1,  8,
    332     12, 5,  9,  13,
    333      2, 6, 10,  14,
    334      3, 7, 11,  15
    335 };
    336 
    337 /** Inverse scan tables for individual 4x4 blocks of 8x8 transform coeffs of CAVLC */
    338 /* progressive */
    339 const UWORD8 gau1_ih264_inv_scan_prog8x8_cavlc[64] =
    340 {
    341      0,  9, 17, 18, 12, 40, 27,  7,
    342     35, 57, 29, 30, 58, 38, 53, 47,
    343      1,  2, 24, 11, 19, 48, 20, 14,
    344     42, 50, 22, 37, 59, 31, 60, 55,
    345      8,  3, 32,  4, 26, 41, 13, 21,
    346     49, 43, 15, 44, 52, 39, 61, 62,
    347     16, 10, 25,  5, 33, 34,  6, 28,
    348     56, 36, 23, 51, 45, 46, 54, 63
    349 };
    350 
    351 /* interlace */
    352 const UWORD8 gau1_ih264_inv_scan_int8x8_cavlc[64] =
    353 {
    354      0,  9,  2, 56, 18, 26, 34, 27,
    355     35, 28, 36, 29, 45,  7, 54, 39,
    356      8, 24, 25, 33, 41, 11, 42, 12,
    357     43, 13, 44, 14, 53, 15, 62, 47,
    358     16, 32, 40, 10, 49,  4, 50,  5,
    359     51,  6, 52, 22, 61, 38, 23, 55,
    360      1, 17, 48,  3, 57, 19, 58, 20,
    361     59, 21, 60, 37, 30, 46, 31, 63
    362 };
    363 
    364 
    365 
    366 /*Inverse scan tables for individual 8x8 blocks of 8x8 transform coeffs of CABAC */
    367 /* progressive */
    368 
    369 const UWORD8 gau1_ih264_inv_scan_prog8x8_cabac[64] =
    370 {
    371      0,  1,  8, 16,  9, 2,   3, 10,
    372     17, 24, 32, 25, 18, 11,  4,  5,
    373     12, 19, 26, 33, 40, 48, 41, 34,
    374     27, 20, 13,  6,  7, 14, 21, 28,
    375     35, 42, 49, 56, 57, 50, 43, 36,
    376     29, 22, 15, 23, 30, 37, 44, 51,
    377     58, 59, 52, 45, 38, 31, 39, 46,
    378     53, 60, 61, 54, 47, 55, 62, 63
    379 };
    380 
    381 
    382 /* interlace */
    383 
    384 const UWORD8 gau1_ih264_inv_scan_int8x8_cabac[64] =
    385 {
    386      0,  8, 16,  1,  9, 24, 32, 17,
    387      2, 25, 40, 48, 56, 33, 10, 3,
    388     18, 41, 49, 57, 26, 11,  4, 19,
    389     34, 42, 50, 58, 27, 12,  5, 20,
    390     35, 43, 51, 59, 28, 13,  6, 21,
    391     36, 44, 52, 60, 29, 14, 22, 37,
    392     45, 53, 61, 30,  7, 15, 38, 46,
    393     54, 62, 23, 31, 39, 47, 55, 63
    394 };
    395 
    396 
    397 const UWORD8 *const gpau1_ih264_inv_scan8x8[] =
    398 {
    399      gau1_ih264_inv_scan_prog8x8_cavlc,
    400      gau1_ih264_inv_scan_int8x8_cavlc,
    401      gau1_ih264_inv_scan_prog8x8_cabac,
    402      gau1_ih264_inv_scan_int8x8_cabac
    403 };
    404 
    405 const UWORD8 *const gpau1_ih264_inv_scan4x4[] =
    406 {
    407      gau1_ih264_inv_scan_prog4x4,
    408      gau1_ih264_inv_scan_int4x4,
    409 };
    410 
    411 const UWORD8 gau1_ih264_8x8_subblk_idx[] =
    412 {
    413       0,    1,   4,  5,
    414       2,    3,   6,  7,
    415       8,    9,  12, 13,
    416      10,   11,  14, 15
    417 };
    418 
    419 
    420 /* Table 8-15 Chroma QP offset table */
    421 const UWORD8 gau1_ih264_chroma_qp[] =
    422 {
    423       0,  1,  2,  3,  4,  5,  6,  7,
    424       8,  9, 10, 11, 12, 13, 14, 15,
    425      16, 17, 18, 19, 20, 21, 22, 23,
    426      24, 25, 26, 27, 28, 29, 29, 30,
    427      31, 32, 32, 33, 34, 34, 35, 35,
    428      36, 36, 37, 37, 37, 38, 38, 38,
    429      39, 39, 39, 39
    430 };
    431 
    432 
    433 /**
    434 ******************************************************************************
    435 * @brief  look up table to compute neigbour availability of 4x4 blocks
    436 * input  : subblk idx, mb neighbor availability
    437 * output : sub blk neighbor availability
    438 * @remarks
    439 ******************************************************************************
    440 */
    441 const UWORD8 gau1_ih264_4x4_ngbr_avbl[16][16] =
    442 {
    443     {  0x0, 0x1, 0xc, 0x7, 0x1, 0x1, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    444     {  0x1, 0x1, 0xf, 0x7, 0x1, 0x1, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    445     {  0x2, 0x1, 0xc, 0x7, 0x1, 0x1, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    446     {  0x3, 0x1, 0xf, 0x7, 0x1, 0x1, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    447 
    448     {  0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    449     {  0xd, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    450     {  0xe, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    451     {  0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    452 
    453     {  0x0, 0x1, 0xc, 0x7, 0x1, 0x9, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    454     {  0x1, 0x1, 0xf, 0x7, 0x1, 0x9, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    455     {  0x2, 0x1, 0xc, 0x7, 0x1, 0x9, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    456     {  0x3, 0x1, 0xf, 0x7, 0x1, 0x9, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    457 
    458     {  0xc, 0xf, 0xc, 0x7, 0xf, 0xf, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    459     {  0xd, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    460     {  0xe, 0xf, 0xc, 0x7, 0xf, 0xf, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 },
    461     {  0xf, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 },
    462 };
    463 
    464 
    465 /**
    466 ******************************************************************************
    467 * @brief  look up table to compute neigbour availability of 8x8 blocks
    468 * input  : subblk idx, mb neighbor availability
    469 * output : sub blk neighbor availability
    470 * @remarks
    471 ******************************************************************************
    472 */
    473 const UWORD8 gau1_ih264_8x8_ngbr_avbl[16][4] =
    474 {
    475     {  0x0, 0x1, 0xc, 0x7 },
    476     {  0x1, 0x1, 0xf, 0x7 },
    477     {  0x2, 0x1, 0xc, 0x7 },
    478     {  0x3, 0x1, 0xf, 0x7 },
    479 
    480     {  0xc, 0x7, 0xc, 0x7 },
    481     {  0xd, 0x7, 0xf, 0x7 },
    482     {  0xe, 0x7, 0xc, 0x7 },
    483     {  0xf, 0x7, 0xf, 0x7 },
    484 
    485     {  0x0, 0x9, 0xc, 0x7 },
    486     {  0x1, 0x9, 0xf, 0x7 },
    487     {  0x2, 0x9, 0xc, 0x7 },
    488     {  0x3, 0x9, 0xf, 0x7 },
    489 
    490     {  0xc, 0xf, 0xc, 0x7 },
    491     {  0xd, 0xf, 0xf, 0x7 },
    492     {  0xe, 0xf, 0xc, 0x7 },
    493     {  0xf, 0xf, 0xf, 0x7 },
    494 };
    495 
    496 /** Table 7-3 Default intra 4x4 scaling list */
    497 const UWORD16 gau2_ih264_default_intra4x4_scaling_list[] =
    498 {
    499      6, 13, 13, 20,
    500     20, 20, 28, 28,
    501     28, 28, 32, 32,
    502     32, 37, 37, 42
    503 };
    504 
    505 /** Table 7-3 Default inter 4x4 scaling list */
    506 const UWORD16 gau2_ih264_default_inter4x4_scaling_list[] =
    507 {
    508     10, 14, 14, 20,
    509     20, 20, 24, 24,
    510     24, 24, 27, 27,
    511     27, 30, 30, 34
    512 };
    513 
    514 /* Inverse scanned output of gau2_ih264_default_intra4x4_scaling_list */
    515 const UWORD16 gau2_ih264_default_intra4x4_weight_scale[] =
    516 {
    517      6, 13, 20, 28,
    518     13, 20, 28, 32,
    519     20, 28, 32, 37,
    520     28, 32, 37, 42
    521 };
    522 
    523 /* Inverse scanned output of gau2_ih264_default_inter4x4_scaling_list */
    524 const UWORD16 gau2_ih264_default_inter4x4_weight_scale[] =
    525 {
    526      10, 14, 20, 24,
    527      14, 20, 24, 27,
    528      20, 24, 27, 30,
    529      24, 27, 30, 34
    530 };
    531 
    532 /** Table 7-4 Default intra 8x8 scaling list */
    533 const UWORD16 gau2_ih264_default_intra8x8_scaling_list[] =
    534 {
    535      6, 10, 10, 13, 11, 13, 16, 16,
    536     16, 16, 18, 18, 18, 18, 18, 23,
    537     23, 23, 23, 23, 23, 25, 25, 25,
    538     25, 25, 25, 25, 27, 27, 27, 27,
    539     27, 27, 27, 27, 29, 29, 29, 29,
    540     29, 29, 29, 31, 31, 31, 31, 31,
    541     31, 33, 33, 33, 33, 33, 36, 36,
    542     36, 36, 38, 38, 38, 40, 40, 42
    543 };
    544 
    545 /** Table 7-4 Default inter 8x8 scaling list */
    546 const UWORD16 gau2_ih264_default_inter8x8_scaling_list[] =
    547 {
    548     9,  13, 13, 15, 13, 15, 17, 17,
    549     17, 17, 19, 19, 19, 19, 19, 21,
    550     21, 21, 21, 21, 21, 22, 22, 22,
    551     22, 22, 22, 22, 24, 24, 24, 24,
    552     24, 24, 24, 24, 25, 25, 25, 25,
    553     25, 25, 25, 27, 27, 27, 27, 27,
    554     27, 28, 28, 28, 28, 28, 30, 30,
    555     30, 30, 32, 32, 32, 33, 33, 35
    556 };
    557 
    558 /* Inverse scanned output of gau2_ih264_default_intra8x8_scaling_list */
    559 const UWORD16 gau2_ih264_default_intra8x8_weight_scale[] =
    560 {
    561      6, 10, 13, 16, 18, 23, 25, 27,
    562     10, 11, 16, 18, 23, 25, 27, 29,
    563     13, 16, 18, 23, 25, 27, 29, 31,
    564     16, 18, 23, 25, 27, 29, 31, 33,
    565     18, 23, 25, 27, 29, 31, 33, 36,
    566     23, 25, 27, 29, 31, 33, 36, 38,
    567     25, 27, 29, 31, 33, 36, 38, 40,
    568     27, 29, 31, 33, 36, 38, 40, 42
    569 };
    570 
    571 /* Inverse scanned output of gau2_ih264_default_inter8x8_scaling_list */
    572 const UWORD16 gau2_ih264_default_inter8x8_weight_scale[] =
    573 {
    574      9, 13, 15, 17, 19, 21, 22, 24,
    575     13, 13, 17, 19, 21, 22, 24, 25,
    576     15, 17, 19, 21, 22, 24, 25, 27,
    577     17, 19, 21, 22, 24, 25, 27, 28,
    578     19, 21, 22, 24, 25, 27, 28, 30,
    579     21, 22, 24, 25, 27, 28, 30, 32,
    580     22, 24, 25, 27, 28, 30, 32, 33,
    581     24, 25, 27, 28, 30, 32, 33, 35
    582 };
    583 /* Eq 7-8 Flat scaling matrix for 4x4 */
    584 const UWORD16 gau2_ih264_flat_4x4_weight_scale[] =
    585 {
    586     16, 16, 16, 16,
    587     16, 16, 16, 16,
    588     16, 16, 16, 16,
    589     16, 16, 16, 16
    590 };
    591 
    592 /* Eq 7-9 Flat scaling matrix for 8x8 */
    593 const UWORD16 gau2_ih264_flat_8x8_weight_scale[] =
    594 {
    595     16, 16, 16, 16, 16, 16, 16, 16,
    596     16, 16, 16, 16, 16, 16, 16, 16,
    597     16, 16, 16, 16, 16, 16, 16, 16,
    598     16, 16, 16, 16, 16, 16, 16, 16,
    599     16, 16, 16, 16, 16, 16, 16, 16,
    600     16, 16, 16, 16, 16, 16, 16, 16,
    601     16, 16, 16, 16, 16, 16, 16, 16,
    602     16, 16, 16, 16, 16, 16, 16, 16
    603 };
    604 
    605 
    606 /**
    607  ******************************************************************************
    608  * @brief  Scale Table for inverse quantizing 4x4 subblock. To inverse quantize
    609  * a given 4x4 quantized block, the coefficient at index location (i,j) is scaled
    610  * by one of the constants in this table and right shift the result by abs (4 -
    611  * floor(qp/6)), here qp is the quantization parameter used to quantize the mb.
    612  *
    613  * input   : 16 * qp%6, index location (i,j)
    614  * output  : scale constant.
    615  *
    616  * @remarks 16 constants for each index position of the subblock and 6 for each
    617  * qp%6 in the range 0-5 inclusive.
    618  ******************************************************************************
    619  */
    620 
    621 const UWORD16 gau2_ih264_iquant_scale_matrix_4x4[96] =
    622 {
    623       10,  13,  10,  13,
    624       13,  16,  13,  16,
    625       10,  13,  10,  13,
    626       13,  16,  13,  16,
    627 
    628       11,  14,  11,  14,
    629       14,  18,  14,  18,
    630       11,  14,  11,  14,
    631       14,  18,  14,  18,
    632 
    633       13,  16,  13,  16,
    634       16,  20,  16,  20,
    635       13,  16,  13,  16,
    636       16,  20,  16,  20,
    637 
    638       14,  18,  14,  18,
    639       18,  23,  18,  23,
    640       14,  18,  14,  18,
    641       18,  23,  18,  23,
    642 
    643       16,  20,  16,  20,
    644       20,  25,  20,  25,
    645       16,  20,  16,  20,
    646       20,  25,  20,  25,
    647 
    648       18,  23,  18,  23,
    649       23,  29,  23,  29,
    650       18,  23,  18,  23,
    651       23,  29,  23,  29,
    652 
    653 };
    654 
    655 /**
    656  ******************************************************************************
    657  * @brief  Scale Table for inverse quantizing 8x8 subblock. To inverse quantize
    658  * a given 8x8 quantized block, the coefficient at index location (i,j) is scaled
    659  * by one of the constants in this table and right shift the result by abs (4 -
    660  * floor(qp/6)), here qp is the quantization parameter used to quantize the mb.
    661  *
    662  * input   : qp%6, index location (i,j)
    663  * output  : scale constant.
    664  *
    665  * @remarks 64 constants for each index position of the subblock and 6 for each
    666  * qp%6 in the range 0-5 inclusive.
    667  ******************************************************************************
    668  */
    669 const UWORD16 gau2_ih264_iquant_scale_matrix_8x8 [384] =
    670 {
    671       20,  19,  25,  19,  20,  19,  25,  19,
    672       19,  18,  24,  18,  19,  18,  24,  18,
    673       25,  24,  32,  24,  25,  24,  32,  24,
    674       19,  18,  24,  18,  19,  18,  24,  18,
    675       20,  19,  25,  19,  20,  19,  25,  19,
    676       19,  18,  24,  18,  19,  18,  24,  18,
    677       25,  24,  32,  24,  25,  24,  32,  24,
    678       19,  18,  24,  18,  19,  18,  24,  18,
    679 
    680       22,  21,  28,  21,  22,  21,  28,  21,
    681       21,  19,  26,  19,  21,  19,  26,  19,
    682       28,  26,  35,  26,  28,  26,  35,  26,
    683       21,  19,  26,  19,  21,  19,  26,  19,
    684       22,  21,  28,  21,  22,  21,  28,  21,
    685       21,  19,  26,  19,  21,  19,  26,  19,
    686       28,  26,  35,  26,  28,  26,  35,  26,
    687       21,  19,  26,  19,  21,  19,  26,  19,
    688 
    689       26,  24,  33,  24,  26,  24,  33,  24,
    690       24,  23,  31,  23,  24,  23,  31,  23,
    691       33,  31,  42,  31,  33,  31,  42,  31,
    692       24,  23,  31,  23,  24,  23,  31,  23,
    693       26,  24,  33,  24,  26,  24,  33,  24,
    694       24,  23,  31,  23,  24,  23,  31,  23,
    695       33,  31,  42,  31,  33,  31,  42,  31,
    696       24,  23,  31,  23,  24,  23,  31,  23,
    697 
    698       28,  26,  35,  26,  28,  26,  35,  26,
    699       26,  25,  33,  25,  26,  25,  33,  25,
    700       35,  33,  45,  33,  35,  33,  45,  33,
    701       26,  25,  33,  25,  26,  25,  33,  25,
    702       28,  26,  35,  26,  28,  26,  35,  26,
    703       26,  25,  33,  25,  26,  25,  33,  25,
    704       35,  33,  45,  33,  35,  33,  45,  33,
    705       26,  25,  33,  25,  26,  25,  33,  25,
    706 
    707       32,  30,  40,  30,  32,  30,  40,  30,
    708       30,  28,  38,  28,  30,  28,  38,  28,
    709       40,  38,  51,  38,  40,  38,  51,  38,
    710       30,  28,  38,  28,  30,  28,  38,  28,
    711       32,  30,  40,  30,  32,  30,  40,  30,
    712       30,  28,  38,  28,  30,  28,  38,  28,
    713       40,  38,  51,  38,  40,  38,  51,  38,
    714       30,  28,  38,  28,  30,  28,  38,  28,
    715 
    716       36,  34,  46,  34,  36,  34,  46,  34,
    717       34,  32,  43,  32,  34,  32,  43,  32,
    718       46,  43,  58,  43,  46,  43,  58,  43,
    719       34,  32,  43,  32,  34,  32,  43,  32,
    720       36,  34,  46,  34,  36,  34,  46,  34,
    721       34,  32,  43,  32,  34,  32,  43,  32,
    722       46,  43,  58,  43,  46,  43,  58,  43,
    723       34,  32,  43,  32,  34,  32,  43,  32,
    724 
    725 };
    726