Home | History | Annotate | Download | only in decoder
      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 #ifndef  _IH264D_TABLES_H_
     22 #define  _IH264D_TABLES_H_
     23 
     24 /**
     25  **************************************************************************
     26  * \file ih264d_tables.h
     27  *
     28  * \brief
     29  *    Declaration of all tables used by h264 decoder
     30  *
     31  * \date
     32  *    17/09/2004
     33  *
     34  * \author  MA
     35  **************************************************************************
     36  */
     37 #include "ih264_typedefs.h"
     38 #include "ih264_macros.h"
     39 #include "ih264_platform_macros.h"
     40 #include "ih264d_cabac.h"
     41 
     42 /*Deblocking Table declaration*/
     43 extern const UWORD8 gau1_ih264d_qp_scale_cr[];
     44 extern const UWORD8 gau1_ih264d_alpha_table[];
     45 extern const UWORD8 gau1_ih264d_clip_table_deblock[];
     46 extern const UWORD8 gau1_ih264d_beta_table[];
     47 extern const UWORD8 gau1_ih264d_clip_table[][4];
     48 
     49 /*Parsing Table declaration*/
     50 extern const UWORD8 gau1_ih264d_cbp_tab[6];
     51 extern const UWORD32 gau4_ih264d_packed_bs2[32];
     52 extern const UWORD16 gau2_ih264d_4x4_v2h_reorder[16];
     53 extern const UWORD8 gau1_ih264d_subblk_offset[16];
     54 extern const UWORD8 gau1_ih264d_cbp_table[48][2];
     55 
     56 /*Decode Slice Table declaration*/
     57 extern const UWORD8 gau1_ih264d_inv_scan[16];
     58 extern const UWORD8 gau1_ih264d_inv_scan_fld[16];
     59 extern const UWORD8 gau1_ih264d_dequant_matrix[6][16];
     60 extern const UWORD16 gau2_ih264_iquant_scale_4x4[6][16];
     61 extern const UWORD8 gau1_ih264d_dequant8x8_zigzag_cavlc[4][6][16];
     62 extern const UWORD16 gau1_ih264d_dequant8x8_cavlc[6][64];
     63 
     64 extern const UWORD8 gau1_ih264d_inv_scan_prog8x8_cavlc[4][16];
     65 extern const UWORD8 gau1_ih264d_inv_scan_int8x8_cavlc[4][16];
     66 extern const UWORD8 gau1_ih264d_inv_scan_prog8x8_cabac[64];
     67 extern const UWORD8 gau1_ih264d_inv_scan_int8x8_cabac[64];
     68 
     69 extern const UWORD8 gau1_ih264d_lastcoeff_context_inc[64];
     70 extern const UWORD8 gau1_ih264d_sigcoeff_context_inc_frame[64];
     71 extern const UWORD8 gau1_ih264d_sigcoeff_context_inc_field[64];
     72 
     73 /* scaling related table declaration */
     74 extern const WORD16 gai2_ih264d_default_intra4x4[16];
     75 extern const WORD16 gai2_ih264d_default_inter4x4[16];
     76 extern const WORD16 gai2_ih264d_default_intra8x8[64];
     77 extern const WORD16 gai2_ih264d_default_inter8x8[64];
     78 extern const WORD16 gai2_ih264d_flat_4x4[16];
     79 extern const WORD16 gai2_ih264d_flat_8x8[64];
     80 
     81 /*Decode MV Table declaration*/
     82 extern const WORD8 gau1_ih264d_mv_pred_condition[];
     83 
     84 /** Number of subMbs for the 8x8 prediction mode */
     85 extern const UWORD8 gau1_ih264d_num_submb_part[];
     86 
     87 /** Width of the 8x8 prediction mode in terms of subMbs */
     88 extern const UWORD8 gau1_ih264d_submb_partw[];
     89 
     90 /** Height of the 8x8 prediction mode in terms of subMbs */
     91 extern const UWORD8 gau1_ih264d_submb_parth[];
     92 
     93 /** Number of MB partitions for the MB prediction mode */
     94 extern const UWORD8 gau1_ih264d_num_mb_part[];
     95 
     96 /** Width of the MB partition in terms of subMbs */
     97 extern const UWORD8 gau1_ih264d_mb_partw[];
     98 
     99 /** Height of the MB partition in terms of subMbs */
    100 extern const UWORD8 gau1_ih264d_mb_parth[];
    101 
    102 /** MB partition information is packed into a UWORD32 {0,number,width,height} */
    103 extern const UWORD32 gau4_ih264d_submb_part[];
    104 
    105 extern const UWORD8 gau1_ih264d_submb_indx_mod[];
    106 
    107 /** This table is used to assign CBPs to Inter MBs. */
    108 extern const UWORD8 gau1_ih264d_cbp_inter[];
    109 
    110 /** Motion comp modes for P followed by B,
    111  0 to 4   : P Mbs
    112  5 to 27  : B Mbs
    113  28 to 30 : DIRECT */
    114 extern const UWORD8 gau1_ih264d_mb_mc_mode[];
    115 
    116 extern const UWORD8 gau1_ih264d_submb_mc_mode[];
    117 
    118 /** Sub MB pred modes for B slice */
    119 extern const UWORD8 gau1_ih264d_submb_pred_modes[];
    120 
    121 /** MB pred modes for P and B slice */
    122 extern const WORD8 gau1_ih264d_mb_pred_modes[2][32];
    123 
    124 /*Decode CAVLC Table declaration*/
    125 extern const UWORD8 gau1_ih264d_table_total_zero_2to10[9][64];
    126 extern const UWORD8 gau1_ih264d_table_total_zero_11to15[5][16];
    127 extern const UWORD8 gau1_ih264d_table_run_before[64];
    128 extern const UWORD16 gau2_ih264d_code_gx[304];
    129 extern const UWORD8 gau1_ih264d_cav_chromdc_vld[256];
    130 extern const UWORD16 gau2_ih264d_offset_num_vlc_tab[9];
    131 extern const UWORD8 gau1_ih264d_total_coeff_fn_ptr_offset[16];
    132 extern const WORD16 gai2_ih264d_trailing_one_level[14][3];
    133 
    134 /*Decode CABAC Table declaration*/
    135 extern const UWORD32 gau4_ih264d_cabac_table[128][4];
    136 
    137 /****************************************************************************/
    138 /*             For error detection in intra pred4x4 modes                   */
    139 /****************************************************************************/
    140 extern const UWORD8 gau1_ih264d_intra_pred_err_code[9];
    141 
    142 /*****************************************************************************/
    143 /* Cabac tables for context initialization depending upon type of Slice,     */
    144 /* cabac init Idc value and Qp.                                              */
    145 /*****************************************************************************/
    146 extern const UWORD8 gau1_ih264d_cabac_ctxt_init_table[NUM_CAB_INIT_IDC_PLUS_ONE][QP_RANGE][NUM_CABAC_CTXTS];
    147 
    148 /*****************************************************************************/
    149 /* SEI tables for field usge and which field first                           */
    150 /*****************************************************************************/
    151 extern const UWORD8 gau1_ih264d_sei_fld_usage[9][3];
    152 
    153 
    154 extern const UWORD8 gau1_ih264d_top_left_mb_part_indx_mod[];
    155 extern const UWORD8 gau1_ih264d_submb_indx_mod_sp_drct[];
    156 
    157 #endif /*TABLES_H*/
    158