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