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 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <string.h> 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_typedefs.h" 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "iv.h" 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ivd.h" 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_macros.h" 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_platform_macros.h" 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_debug.h" 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_defs.h" 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_defs.h" 318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_structs.h" 328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_deblocking.h" 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_mb_utils.h" 348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_error_handler.h" 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_utils.h" 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_defs.h" 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_format_conv.h" 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_deblocking.h" 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_tables.h" 428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*! 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************* 458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \file ih264d_deblocking.c 468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief 488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Decoder specific deblocking routines 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \author AI 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************* 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*! 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \if Function name : HorizonPad \endif 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Does the Horizontal padding on a whole pic. 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \return 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * None 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*! 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \if Function name : FilterBoundaryLeft \endif 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Filters MacroBlock Left Boundary egdes. 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \return 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * None 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_filter_boundary_left_nonmbaff(dec_struct_t *ps_dec, 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt, 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst, 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst, 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_cur_mb, 82caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_y, 83caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_uv, 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_left_mb, 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 pu4_bs_tab[], 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_cur_fld) 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_y, *pu1_u, *pu1_v; 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 uc_tmp, qp_avg; 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_u = 0, beta_u = 0, alpha_v = 0, beta_v = 0; 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_y = 0, beta_y = 0; 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_u, idx_a_u, idx_b_v, idx_a_v; 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_y, idx_a_y; 958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_bs_val; 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_u, *pu1_cliptab_v, *pu1_cliptab_y; 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_double_cl = !ps_cur_mb->u1_single_call; 1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_a = ps_cur_mb->i1_slice_alpha_c0_offset; 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_b = ps_cur_mb->i1_slice_beta_offset; 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PROFILE_DISABLE_DEBLK() 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_y = ps_tfr_cxt->pu1_mb_y; 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_u = ps_tfr_cxt->pu1_mb_u; 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_v = ps_tfr_cxt->pu1_mb_v; 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* LUMA values */ 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Deblock rounding change */ 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S qp_avg = 1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD8)((ps_cur_mb->u1_left_mb_qp + ps_cur_mb->u1_mb_qp + 1) 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S >> 1); 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_y = qp_avg + ofst_a; 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y = gau1_ih264d_alpha_table[12 + idx_a_y]; 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_y = qp_avg + ofst_b; 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y = gau1_ih264d_beta_table[12 + idx_b_y]; 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Chroma cb values */ 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 123caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 124caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_cur_mb->u1_left_mb_qp + i1_cb_qp_idx_ofst); 125caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 126caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 127caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_u = qp_avg + ofst_a; 1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_u = qp_avg + ofst_b; 1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Chroma cr values */ 1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 135caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 136caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_cur_mb->u1_left_mb_qp + i1_cr_qp_idx_ofst); 137caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 138caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 139caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_v = qp_avg + ofst_a; 1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v = qp_avg + ofst_b; 1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_double_cl == 0) 1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[4]; 1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0x04040404 == u4_bs_val) 1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bs4(pu1_y, i4_strd_y, alpha_y, beta_y); 1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bs4(pu1_u, i4_strd_uv, alpha_u, 1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v); 1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs_val) 1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 161caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; 162caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; 163caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; 1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y, i4_strd_y, alpha_y, 1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y, u4_bs_val, 1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y); 1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4(pu1_u, i4_strd_uv, alpha_u, 1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v, 1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, pu1_cliptab_u, 1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_y <<= (!u1_cur_fld); 1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[4]; 1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_uv <<= (!u1_cur_fld); 1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0x04040404 == u4_bs_val) 1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bs4_mbaff(pu1_y, i4_strd_y, alpha_y, 1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y); 1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bs4_mbaff(pu1_u, i4_strd_uv, alpha_u, 1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v); 1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs_val) 1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 197caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; 198caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; 199caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; 2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4_mbaff(pu1_y, i4_strd_y, 2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y, beta_y, 2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y); 2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4_mbaff(pu1_u, i4_strd_uv, 2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u, beta_u, 2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v, 2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u, 2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_shift = (i4_strd_y >> 1) << (u1_cur_fld ? 4 : 0); 2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_y += u2_shift; 2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u2_shift = (i4_strd_uv >> 1) << (u1_cur_fld ? 3 : 0); 2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_u += u2_shift; 2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_v += u2_shift; 2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S qp_avg = (((ps_left_mb + 1)->u1_mb_qp + ps_cur_mb->u1_mb_qp + 1) >> 1); 2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_y = qp_avg + ofst_a; 2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y = gau1_ih264d_alpha_table[12 + idx_a_y]; 2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_y = qp_avg + ofst_b; 2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y = gau1_ih264d_beta_table[12 + idx_b_y]; 2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[9]; 2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 232caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 233caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = ((ps_left_mb + 1)->u1_mb_qp + i1_cb_qp_idx_ofst); 234caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 235caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 236caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_u = qp_avg + ofst_a; 2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_u = qp_avg + ofst_b; 2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[9]; 2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 244caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 245caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = ((ps_left_mb + 1)->u1_mb_qp + i1_cr_qp_idx_ofst); 246caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 247caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 248caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_v = qp_avg + ofst_a; 2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v = qp_avg + ofst_b; 2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0x04040404 == u4_bs_val) 2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bs4_mbaff(pu1_y, i4_strd_y, alpha_y, 2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y); 2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bs4_mbaff(pu1_u, i4_strd_uv, alpha_u, 2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v); 2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs_val) 2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 268caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; 269caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; 270caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; 2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4_mbaff(pu1_y, i4_strd_y, 2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y, beta_y, 2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y); 2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4_mbaff(pu1_u, i4_strd_uv, 2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u, beta_u, 2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v, 2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u, 2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*! 2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \if Function name : FilterBoundaryTop \endif 2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief 2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Filters MacroBlock Top Boundary egdes. 2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \return 2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * None 2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_filter_boundary_top_nonmbaff(dec_struct_t *ps_dec, 3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt, 3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst, 3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst, 3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_cur_mb, 306caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_y, 307caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_uv, 3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_top_mb, 3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_bs) 3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_y, *pu1_u; 3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_u = 0, beta_u = 0, alpha_v = 0, beta_v = 0; 3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_y = 0, beta_y = 0; 3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 qp_avg; 3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_u, idx_a_u, idx_b_v, idx_a_v; 3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_y, idx_a_y; 3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 uc_tmp; 3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_u, *pu1_cliptab_v, *pu1_cliptab_y; 3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_a = ps_cur_mb->i1_slice_alpha_c0_offset; 3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_b = ps_cur_mb->i1_slice_beta_offset; 3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UNUSED(ps_top_mb); 3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* LUMA values */ 3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Deblock rounding change */ 3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S uc_tmp = ((ps_cur_mb->u1_topmb_qp + ps_cur_mb->u1_mb_qp + 1) >> 1); 327caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)uc_tmp; 328caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_a_y = qp_avg + ofst_a; 3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y = gau1_ih264d_alpha_table[12 + idx_a_y]; 330caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_y = qp_avg + ofst_b; 3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y = gau1_ih264d_beta_table[12 + idx_b_y]; 3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_y = ps_tfr_cxt->pu1_mb_y; 3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* CHROMA cb values */ 3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 336caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 337caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_cur_mb->u1_topmb_qp + i1_cb_qp_idx_ofst); 338caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 339caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 340caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_u = qp_avg + ofst_a; 3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_u = qp_avg + ofst_b; 3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* CHROMA cr values */ 3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 349caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 350caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_cur_mb->u1_topmb_qp + i1_cr_qp_idx_ofst); 351caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 352caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 353caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_v = qp_avg + ofst_a; 3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v = qp_avg + ofst_b; 3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_u = ps_tfr_cxt->pu1_mb_u; 3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs == 0x04040404) 3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Code specific to the assembly module */ 3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_horz_bs4(pu1_y, i4_strd_y, alpha_y, beta_y); 3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_horz_bs4(pu1_u, i4_strd_uv, alpha_u, beta_u, 3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v); 3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; 3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u = 3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; 3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v = 3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; 3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_horz_bslt4(pu1_y, i4_strd_y, alpha_y, beta_y, 3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs, pu1_cliptab_y); 3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_horz_bslt4(pu1_u, i4_strd_uv, alpha_u, 3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v, 3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs, pu1_cliptab_u, 3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_mb_nonmbaff(dec_struct_t *ps_dec, 3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt, 3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst, 3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst, 3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_y, 398caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_uv ) 3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_y, *pu1_u; 4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_bs; 4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha, beta, alpha_u, beta_u, alpha_v, beta_v; 4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_u; 4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_v; 4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_y; 4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 409caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S UWORD32 * pu4_bs_tab; 4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_a_y, idx_a_u, idx_a_v; 411caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S UWORD32 u4_deb_mode, u4_mbs_next; 412caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S UWORD32 u4_image_wd_mb; 413caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S deblk_mb_t *ps_top_mb,*ps_left_mb,*ps_cur_mb; 4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PROFILE_DISABLE_DEBLK() 4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Return from here to switch off deblocking */ 4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 418caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_image_wd_mb = ps_dec->u2_frm_wd_in_mbs; 419caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 420caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_cur_mb = ps_dec->ps_cur_deblk_mb; 421caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu4_bs_tab = ps_cur_mb->u4_bs_table; 422caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_deb_mode = ps_cur_mb->u1_deblocking_mode; 423caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(!(u4_deb_mode & MB_DISABLE_FILTERING)) 424caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 425caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 426caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(ps_dec->u4_deblk_mb_x) 427caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 428caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_left_mb = ps_cur_mb - 1; 429caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 430caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 431caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S else 432caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 433caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_left_mb = NULL; 434caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 435caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 436caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(ps_dec->u4_deblk_mb_y != 0) 437caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 438caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_top_mb = ps_cur_mb - (u4_image_wd_mb); 439caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 440caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S else 441caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 442caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_top_mb = NULL; 443caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 444caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 445caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_deb_mode & MB_DISABLE_LEFT_EDGE) 446caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_left_mb = NULL; 447caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_deb_mode & MB_DISABLE_TOP_EDGE) 448caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_top_mb = NULL; 449caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 450caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*---------------------------------------------------------------------*/ 451caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* Filter wrt Left edge */ 452caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* except */ 453caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* - Left Egde is Picture Boundary */ 454caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* - Left Egde is part of Slice Boundary and Deblocking */ 455caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* parameters of slice disable Filtering of Slice Boundary Edges*/ 456caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*---------------------------------------------------------------------*/ 457caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(ps_left_mb) 458caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ih264d_filter_boundary_left_nonmbaff(ps_dec, ps_tfr_cxt, 459caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cb_qp_idx_ofst, 460caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 461caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i4_strd_y, i4_strd_uv, ps_left_mb, 462caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu4_bs_tab, 0); 463caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 464caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*--------------------------------------------------------------------*/ 465caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* Filter wrt Other Vertical Edges */ 466caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*--------------------------------------------------------------------*/ 467caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 468caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 ofst_a, ofst_b, idx_b_y, idx_b_u, 469caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_v; 470caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 qp_avg, qp_avg_u, qp_avg_v; 471caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ofst_a = ps_cur_mb->i1_slice_alpha_c0_offset; 472caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ofst_b = ps_cur_mb->i1_slice_beta_offset; 473caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 474caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = ps_cur_mb->u1_mb_qp; 475caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 476caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_a_y = qp_avg + ofst_a; 477caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S alpha = gau1_ih264d_alpha_table[12 + idx_a_y]; 478caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_y = qp_avg + ofst_b; 479caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S beta = gau1_ih264d_beta_table[12 + idx_b_y]; 480caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 481caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* CHROMA values */ 482caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* CHROMA Cb values */ 483caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg_u = (qp_avg + i1_cb_qp_idx_ofst); 484caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg_u = gau1_ih264d_qp_scale_cr[12 + qp_avg_u]; 485caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_a_u = qp_avg_u + ofst_a; 486caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 487caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_u = qp_avg_u + ofst_b; 488caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 489caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* CHROMA Cr values */ 490caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg_v = (qp_avg + i1_cr_qp_idx_ofst); 491caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg_v = gau1_ih264d_qp_scale_cr[12 + qp_avg_v]; 492caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_a_v = qp_avg_v + ofst_a; 493caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 494caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_v = qp_avg_v + ofst_b; 495caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 496caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 498caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; //this for Luma 499caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; //this for chroma 500caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; //this for chroma 5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 502caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S //edge=1 5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 505caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs = pu4_bs_tab[5]; 506caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_y = ps_tfr_cxt->pu1_mb_y; 507caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_u = ps_tfr_cxt->pu1_mb_u; 5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 509caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_bs) 510caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 512caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y + 4, i4_strd_y, alpha, beta, 513caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs, pu1_cliptab_y); 5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 515caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 516caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S //edge=2 5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 518caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs = pu4_bs_tab[6]; 519caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_bs) 520caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 521caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y + 8, i4_strd_y, alpha, beta, 522caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs, pu1_cliptab_y); 523caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4(pu1_u + 4 * YUV420SP_FACTOR, 524caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i4_strd_uv, alpha_u, beta_u, 525caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S alpha_v, beta_v, u4_bs, 526caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u, pu1_cliptab_v); 5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 528caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 529caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S //edge=3 5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 531caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs = pu4_bs_tab[7]; 532caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_bs) 533caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 534caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y + 12, i4_strd_y, alpha, beta, 535caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs, pu1_cliptab_y); 5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 537caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 539caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*--------------------------------------------------------------------*/ 540caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* Filter wrt Top edge */ 541caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* except */ 542caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* - Top Egde is Picture Boundary */ 543caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* - Top Egde is part of Slice Boundary and Deblocking */ 544caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* parameters of slice disable Filtering of Slice Boundary Edges*/ 545caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*--------------------------------------------------------------------*/ 546caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(ps_top_mb) 547caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 548caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /** if top MB and MB AFF and cur MB is frame and top is field then */ 549caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* one extra top edge needs to be deblocked */ 5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 551caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ih264d_filter_boundary_top_nonmbaff(ps_dec, ps_tfr_cxt, 552caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cb_qp_idx_ofst, 553caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 554caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i4_strd_y, i4_strd_uv, ps_top_mb, 555caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu4_bs_tab[0]); 5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 557caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 559caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*--------------------------------------------------------------------*/ 560caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /* Filter wrt Other Horizontal Edges */ 561caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S /*--------------------------------------------------------------------*/ 5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 563caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S //edge1 564caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs = pu4_bs_tab[1]; 5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 566caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_bs) 567caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 568caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_luma_horz_bslt4(pu1_y + (i4_strd_y << 2), i4_strd_y, 569caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S alpha, beta, u4_bs, pu1_cliptab_y); 5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 571caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 572caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S //edge2 573caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs = pu4_bs_tab[2]; 5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 575caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_bs) 576caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 578caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_luma_horz_bslt4(pu1_y + (i4_strd_y << 3), i4_strd_y, 579caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S alpha, beta, u4_bs, pu1_cliptab_y); 580caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_chroma_horz_bslt4(pu1_u + (i4_strd_uv << 2), 581caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i4_strd_uv, alpha_u, beta_u, 582caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S alpha_v, beta_v, u4_bs, 583caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u, pu1_cliptab_v); 5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 585caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 586caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S //edge3 587caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_bs = pu4_bs_tab[3]; 588caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(u4_bs) 589caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 590caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->pf_deblk_luma_horz_bslt4( 591caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S (pu1_y + (i4_strd_y << 3) + (i4_strd_y << 2)), 592caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i4_strd_y, alpha, beta, u4_bs, pu1_cliptab_y); 5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 594caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 595caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 596caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 597caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->u4_deblk_mb_x++; 598caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->ps_cur_deblk_mb++; 599caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->u4_cur_deblk_mb_num++; 600caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S u4_mbs_next = u4_image_wd_mb - ps_dec->u4_deblk_mb_x; 601caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 602caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_y += 16; 603caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_u += 8 * YUV420SP_FACTOR; 604caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_v += 8; 605caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 606caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(!u4_mbs_next) 607caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S { 608caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_y += ps_tfr_cxt->u4_y_inc; 609caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_u += ps_tfr_cxt->u4_uv_inc; 610caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_v += ps_tfr_cxt->u4_uv_inc; 611caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->u4_deblk_mb_y++; 612caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_dec->u4_deblk_mb_x = 0; 613caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S } 6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/************************************************************************** 6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Function Name : ih264d_init_deblk_tfr_ctxt 6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Description : This function is called once per deblockpicture call 6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * This sets up the transfer address contexts 6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Revision History: 6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * DD MM YYYY Author(s) Changes (Describe the changes made) 6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 14 06 2005 SWRN Draft 6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************/ 6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_init_deblk_tfr_ctxt(dec_struct_t * ps_dec, 6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pad_mgr_t *ps_pad_mgr, 6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t *ps_tfr_cxt, 6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_wd_mb, 6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mbaff) 6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 i4_wd_y; 6378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 i4_wd_uv; 6388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_field_pic_flag = ps_dec->ps_cur_slice->u1_field_pic_flag; /*< Field u4_flag */ 6398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UNUSED(u2_image_wd_mb); 6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_y = ps_dec->s_cur_pic.pu1_buf1 - 4; 6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_u = ps_dec->s_cur_pic.pu1_buf2 - 4; 6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_v = ps_dec->s_cur_pic.pu1_buf3 - 4; 6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_dest_y = ps_tfr_cxt->pu1_src_y; 6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_dest_u = ps_tfr_cxt->pu1_src_u; 6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_dest_v = ps_tfr_cxt->pu1_src_v; 6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 647caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_y = ps_tfr_cxt->pu1_src_y + 4; 648caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_u = ps_tfr_cxt->pu1_src_u + 4; 649caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_tfr_cxt->pu1_mb_v = ps_tfr_cxt->pu1_src_v + 4; 650caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 6518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_y = ps_dec->u2_frm_wd_y << u1_field_pic_flag; 6528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_uv = ps_dec->u2_frm_wd_uv << u1_field_pic_flag; 6538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->u4_y_inc = ((i4_wd_y << u1_mbaff) * 16 6548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S - (ps_dec->u2_frm_wd_in_mbs << 4)); 6558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->u4_uv_inc = (i4_wd_uv << u1_mbaff) * 8 6578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S - (ps_dec->u2_frm_wd_in_mbs << 4); 6588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* padding related initialisations */ 6608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_dec->ps_cur_slice->u1_nal_ref_idc) 6618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 6628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_vert_pad_top = !(ps_dec->ps_cur_slice->u1_field_pic_flag 6638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S && ps_dec->ps_cur_slice->u1_bottom_field_flag); 6648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_vert_pad_bot = 6658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ((!ps_dec->ps_cur_slice->u1_field_pic_flag) 6668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S || ps_dec->ps_cur_slice->u1_bottom_field_flag); 6678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_horz_pad = 1; 6688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 6698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 6708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 6718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_horz_pad = 0; 6728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_vert_pad_top = 0; 6738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_vert_pad_bot = 0; 6748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 6758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 6768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 6788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 6798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : ih264d_deblock_picture_mbaff */ 6808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 6818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : This function carries out deblocking on a whole picture */ 6828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* with MBAFF */ 6838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 6848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : <What inputs does the function take?> */ 6858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : This functions calls deblock MB in the MB increment order*/ 6868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 6878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Produces the deblocked picture */ 6888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : None */ 6898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 6908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 6918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 6928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes (Describe the changes made) */ 6938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 17 02 2005 NS Creation */ 6948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 14 06 2005 SWRN clean-up */ 6958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 6968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_picture_mbaff(dec_struct_t * ps_dec) 6988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 6998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD16 i2_mb_x, i2_mb_y; 7008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t *ps_cur_mb; 7018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t *ps_top_mb; 7028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t *ps_left_mb; 7038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_vert_pad_top = 1; 7058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_cur_fld, u1_top_fld, u1_left_fld; 7068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_first_row; 7078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 * pu1_deb_y, *pu1_deb_u, *pu1_deb_v; 7098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_deb_mode, u1_extra_top_edge; 7108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_wd_y, i4_wd_uv; 7118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_field_pic_flag = ps_dec->ps_cur_slice->u1_field_pic_flag; /*< Field u4_flag */ 7138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_bottom_field_flag = ps_dec->ps_cur_slice->u1_bottom_field_flag; /*< Bottom field u4_flag*/ 7148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /**************************************************/ 7168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* one time loads from ps_dec which will be used */ 7178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* frequently throughout the deblocking procedure */ 7188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /**************************************************/ 7198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pad_mgr_t * ps_pad_mgr = &ps_dec->s_pad_mgr; 7208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t s_tfr_ctxt; 7218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt = &s_tfr_ctxt; 7228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_wd_mb = ps_dec->u2_frm_wd_in_mbs; 7248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_ht_mb = ps_dec->u2_frm_ht_in_mbs; 7258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mbaff = ps_dec->ps_cur_slice->u1_mbaff_frame_flag; 7268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst = ps_dec->ps_cur_pps->i1_chroma_qp_index_offset; 7278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst = 7288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->ps_cur_pps->i1_second_chroma_qp_index_offset; 7298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Set up Parameter for DMA transfer */ 7318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_init_deblk_tfr_ctxt(ps_dec, ps_pad_mgr, ps_tfr_cxt, u2_image_wd_mb, 7328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_mbaff); 7338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Pic level Initialisations */ 7358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i2_mb_y = u2_image_ht_mb; 7368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i2_mb_x = 0; 7378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_extra_top_edge = 0; 7388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_first_row = 1; 7408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_y = ps_dec->u2_frm_wd_y << u1_field_pic_flag; 7428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_uv = ps_dec->u2_frm_wd_uv << u1_field_pic_flag; 7438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Initial filling of the buffers with deblocking data */ 7448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 745caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_deb_y = ps_tfr_cxt->pu1_mb_y; 746caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_deb_u = ps_tfr_cxt->pu1_mb_u; 747caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_deb_v = ps_tfr_cxt->pu1_mb_v; 7488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb = ps_dec->ps_deblk_pic; 7498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_dec->u4_app_disable_deblk_frm == 0) 7518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S while(i2_mb_y > 0) 7558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S do 7578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_deb_mode = ps_cur_mb->u1_deblocking_mode; 7608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!(u1_deb_mode & MB_DISABLE_FILTERING)) 7618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_y = pu1_deb_y; 7638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_u = pu1_deb_u; 7648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_v = pu1_deb_v; 7658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_cur_fld = (ps_cur_mb->u1_mb_type & D_FLD_MB) >> 7; 7678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_cur_fld &= 1; 7688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(i2_mb_x) 7698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb = ps_cur_mb - 2; 7718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 7728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 7738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb = NULL; 7758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 7768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!u1_first_row) 7778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb = ps_cur_mb - (u2_image_wd_mb << 1) + 1; 7798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_top_fld = (ps_top_mb->u1_mb_type & D_FLD_MB) 7808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S >> 7; 7818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 7828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 7838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb = NULL; 7858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_top_fld = 0; 7868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 7878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((!u1_first_row) & u1_top_fld & u1_cur_fld) 7898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb--; 7908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /********************************************************/ 7928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* if top MB and MB AFF and cur MB is frame and top is */ 7938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* field, then one extra top edge needs to be deblocked */ 7948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /********************************************************/ 7958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_extra_top_edge = (!u1_cur_fld) & u1_top_fld; 7968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_deb_mode & MB_DISABLE_LEFT_EDGE) 7988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb = NULL; 7998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_deb_mode & MB_DISABLE_TOP_EDGE) 8008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb = NULL; 8018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_deblock_mb_mbaff(ps_dec, ps_tfr_cxt, 8038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cb_qp_idx_ofst, 8048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 8058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_y, i4_wd_uv, ps_top_mb, 8068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb, u1_cur_fld, 8078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_extra_top_edge); 8088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb++; 8118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_deb_mode = ps_cur_mb->u1_deblocking_mode; 8138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!(u1_deb_mode & MB_DISABLE_FILTERING)) 8148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_y = pu1_deb_y; 8168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_u = pu1_deb_u; 8178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_v = pu1_deb_v; 8188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_cur_fld = (ps_cur_mb->u1_mb_type & D_FLD_MB) >> 7; 8208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_cur_fld &= 1; 8218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(i2_mb_x) 8228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb = ps_cur_mb - 2; 8248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_left_fld = (ps_left_mb->u1_mb_type & D_FLD_MB) 8258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S >> 7; 8268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 8288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb = NULL; 8308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_left_fld = u1_cur_fld; 8318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!u1_first_row) 8338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb = ps_cur_mb - (u2_image_wd_mb << 1); 8358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 8378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb = NULL; 8398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_row_shift_y = 0, u1_row_shift_uv = 0; 8438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!u1_cur_fld) 8448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb = ps_cur_mb - 1; 8468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_top_fld = (ps_top_mb->u1_mb_type & D_FLD_MB) 8478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S >> 7; 8488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_row_shift_y = 4; 8498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_row_shift_uv = 3; 8508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_y += i4_wd_y << u1_row_shift_y; 8528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_u += 8538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (i4_wd_uv << u1_row_shift_uv); 8548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_v += i4_wd_uv << u1_row_shift_uv; 8558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* point to A if top else A+1 */ 8588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_left_fld ^ u1_cur_fld) 8598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb--; 8608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /********************************************************/ 8628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* if top MB and MB AFF and cur MB is frame and top is */ 8638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* field, then one extra top edge needs to be deblocked */ 8648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /********************************************************/ 8658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_extra_top_edge = 0; 8668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_deb_mode & MB_DISABLE_LEFT_EDGE) 8688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb = NULL; 8698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_deb_mode & MB_DISABLE_TOP_EDGE) 8708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb = NULL; 8718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_deblock_mb_mbaff(ps_dec, ps_tfr_cxt, 8738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cb_qp_idx_ofst, 8748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 8758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_y, i4_wd_uv, ps_top_mb, 8768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_left_mb, u1_cur_fld, 8778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_extra_top_edge); 8788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb++; 8818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i2_mb_x++; 8828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_deb_y += 16; 8848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_deb_u += 8 * YUV420SP_FACTOR; 8858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_deb_v += 8; 8868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S while(u2_image_wd_mb > i2_mb_x); 8898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_deb_y += ps_tfr_cxt->u4_y_inc; 8918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_deb_u += ps_tfr_cxt->u4_uv_inc; 8928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_deb_v += ps_tfr_cxt->u4_uv_inc; 8938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i2_mb_x = 0; 8958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i2_mb_y -= 2; 8968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_first_row = 0; 8988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 9008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 9018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 9038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //Padd the Picture 9048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //Horizontal Padd 9058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_horz_pad) 9078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 9088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u1_field_pic_flag = ps_dec->ps_cur_slice->u1_field_pic_flag; 9098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_left_luma(ps_tfr_cxt->pu1_src_y + 4, 9108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y << u1_field_pic_flag, 9118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_pic_ht >> u1_field_pic_flag, 9128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_Y_H); 9138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_right_luma( 9148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_y + 4 9158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (ps_dec->u2_frm_wd_in_mbs << 4), 9168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y << u1_field_pic_flag, 9178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_pic_ht >> u1_field_pic_flag, PAD_LEN_Y_H); 9188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_left_chroma(ps_tfr_cxt->pu1_src_u + 4, 9208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv << u1_field_pic_flag, 9218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (ps_dec->u2_pic_ht / 2) >> u1_field_pic_flag, 9228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_UV_H * YUV420SP_FACTOR); 9238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_right_chroma( 9248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_u + 4 9258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (ps_dec->u2_frm_wd_in_mbs << 4), 9268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv << u1_field_pic_flag, 9278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (ps_dec->u2_pic_ht / 2) >> u1_field_pic_flag, 9288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_UV_H * YUV420SP_FACTOR); 9298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 9318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S//Vertical Padd Top 9338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_vert_pad_top) 9348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 9358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_top(ps_dec->ps_cur_pic->pu1_buf1 - PAD_LEN_Y_H, 9368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y, ps_dec->u2_frm_wd_y, 9378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_y_v); 9388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_top( 9398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->ps_cur_pic->pu1_buf2 9408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S - PAD_LEN_UV_H * YUV420SP_FACTOR, 9418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv, ps_dec->u2_frm_wd_uv, 9428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_cr_v); 9438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_vert_pad_top = 0; 9448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 9458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S//Vertical Padd Bottom 9478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_vert_pad_bot) 9488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 9498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_buf; 9518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_dec->ps_cur_pic->pu1_buf1 - PAD_LEN_Y_H; 9528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf += ps_dec->u2_pic_ht * ps_dec->u2_frm_wd_y; 9538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_bottom(pu1_buf, ps_dec->u2_frm_wd_y, ps_dec->u2_frm_wd_y, 9548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_y_v); 9558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_dec->ps_cur_pic->pu1_buf2 - PAD_LEN_UV_H * YUV420SP_FACTOR; 9568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf += (ps_dec->u2_pic_ht >> 1) * ps_dec->u2_frm_wd_uv; 9578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_bottom(pu1_buf, ps_dec->u2_frm_wd_uv, 9598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv, 9608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_cr_v); 9618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 9638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 9648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 9668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 9678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : ih264d_deblock_picture_non_mbaff */ 9688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 9698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : This function carries out deblocking on a whole picture */ 9708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* without MBAFF */ 9718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 9728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : <What inputs does the function take?> */ 9738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : This functions calls deblock MB in the MB increment order*/ 9748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 9758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Produces the deblocked picture */ 9768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : None */ 9778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 9788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 9798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 9808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes (Describe the changes made) */ 9818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 17 02 2005 NS Creation */ 9828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 14 06 2005 SWRN clean-up */ 9838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 9848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_picture_non_mbaff(dec_struct_t * ps_dec) 9868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 9878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t *ps_cur_mb; 9888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_vert_pad_top = 1; 9908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_deb_mode; 9928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_wd_y, i4_wd_uv; 9938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_field_pic_flag = ps_dec->ps_cur_slice->u1_field_pic_flag; /*< Field u4_flag */ 9958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_bottom_field_flag = ps_dec->ps_cur_slice->u1_bottom_field_flag; /*< Bottom field u4_flag */ 9968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /**************************************************/ 9988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* one time loads from ps_dec which will be used */ 9998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* frequently throughout the deblocking procedure */ 10008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /**************************************************/ 10018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pad_mgr_t * ps_pad_mgr = &ps_dec->s_pad_mgr; 10028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t s_tfr_ctxt; 10038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt = &s_tfr_ctxt; // = &ps_dec->s_tran_addrecon; 10048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_wd_mb = ps_dec->u2_frm_wd_in_mbs; 10068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_ht_mb = ps_dec->u2_frm_ht_in_mbs; 10078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst = ps_dec->ps_cur_pps->i1_chroma_qp_index_offset; 10088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst = 10098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->ps_cur_pps->i1_second_chroma_qp_index_offset; 10108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Set up Parameter for DMA transfer */ 10128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_init_deblk_tfr_ctxt(ps_dec, ps_pad_mgr, ps_tfr_cxt, u2_image_wd_mb, 10138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 0); 10148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Pic level Initialisations */ 10168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1017caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S 10188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_y = ps_dec->u2_frm_wd_y << u1_field_pic_flag; 10208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_uv = ps_dec->u2_frm_wd_uv << u1_field_pic_flag; 10218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Initial filling of the buffers with deblocking data */ 10228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb = ps_dec->ps_deblk_pic; 10248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_dec->u4_app_disable_deblk_frm == 0) 10268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1027caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(ps_dec->ps_cur_sps->u1_mb_aff_flag == 1) 10288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1029caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S while( ps_dec->u4_deblk_mb_y < u2_image_ht_mb) 10308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1031caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ih264d_deblock_mb_nonmbaff(ps_dec, ps_tfr_cxt, 1032caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cb_qp_idx_ofst, 1033caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cr_qp_idx_ofst, 1034caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i4_wd_y, i4_wd_uv); 1035caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ps_cur_mb++; 10368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //Padd the Picture 10428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //Horizontal Padd 10438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_horz_pad) 10448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 10458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u1_field_pic_flag = ps_dec->ps_cur_slice->u1_field_pic_flag; 10468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_left_luma(ps_tfr_cxt->pu1_src_y + 4, 10478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y << u1_field_pic_flag, 10488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_pic_ht >> u1_field_pic_flag, 10498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_Y_H); 10508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_right_luma( 10518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_y + 4 10528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (ps_dec->u2_frm_wd_in_mbs << 4), 10538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y << u1_field_pic_flag, 10548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_pic_ht >> u1_field_pic_flag, PAD_LEN_Y_H); 10558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_left_chroma(ps_tfr_cxt->pu1_src_u + 4, 10578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv << u1_field_pic_flag, 10588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (ps_dec->u2_pic_ht / 2) >> u1_field_pic_flag, 10598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_UV_H * YUV420SP_FACTOR); 10608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_right_chroma( 10618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_u + 4 10628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (ps_dec->u2_frm_wd_in_mbs << 4), 10638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv << u1_field_pic_flag, 10648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (ps_dec->u2_pic_ht / 2) >> u1_field_pic_flag, 10658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_UV_H * YUV420SP_FACTOR); 10668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S//Vertical Padd Top 10708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_vert_pad_top) 10718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 10728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_top(ps_dec->ps_cur_pic->pu1_buf1 - PAD_LEN_Y_H, 10738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y, ps_dec->u2_frm_wd_y, 10748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_y_v); 10758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_top( 10768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->ps_cur_pic->pu1_buf2 10778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S - PAD_LEN_UV_H * YUV420SP_FACTOR, 10788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv, ps_dec->u2_frm_wd_uv, 10798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_cr_v); 10808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_vert_pad_top = 0; 10818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S//Vertical Padd Bottom 10848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_vert_pad_bot) 10858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 10868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_buf; 10888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_dec->ps_cur_pic->pu1_buf1 - PAD_LEN_Y_H; 10898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf += ps_dec->u2_pic_ht * ps_dec->u2_frm_wd_y; 10908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_bottom(pu1_buf, ps_dec->u2_frm_wd_y, ps_dec->u2_frm_wd_y, 10918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_y_v); 10928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_dec->ps_cur_pic->pu1_buf2 - PAD_LEN_UV_H * YUV420SP_FACTOR; 10938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf += (ps_dec->u2_pic_ht >> 1) * ps_dec->u2_frm_wd_uv; 10948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_bottom(pu1_buf, ps_dec->u2_frm_wd_uv, 10968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv, 10978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_cr_v); 10988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 11018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_picture_progressive(dec_struct_t * ps_dec) 11038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 11048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t *ps_cur_mb; 11058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_vert_pad_top = 1; 1107caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S UWORD8 u1_mbs_next; 11088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_deb_mode; 11098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_wd_y, i4_wd_uv; 11108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /**************************************************/ 11138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* one time loads from ps_dec which will be used */ 11148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* frequently throughout the deblocking procedure */ 11158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /**************************************************/ 11168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pad_mgr_t * ps_pad_mgr = &ps_dec->s_pad_mgr; 11178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t s_tfr_ctxt; 11198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt = &s_tfr_ctxt; // = &ps_dec->s_tran_addrecon; 11208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_wd_mb = ps_dec->u2_frm_wd_in_mbs; 11218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_ht_mb = ps_dec->u2_frm_ht_in_mbs; 11228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mbaff = ps_dec->ps_cur_slice->u1_mbaff_frame_flag; 11238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst = ps_dec->ps_cur_pps->i1_chroma_qp_index_offset; 11258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst = 11268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->ps_cur_pps->i1_second_chroma_qp_index_offset; 11278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Set up Parameter for deblocking */ 11298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_init_deblk_tfr_ctxt(ps_dec, ps_pad_mgr, ps_tfr_cxt, u2_image_wd_mb, 11308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 0); 11318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Pic level Initialisations */ 11338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_y = ps_dec->u2_frm_wd_y; 11358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_wd_uv = ps_dec->u2_frm_wd_uv; 11368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Initial filling of the buffers with deblocking data */ 11378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb = ps_dec->ps_deblk_pic; 11388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_dec->u4_app_disable_deblk_frm == 0) 11408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1141caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S if(ps_dec->ps_cur_sps->u1_mb_aff_flag == 1) 11428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1143caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S while( ps_dec->u4_deblk_mb_y < u2_image_ht_mb) 11448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1145caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S ih264d_deblock_mb_nonmbaff(ps_dec, ps_tfr_cxt, 1146caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cb_qp_idx_ofst, 1147caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i1_cr_qp_idx_ofst, 1148caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S i4_wd_y, i4_wd_uv); 11498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb++; 11508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //Padd the Picture 11568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //Horizontal Padd 11578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_horz_pad) 11588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 11598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u1_field_pic_flag = ps_dec->ps_cur_slice->u1_field_pic_flag; 11608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_left_luma(ps_tfr_cxt->pu1_src_y + 4, 11618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y << u1_field_pic_flag, 11628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_pic_ht >> u1_field_pic_flag, 11638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_Y_H); 11648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_right_luma( 11658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_y + 4 11668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (ps_dec->u2_frm_wd_in_mbs << 4), 11678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y << u1_field_pic_flag, 11688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_pic_ht >> u1_field_pic_flag, PAD_LEN_Y_H); 11698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_left_chroma(ps_tfr_cxt->pu1_src_u + 4, 11718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv << u1_field_pic_flag, 11728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (ps_dec->u2_pic_ht / 2) >> u1_field_pic_flag, 11738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_UV_H * YUV420SP_FACTOR); 11748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_right_chroma( 11758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_src_u + 4 11768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (ps_dec->u2_frm_wd_in_mbs << 4), 11778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv << u1_field_pic_flag, 11788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (ps_dec->u2_pic_ht / 2) >> u1_field_pic_flag, 11798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PAD_LEN_UV_H * YUV420SP_FACTOR); 11808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S//Vertical Padd Top 11848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_vert_pad_top) 11858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 11868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_top(ps_dec->ps_cur_pic->pu1_buf1 - PAD_LEN_Y_H, 11878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_y, ps_dec->u2_frm_wd_y, 11888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_y_v); 11898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_top( 11908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->ps_cur_pic->pu1_buf2 11918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S - PAD_LEN_UV_H * YUV420SP_FACTOR, 11928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv, ps_dec->u2_frm_wd_uv, 11938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_cr_v); 11948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S//Vertical Padd Bottom 11988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_pad_mgr->u1_vert_pad_bot) 11998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 12008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_buf; 12028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_dec->ps_cur_pic->pu1_buf1 - PAD_LEN_Y_H; 12038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf += ps_dec->u2_pic_ht * ps_dec->u2_frm_wd_y; 12048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_bottom(pu1_buf, ps_dec->u2_frm_wd_y, ps_dec->u2_frm_wd_y, 12058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_y_v); 12068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_dec->ps_cur_pic->pu1_buf2 - PAD_LEN_UV_H * YUV420SP_FACTOR; 12078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf += (ps_dec->u2_pic_ht >> 1) * ps_dec->u2_frm_wd_uv; 12088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_pad_bottom(pu1_buf, ps_dec->u2_frm_wd_uv, 12108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->u2_frm_wd_uv, 12118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_pad_mgr->u1_pad_len_cr_v); 12128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 12148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 12158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*! 12178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 12188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \if Function name : ih264d_set_deblocking_parameters \endif 12198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 12208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief 12218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Sets the deblocking parameters of the macroblock 12228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 12238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \return 12248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 0 on Success and Error code otherwise 12258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 12268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \note 12278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Given the neighbour availablity information, and the deblocking 12288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * parameters of the slice,this function will set the deblocking 12298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * mode of the macroblock. 12308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 12318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 12328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD8 ih264d_set_deblocking_parameters(deblk_mb_t * ps_cur_mb, 12348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_slice_params_t * ps_slice, 12358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mb_ngbr_availablity, 12368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mb_field_decoding_flag) 12378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 12388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*------------------------------------------------------------------*/ 12398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Set the deblocking parameters */ 12408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*------------------------------------------------------------------*/ 12418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->i1_slice_alpha_c0_offset = ps_slice->i1_slice_alpha_c0_offset; 12428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->i1_slice_beta_offset = ps_slice->i1_slice_beta_offset; 12438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->u1_mb_type = (u1_mb_field_decoding_flag << 7); 12448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S switch(ps_slice->u1_disable_dblk_filter_idc) 12468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 12478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case DBLK_ENABLED: 12488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->u1_deblocking_mode = MB_ENABLE_FILTERING; 12498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 12508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case DBLK_DISABLED: 12518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->u1_deblocking_mode = MB_DISABLE_FILTERING; 12528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 12538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case SLICE_BOUNDARY_DBLK_DISABLED: 12548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 12558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->u1_deblocking_mode = MB_ENABLE_FILTERING; 12568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!(u1_mb_ngbr_availablity & LEFT_MB_AVAILABLE_MASK)) 12578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->u1_deblocking_mode |= MB_DISABLE_LEFT_EDGE; 12588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(!(u1_mb_ngbr_availablity & TOP_MB_AVAILABLE_MASK)) 12598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_cur_mb->u1_deblocking_mode |= MB_DISABLE_TOP_EDGE; 12608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 12618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 12628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 12638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return (0); 12658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 12668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_copy_intra_pred_line(dec_struct_t *ps_dec, 12688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_mb_info_t *ps_cur_mb_info, 12698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 nmb_index) 12708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 12718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_mb_last_row, u1_mb_field_decoding_flag; 12728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_recWidth, u4_recwidth_cr; 12738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u1_mb_field_decoding_flag = ps_cur_mb_info->u1_mb_field_decodingflag; 12758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_recWidth = ps_dec->u2_frm_wd_y << u1_mb_field_decoding_flag; 12778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_recwidth_cr = ps_dec->u2_frm_wd_uv << u1_mb_field_decoding_flag; 12788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1279caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_mb_last_row = ps_dec->ps_frame_buf_ip_recon->pu1_dest_y 12808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (u4_recWidth * (MB_SIZE - 1)); 12818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_mb_last_row += MB_SIZE * nmb_index; 12828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEMCPY_16BYTES(ps_dec->pu1_cur_y_intra_pred_line, pu1_mb_last_row); 12838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1284caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_mb_last_row = ps_dec->ps_frame_buf_ip_recon->pu1_dest_u 12858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (u4_recwidth_cr * (BLK8x8SIZE - 1)); 12868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_mb_last_row += BLK8x8SIZE * nmb_index * YUV420SP_FACTOR; 12878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEMCPY_16BYTES(ps_dec->pu1_cur_u_intra_pred_line, pu1_mb_last_row); 12898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_y_intra_pred_line = ps_dec->pu1_cur_y_intra_pred_line_base 12918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (MB_SIZE * (ps_cur_mb_info->u2_mbx + 1)); 12928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_u_intra_pred_line = ps_dec->pu1_cur_u_intra_pred_line_base 12938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (BLK8x8SIZE * (ps_cur_mb_info->u2_mbx + 1)) 12948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * YUV420SP_FACTOR; 12958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_v_intra_pred_line = ps_dec->pu1_cur_v_intra_pred_line_base 12968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + (BLK8x8SIZE * (ps_cur_mb_info->u2_mbx + 1)); 12978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_cur_mb_info->u2_mbx == (ps_dec->u2_frm_wd_in_mbs - 1)) 12998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 13008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8* pu1_temp; 13018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_y_intra_pred_line = 13038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_y_intra_pred_line_base; 13048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_u_intra_pred_line = 13058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_u_intra_pred_line_base; 13068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_v_intra_pred_line = 13078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_v_intra_pred_line_base; 13088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*swap current and previous rows*/ 13108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_temp = ps_dec->pu1_cur_y_intra_pred_line; 13118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_y_intra_pred_line = ps_dec->pu1_prev_y_intra_pred_line; 13128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_prev_y_intra_pred_line = pu1_temp; 13138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_temp = ps_dec->pu1_cur_u_intra_pred_line; 13158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_u_intra_pred_line = ps_dec->pu1_prev_u_intra_pred_line; 13168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_prev_u_intra_pred_line = pu1_temp; 13178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_temp = ps_dec->pu1_cur_v_intra_pred_line; 13198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_v_intra_pred_line = ps_dec->pu1_prev_v_intra_pred_line; 13208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_prev_v_intra_pred_line = pu1_temp; 13218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_y_intra_pred_line_base = 13238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_y_intra_pred_line; 13248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_u_intra_pred_line_base = 13258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_u_intra_pred_line; 13268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_v_intra_pred_line_base = 13278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pu1_cur_v_intra_pred_line; 13288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 13348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 13368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_filter_boundary_left_mbaff(dec_struct_t *ps_dec, 13398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt, 13408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst, 13418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst, 13428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_cur_mb, 1343caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_y, 1344caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_uv, 13458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_left_mb, /* Neighbouring MB parameters */ 13468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 pu4_bs_tab[], /* pointer to the BsTable array */ 13478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_cur_fld) 13488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 13498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_y, *pu1_u, *pu1_v; 1350caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S UWORD8 uc_tmp, qp_avg; 13518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_u = 0, beta_u = 0, alpha_v = 0, beta_v = 0; 13528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_y = 0, beta_y = 0; 13538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_u, idx_a_u, idx_b_v, idx_a_v; 13558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_y, idx_a_y; 13568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_bs_val; 13588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_u, *pu1_cliptab_v, *pu1_cliptab_y; 13608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_double_cl = !ps_cur_mb->u1_single_call; 13628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_a = ps_cur_mb->i1_slice_alpha_c0_offset; 13638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_b = ps_cur_mb->i1_slice_beta_offset; 13648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PROFILE_DISABLE_DEBLK() 13668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_y = ps_tfr_cxt->pu1_mb_y; 13688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_u = ps_tfr_cxt->pu1_mb_u; 13698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_v = ps_tfr_cxt->pu1_mb_v; 13708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* LUMA values */ 13728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Deblock rounding change */ 13738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S uc_tmp = (UWORD8)((ps_left_mb->u1_mb_qp + ps_cur_mb->u1_mb_qp + 1) >> 1); 1374caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = uc_tmp; 1375caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_a_y = qp_avg + ofst_a; 13768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y = gau1_ih264d_alpha_table[12 + idx_a_y]; 1377caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_y = qp_avg + ofst_b; 13788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y = gau1_ih264d_beta_table[12 + idx_b_y]; 13798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Chroma cb values */ 13818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1382caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 1383caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_left_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 1384caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 1385caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 1386caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 13878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 13888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_u = qp_avg + ofst_a; 13898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 13908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_u = qp_avg + ofst_b; 13918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 13928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Chroma cr values */ 13948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1395caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 1396caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_left_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 1397caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 1398caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 1399caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 14008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_v = qp_avg + ofst_a; 14028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 14038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v = qp_avg + ofst_b; 14048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 14058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_double_cl == 0) 14078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[4]; 14098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0x04040404 == u4_bs_val) 14118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bs4(pu1_y, i4_strd_y, alpha_y, beta_y); 14138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bs4(pu1_u, i4_strd_uv, alpha_u, 14148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v); 14158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 14188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs_val) 14208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 14238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + idx_a_y]; 14248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 14258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + idx_a_u]; 14268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 14278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S + idx_a_v]; 14288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y, i4_strd_y, alpha_y, 14308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y, u4_bs_val, 14318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y); 14328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4(pu1_u, i4_strd_uv, alpha_u, 14338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v, 14348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, pu1_cliptab_u, 14358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 14368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 14428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_y <<= (!u1_cur_fld); 14458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[4]; 14468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_uv <<= (!u1_cur_fld); 14478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0x04040404 == u4_bs_val) 14498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bs4_mbaff(pu1_y, i4_strd_y, alpha_y, 14518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y); 14528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bs4_mbaff(pu1_u, i4_strd_uv, alpha_u, 14538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v); 14548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 14568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs_val) 14588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1460caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; 1461caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; 1462caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; 14638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4_mbaff(pu1_y, i4_strd_y, 14648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y, beta_y, 14658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 14668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y); 14678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4_mbaff(pu1_u, i4_strd_uv, 14688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u, beta_u, 14698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v, 14708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 14718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u, 14728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 14738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_shift = (i4_strd_y >> 1) << (u1_cur_fld ? 4 : 0); 14808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_y += u2_shift; 14818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u2_shift = (i4_strd_uv >> 1) << (u1_cur_fld ? 3 : 0); 14828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_u += u2_shift; 14838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_v += u2_shift; 14848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S uc_tmp = (((ps_left_mb + 1)->u1_mb_qp + ps_cur_mb->u1_mb_qp + 1) >> 1); 1487caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = uc_tmp; 1488caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_a_y = qp_avg + ofst_a; 14898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y = gau1_ih264d_alpha_table[12 + idx_a_y]; 1490caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_y = qp_avg + ofst_b; 14918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y = gau1_ih264d_beta_table[12 + idx_b_y]; 14928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[9]; 14938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1495caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 1496caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = ((ps_left_mb + 1)->u1_mb_qp + i1_cb_qp_idx_ofst); 1497caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 1498caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 1499caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 15008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_u = qp_avg + ofst_a; 15028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 15038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_u = qp_avg + ofst_b; 15048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 15058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val = pu4_bs_tab[9]; 15068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1507caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 1508caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = ((ps_left_mb + 1)->u1_mb_qp + i1_cr_qp_idx_ofst); 1509caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 1510caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 1511caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 15128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_v = qp_avg + ofst_a; 15148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 15158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v = qp_avg + ofst_b; 15168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 15178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0x04040404 == u4_bs_val) 15198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bs4_mbaff(pu1_y, i4_strd_y, alpha_y, 15218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y); 15228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bs4_mbaff(pu1_u, i4_strd_uv, alpha_u, 15238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v); 15248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 15278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs_val) 15298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1531caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; 1532caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; 1533caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; 15348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4_mbaff(pu1_y, i4_strd_y, 15368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y, beta_y, 15378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 15388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y); 15398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4_mbaff(pu1_u, i4_strd_uv, 15408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u, beta_u, 15418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v, 15428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs_val, 15438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u, 15448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 15458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 15518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_filter_boundary_topmbaff(dec_struct_t *ps_dec, 15538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt, 15548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst, 15558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst, 15568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_cur_mb, 1557caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_y, 1558caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 i4_strd_uv, 15598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_top_mb, 15608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_bs) 15618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 15628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_y, *pu1_u; 15638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_u = 0, beta_u = 0, alpha_v = 0, beta_v = 0; 15648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha_y = 0, beta_y = 0; 15658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 qp_avg; 15668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_u, idx_a_u, idx_b_v, idx_a_v; 15678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_b_y, idx_a_y; 15688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 uc_tmp; 15698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_u, *pu1_cliptab_v, *pu1_cliptab_y; 15718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_a = ps_cur_mb->i1_slice_alpha_c0_offset; 15728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_b = ps_cur_mb->i1_slice_beta_offset; 15738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* LUMA values */ 15758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Deblock rounding change */ 15768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S uc_tmp = ((ps_top_mb->u1_mb_qp + ps_cur_mb->u1_mb_qp + 1) >> 1); 1577caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)uc_tmp; 1578caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_a_y = qp_avg + ofst_a; 15798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_y = gau1_ih264d_alpha_table[12 + idx_a_y]; 1580caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S idx_b_y = qp_avg + ofst_b; 15818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_y = gau1_ih264d_beta_table[12 + idx_b_y]; 15828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_y = ps_tfr_cxt->pu1_mb_y; 15838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* CHROMA cb values */ 15858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1586caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 1587caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_top_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 1588caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cb_qp_idx_ofst); 1589caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 1590caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 15918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_u = qp_avg + ofst_a; 15948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 15958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_u = qp_avg + ofst_b; 15968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 15978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* CHROMA cr values */ 15988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1599caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S WORD32 mb_qp1, mb_qp2; 1600caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp1 = (ps_top_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 1601caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S mb_qp2 = (ps_cur_mb->u1_mb_qp + i1_cr_qp_idx_ofst); 1602caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S qp_avg = (UWORD8)((gau1_ih264d_qp_scale_cr[12 + mb_qp1] 1603caab4fe0688e7c4b023d979b617fb16a275614f2Hamsalekha S + gau1_ih264d_qp_scale_cr[12 + mb_qp2] + 1) >> 1); 16048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_v = qp_avg + ofst_a; 16078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 16088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v = qp_avg + ofst_b; 16098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 16108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_u = ps_tfr_cxt->pu1_mb_u; 16118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs == 0x04040404) 16138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Code specific to the assembly module */ 16158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_horz_bs4(pu1_y, i4_strd_y, alpha_y, beta_y); 16168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_horz_bs4(pu1_u, i4_strd_uv, alpha_u, beta_u, 16178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v); 16188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 16218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 16238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; 16268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u = 16278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; 16288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v = 16298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; 16308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_horz_bslt4(pu1_y, i4_strd_y, alpha_y, beta_y, 16328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs, pu1_cliptab_y); 16338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_horz_bslt4(pu1_u, i4_strd_uv, alpha_u, 16348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u, alpha_v, beta_v, 16358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs, pu1_cliptab_u, 16368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v); 16378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 16428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_mb_mbaff(dec_struct_t *ps_dec, 16448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * ps_tfr_cxt, 16458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cb_qp_idx_ofst, 16468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD8 i1_cr_qp_idx_ofst, 16478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_cur_mb, 16488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_y, 16498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_uv, 16508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_top_mb, 16518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * ps_left_mb, 16528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_cur_fld, 16538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_extra_top_edge) 16548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 16558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_y, *pu1_u; 16568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_bs; 16578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S// WORD8 edge; 16588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 alpha, beta, alpha_u, beta_u, alpha_v, beta_v; 16598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_u; 16618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_v; 16628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_cliptab_y; 16638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 * pu4_bs_tab = ps_cur_mb->u4_bs_table; 16658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 idx_a_y, idx_a_u, idx_a_v; 16668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Return from here to switch off deblocking */ 16678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PROFILE_DISABLE_DEBLK() 16688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_y <<= u1_cur_fld; 16708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_uv <<= u1_cur_fld; 16718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 16728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Filter wrt Left edge */ 16738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* except */ 16748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* - Left Egde is Picture Boundary */ 16758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* - Left Egde is part of Slice Boundary and Deblocking */ 16768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* parameters of slice disable Filtering of Slice Boundary Edges*/ 16778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 16788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_left_mb) 16798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_filter_boundary_left_mbaff(ps_dec, ps_tfr_cxt, i1_cb_qp_idx_ofst, 16808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 16818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_y, i4_strd_uv, ps_left_mb, 16828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu4_bs_tab, u1_cur_fld); 16838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 16858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Filter wrt Other Vertical Edges */ 16868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 16878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 ofst_a, ofst_b, idx_b_y, idx_b_u, 16898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v; 16908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 qp_avg, qp_avg_u, qp_avg_v; 16918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ofst_a = ps_cur_mb->i1_slice_alpha_c0_offset; 16928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ofst_b = ps_cur_mb->i1_slice_beta_offset; 16938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S qp_avg = ps_cur_mb->u1_mb_qp; 16948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_y = qp_avg + ofst_a; 16958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha = gau1_ih264d_alpha_table[12 + idx_a_y]; 16968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_y = qp_avg + ofst_b; 16978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta = gau1_ih264d_beta_table[12 + idx_b_y]; 16988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* CHROMA Cb values */ 17008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S qp_avg_u = (qp_avg + i1_cb_qp_idx_ofst); 17018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S qp_avg_u = gau1_ih264d_qp_scale_cr[12 + qp_avg_u]; 17028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_u = qp_avg_u + ofst_a; 17038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_u = gau1_ih264d_alpha_table[12 + idx_a_u]; 17048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_u = qp_avg_u + ofst_b; 17058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_u = gau1_ih264d_beta_table[12 + idx_b_u]; 17068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* CHROMA Cr values */ 17078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S qp_avg_v = (qp_avg + i1_cr_qp_idx_ofst); 17088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S qp_avg_v = gau1_ih264d_qp_scale_cr[12 + qp_avg_v]; 17098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_a_v = qp_avg_v + ofst_a; 17108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v = gau1_ih264d_alpha_table[12 + idx_a_v]; 17118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S idx_b_v = qp_avg_v + ofst_b; 17128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S beta_v = gau1_ih264d_beta_table[12 + idx_b_v]; 17138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //STARTL4_FILTER_VERT; 17168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_y = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_y]; //this for Luma 17188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_u]; //this for chroma 17198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_v = (UWORD8 *)&gau1_ih264d_clip_table[12 + idx_a_v]; //this for chroma 17208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //edge=1 17228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs = pu4_bs_tab[5]; 17258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_y = ps_tfr_cxt->pu1_mb_y; 17268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_u = ps_tfr_cxt->pu1_mb_u; 17278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 17298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y + 4, i4_strd_y, alpha, beta, 17328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs, pu1_cliptab_y); 17338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //edge=2 17368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs = pu4_bs_tab[6]; 17388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 17398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y + 8, i4_strd_y, alpha, beta, 17428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs, pu1_cliptab_y); 17438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_vert_bslt4(pu1_u + 4 * YUV420SP_FACTOR, 17448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_uv, alpha_u, beta_u, 17458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v, u4_bs, 17468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u, pu1_cliptab_v); 17478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //edge=3 17498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs = pu4_bs_tab[7]; 17518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 17528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_vert_bslt4(pu1_y + 12, i4_strd_y, alpha, beta, 17558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs, pu1_cliptab_y); 17568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 17608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Filter wrt Top edge */ 17618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* except */ 17628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* - Top Egde is Picture Boundary */ 17638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* - Top Egde is part of Slice Boundary and Deblocking */ 17648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* parameters of slice disable Filtering of Slice Boundary Edges*/ 17658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 17668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_top_mb) 17678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** if top MB and MB AFF and cur MB is frame and top is field then */ 17698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* one extra top edge needs to be deblocked */ 17708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u1_extra_top_edge) 17718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_filter_boundary_topmbaff(ps_dec, ps_tfr_cxt, 17738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cb_qp_idx_ofst, 17748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 17758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD16)(i4_strd_y << 1), 17768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD16)(i4_strd_uv << 1), 17778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb - 1, pu4_bs_tab[8]); 17788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_y += i4_strd_y; 17798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_u += i4_strd_uv; 17808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_v += i4_strd_uv; 17818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_filter_boundary_topmbaff(ps_dec, ps_tfr_cxt, 17838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cb_qp_idx_ofst, 17848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 17858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD16)(i4_strd_y << 1), 17868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (UWORD16)(i4_strd_uv << 1), 17878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_top_mb, pu4_bs_tab[0]); 17888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_y -= i4_strd_y; 17898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_u -= i4_strd_uv; 17908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_tfr_cxt->pu1_mb_v -= i4_strd_uv; 17918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 17938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264d_filter_boundary_topmbaff(ps_dec, ps_tfr_cxt, 17958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cb_qp_idx_ofst, 17968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i1_cr_qp_idx_ofst, ps_cur_mb, 17978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_y, i4_strd_uv, ps_top_mb, 17988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu4_bs_tab[0]); 17998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 18038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Filter wrt Other Horizontal Edges */ 18048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*--------------------------------------------------------------------*/ 18058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //edge1 18078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs = pu4_bs_tab[1]; 18088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 18108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_horz_bslt4(pu1_y + (i4_strd_y << 2), i4_strd_y, 18128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha, beta, u4_bs, pu1_cliptab_y); 18138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //edge2 18168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs = pu4_bs_tab[2]; 18178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 18198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_horz_bslt4(pu1_y + (i4_strd_y << 3), i4_strd_y, 18228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha, beta, u4_bs, pu1_cliptab_y); 18238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_chroma_horz_bslt4(pu1_u + (i4_strd_uv << 2), 18248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_uv, alpha_u, beta_u, 18258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S alpha_v, beta_v, u4_bs, 18268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_cliptab_u, pu1_cliptab_v); 18278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S //edge3 18308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_bs = pu4_bs_tab[3]; 18318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(u4_bs) 18328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_dec->pf_deblk_luma_horz_bslt4( 18358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (pu1_y + (i4_strd_y << 3) + (i4_strd_y << 2)), 18368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i4_strd_y, alpha, beta, u4_bs, pu1_cliptab_y); 18378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 18418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1842