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#include "ih264_typedefs.h" 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_macros.h" 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_platform_macros.h" 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_bitstrm.h" 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_structs.h" 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_parse_cavlc.h" 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_defs.h" 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_defs.h" 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_defs.h" 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_parse_slice.h" 318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_tables.h" 328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_utils.h" 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_nal.h" 348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_deblocking.h" 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_mem_request.h" 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_debug.h" 388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_error_handler.h" 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_mb_utils.h" 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_sei.h" 428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_vui.h" 438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_tables.h" 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IDCT_BLOCK_WIDTH8X8 8 468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_scaling_list(WORD16 *pi2_scaling_list, 488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_size_of_scalinglist, 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_use_default_scaling_matrix_flag, 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_bit_stream_t *ps_bitstrm) 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_j, i4_delta_scale, i4_lastScale = 8, i4_nextScale = 8; 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 *pu4_bitstrm_buf = ps_bitstrm->pu4_buffer; 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 *pu4_bitstrm_ofst = &ps_bitstrm->u4_ofst; 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *pu1_use_default_scaling_matrix_flag = 0; 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_j = 0; i4_j < i4_size_of_scalinglist; i4_j++) 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(i4_nextScale != 0) 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_delta_scale = ih264d_sev(pu4_bitstrm_ofst, 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu4_bitstrm_buf); 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_nextScale = ((i4_lastScale + i4_delta_scale + 256) & 0xff); 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *pu1_use_default_scaling_matrix_flag = ((i4_j == 0) 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S && (i4_nextScale == 0)); 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pi2_scaling_list[i4_j] = 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_nextScale == 0) ? (i4_lastScale) : (i4_nextScale); 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_lastScale = pi2_scaling_list[i4_j]; 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_form_default_scaling_matrix(dec_struct_t *ps_dec) 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* perform the inverse scanning for the frame and field scaling matrices */ 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_inv_scan; 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_i, i4_j; 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_inv_scan = (UWORD8 *)gau1_ih264d_inv_scan; 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* for all 4x4 matrices */ 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_i = 0; i4_i < 6; i4_i++) 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_j = 0; i4_j < 16; i4_j++) 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.i2_scalinglist4x4[i4_i][pu1_inv_scan[i4_j]] = 958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16; 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* for all 8x8 matrices */ 1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_i = 0; i4_i < 2; i4_i++) 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_j = 0; i4_j < 64; i4_j++) 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.i2_scalinglist8x8[i4_i][gau1_ih264d_inv_scan_prog8x8_cabac[i4_j]] = 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16; 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_form_scaling_matrix_picture(dec_seq_params_t *ps_seq, 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_pic_params_t *ps_pic, 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_struct_t *ps_dec) 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* default scaling matrices */ 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_i; 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* check the SPS first */ 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_seq->i4_seq_scaling_matrix_present_flag) 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_i = 0; i4_i < 8; i4_i++) 1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(i4_i < 6) 1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* fall-back rule A */ 1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!ps_seq->u1_seq_scaling_list_present_flag[i4_i]) 1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((i4_i == 0) || (i4_i == 3)) 1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_i == 0) ? (WORD16 *)(gai2_ih264d_default_intra4x4) : (WORD16 *)(gai2_ih264d_default_inter4x4); 1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i 1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S - 1]; 1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_seq->u1_use_default_scaling_matrix_flag[i4_i]) 1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_i < 3) ? (WORD16 *)(gai2_ih264d_default_intra4x4) : (WORD16 *)(gai2_ih264d_default_inter4x4); 1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_seq->i2_scalinglist4x4[i4_i]; 1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* fall-back rule A */ 1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((!ps_seq->u1_seq_scaling_list_present_flag[i4_i]) 1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S || (ps_seq->u1_use_default_scaling_matrix_flag[i4_i])) 1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_i == 6) ? ((WORD16*)gai2_ih264d_default_intra8x8) : ((WORD16*)gai2_ih264d_default_inter8x8); 1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_seq->i2_scalinglist8x8[i4_i - 6]; 1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* checking for the PPS */ 1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pic->i4_pic_scaling_matrix_present_flag) 1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_i = 0; i4_i < 8; i4_i++) 1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(i4_i < 6) 1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* fall back rule B */ 1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!ps_pic->u1_pic_scaling_list_present_flag[i4_i]) 1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((i4_i == 0) || (i4_i == 3)) 1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!ps_seq->i4_seq_scaling_matrix_present_flag) 1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_i == 0) ? (WORD16 *)(gai2_ih264d_default_intra4x4) : (WORD16 *)(gai2_ih264d_default_inter4x4); 1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i 1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S - 1]; 1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pic->u1_pic_use_default_scaling_matrix_flag[i4_i]) 2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_i < 3) ? (WORD16 *)(gai2_ih264d_default_intra4x4) : (WORD16 *)(gai2_ih264d_default_inter4x4); 2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pic->i2_pic_scalinglist4x4[i4_i]; 2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!ps_pic->u1_pic_scaling_list_present_flag[i4_i]) 2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!ps_seq->u1_seq_scaling_list_present_flag[i4_i]) 2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_i == 6) ? ((WORD16*)gai2_ih264d_default_intra8x8) : ((WORD16*)gai2_ih264d_default_inter8x8); 2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pic->u1_pic_use_default_scaling_matrix_flag[i4_i]) 2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_i == 6) ? (WORD16 *)(gai2_ih264d_default_intra8x8) : (WORD16 *)(gai2_ih264d_default_inter8x8); 2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i] = 2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pic->i2_pic_scalinglist8x8[i4_i - 6]; 2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* perform the inverse scanning for the frame and field scaling matrices */ 2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_inv_scan_4x4; 2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_i, i4_j; 2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_inv_scan_4x4 = (UWORD8 *)gau1_ih264d_inv_scan; 2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* for all 4x4 matrices */ 2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_i = 0; i4_i < 6; i4_i++) 2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_j = 0; i4_j < 16; i4_j++) 2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.i2_scalinglist4x4[i4_i][pu1_inv_scan_4x4[i4_j]] = 2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i][i4_j]; 2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* for all 8x8 matrices */ 2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_i = 0; i4_i < 2; i4_i++) 2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i4_j = 0; i4_j < 64; i4_j++) 2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.i2_scalinglist8x8[i4_i][gau1_ih264d_inv_scan_prog8x8_cabac[i4_j]] = 2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->s_high_profile.pi2_scale_mat[i4_i + 6][i4_j]; 2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 275