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 "ih264_typedefs.h"
228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_macros.h"
238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_platform_macros.h"
248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_structs.h"
258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_defs.h"
268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_deblocking.h"
278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "string.h"
288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_debug.h"
298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_tables.h"
308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SUWORD16 ih264d_update_csbp_8x8(UWORD16 u2_luma_csbp)
328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 u2_mod_csbp;
348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u2_mod_csbp = u2_luma_csbp;
368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u2_mod_csbp & 0x0033)
388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u2_mod_csbp |= 0x0033;
408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u2_mod_csbp & 0x00CC)
438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u2_mod_csbp |= 0x00CC;
458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u2_mod_csbp & 0x3300)
488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u2_mod_csbp |= 0x3300;
508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u2_mod_csbp & 0xCC00)
538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u2_mod_csbp |= 0xCC00;
558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    return u2_mod_csbp;
588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs2_horz_vert                                       */
638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (=2) for all horz  */
658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  and vert edges of current mb based on coded sub block    */
668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  pattern of current, top and left mb                      */
678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        :                                                          */
688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  pu4_bs : Base pointer of  BS table which gets updated    */
698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  u4_left_mb_csbp : left mb's coded sub block pattern      */
708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  u4_top_mb_csbp : top mb's coded sub block pattern        */
718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  u4_cur_mb_csbp : current mb's coded sub block pattern    */
728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    :                                                          */
758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              csbp for each 4x4 block in a mb is bit packet in reverse     */
778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              raster scan order for each mb as shown below:                */
788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0.                       */
798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              BS=2 for a 4x4 edge if any of adjacent blocks forming edge   */
818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              are coded. Keeping this in mind, bs=2 for all horz and vert  */
828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              edges can be derived using  a lookup table for each edge     */
838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              after "ORing" the csbp values as follows:                    */
848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              (C means current Mb, T means top mb and L means left mb)     */
858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              All Horz edges:                                              */
878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              15C|14C|13C|12C|11C|10C|9C|8C|7C|6C|5C|4C|3C |2C |1C |0C     */
888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  (or with)   11C|10C| 9C| 8C| 7C|6C |5C|4C|3C|2C|1C|0C|15T|14T|13T|12T    */
898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              -----BS[3]-----|----BS[2]----|---BS[1]---|----BS[0]-----|    */
908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              All Vert edges:                                              */
928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              15C|14C|13C|12C|11C|10C|9C| 8C|7C|6C|5C|4C|3C |2C |1C |0C    */
938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  (or with)   14C|13C|12C|15L|10C| 9C|8C|11L|6C|5C|4C|7L|2C |1C |0C |3L    */
948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*              Do 4x4 transpose of resulting pattern to get vertBS[4]-BS[7] */
958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CSBP_LEFT_BLOCK_MASK 0x1111
1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CSBP_RIGHT_BLOCK_MASK 0x8888
1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs2_horz_vert(UWORD32 *pu4_bs, /* Base pointer of BS table */
1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               WORD32 u4_left_mb_csbp, /* csbp of left mb */
1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               WORD32 u4_top_mb_csbp, /* csbp of top mb */
1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               WORD32 u4_cur_mb_csbp, /* csbp of current mb */
1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               const UWORD32 *pu4_packed_bs2, const UWORD16 *pu2_4x4_v2h_reorder)
1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*u4_nbr_horz_csbp=11C|10C|9C|8C|7C|6C|5C|4C|3C|2C|1C|0C|15T|14T|13T|12T */
1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_nbr_horz_csbp = (u4_cur_mb_csbp << 4) | (u4_top_mb_csbp >> 12);
1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_horz_bs2_dec = u4_cur_mb_csbp | u4_nbr_horz_csbp;
1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*u4_left_mb_masked_csbp = 15L|0|0|0|11L|0|0|0|7L|0|0|0|3L|0|0|0         */
1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_left_mb_masked_csbp = u4_left_mb_csbp & CSBP_RIGHT_BLOCK_MASK;
1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*u4_cur_mb_masked_csbp =14C|13C|12C|x|10C|9C|8C|x|6C|5C|4C|x|2C|1C|0C|x */
1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_cur_mb_masked_csbp = (u4_cur_mb_csbp << 1)
1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    & (~CSBP_LEFT_BLOCK_MASK);
1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*u4_nbr_vert_csbp=14C|13C|12C|15L|10C|9C|8C|11L|6C|5C|4C|7L|2C|1C|0C|3L */
1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_nbr_vert_csbp = (u4_cur_mb_masked_csbp)
1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    | (u4_left_mb_masked_csbp >> 3);
1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_vert_bs2_dec = u4_cur_mb_csbp | u4_nbr_vert_csbp;
1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_reordered_vert_bs2_dec, u4_temp;
1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Fill horz edges (0,1,2,3) boundary strengths 2 using look up table    */
1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[0] = pu4_packed_bs2[u4_horz_bs2_dec & 0xF];
1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[1] = pu4_packed_bs2[(u4_horz_bs2_dec >> 4) & 0xF];
1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[2] = pu4_packed_bs2[(u4_horz_bs2_dec >> 8) & 0xF];
1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[3] = pu4_packed_bs2[(u4_horz_bs2_dec >> 12) & 0xF];
1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Do 4x4 tranpose of u4_vert_bs2_dec by using look up table for reorder */
1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_reordered_vert_bs2_dec = pu2_4x4_v2h_reorder[u4_vert_bs2_dec & 0xF];
1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_temp = pu2_4x4_v2h_reorder[(u4_vert_bs2_dec >> 4) & 0xF];
1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_reordered_vert_bs2_dec |= (u4_temp << 1);
1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_temp = pu2_4x4_v2h_reorder[(u4_vert_bs2_dec >> 8) & 0xF];
1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_reordered_vert_bs2_dec |= (u4_temp << 2);
1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_temp = pu2_4x4_v2h_reorder[(u4_vert_bs2_dec >> 12) & 0xF];
1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_reordered_vert_bs2_dec |= (u4_temp << 3);
1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Fill vert edges (4,5,6,7) boundary strengths 2 using look up table    */
1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*************************************************************************/
1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[4] = pu4_packed_bs2[u4_reordered_vert_bs2_dec & 0xF];
1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[5] = pu4_packed_bs2[(u4_reordered_vert_bs2_dec >> 4) & 0xF];
1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[6] = pu4_packed_bs2[(u4_reordered_vert_bs2_dec >> 8) & 0xF];
1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[7] = pu4_packed_bs2[(u4_reordered_vert_bs2_dec >> 12) & 0xF];
1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs1_16x16mb_pslice                                  */
1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (=1) for those     */
1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  horz and vert mb edges of 16x16mb which are set to 0 by  */
1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  ih264d_fill_bs2_horz_vert. This function is used for p slices   */
1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        : <What inputs does the function take?>                    */
1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    : If any motion vector component of adjacent 4x4 blocks    */
1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  differs by more than 1 integer pel or if reference       */
1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  pictures are different, Bs is set to 1.                  */
1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_16x16mb_pslice(mv_pred_t *ps_cur_mv_pred,
1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    mv_pred_t *ps_top_mv_pred,
2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    void **ppv_map_ref_idx_to_poc,
2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    UWORD32 *pu4_bs_table, /* pointer to the BsTable array */
2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    mv_pred_t *ps_leftmost_mv_pred,
2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    neighbouradd_t *ps_left_addr,
2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    void **u4_pic_addrress, /* picture address for BS calc */
2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    WORD32 i4_ver_mvlimit)
2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_q_mv0, i2_q_mv1;
2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_p_mv0, i2_p_mv1;
2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_cur_pic_addr0, *pv_cur_pic_addr1;
2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_nbr_pic_addr0, *pv_nbr_pic_addr1;
2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void **ppv_map_ref_idx_to_poc_l0; //,*ppv_map_ref_idx_to_poc_l1;
2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 i;
2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bs_horz = pu4_bs_table[0];
2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bs_vert = pu4_bs_table[4];
2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l0 = ppv_map_ref_idx_to_poc;
2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    i2_q_mv0 = ps_cur_mv_pred->i2_mv[0];
2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    i2_q_mv1 = ps_cur_mv_pred->i2_mv[1];
2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pv_cur_pic_addr0 = ppv_map_ref_idx_to_poc_l0[ps_cur_mv_pred->i1_ref_frame[0]];
2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pv_cur_pic_addr1 = 0;
2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************/
2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Computing Bs for the top edge */
2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************/
2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(i = 0; i < 4; i++, ps_top_mv_pred++)
2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_idx = 24 - (i << 3);
2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* check if Bs is already set    */
2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(!((u4_bs_horz >> u4_idx) & 0xf))
2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /************************************************************/
2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If Bs is not set, use left edge and current edge mvs and */
2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* reference pictures addresses to evaluate Bs==1           */
2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /************************************************************/
2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs_temp1;
2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs;
2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If any motion vector component differs by more than 1 */
2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* integer pel or if reference pictures are different Bs */
2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* is set to 1. Note that this condition shall be met for*/
2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv0 = ps_top_mv_pred->i2_mv[0];
2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv1 = ps_top_mv_pred->i2_mv[1];
2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr0 = u4_pic_addrress[i & 2];
2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr1 = u4_pic_addrress[1 + (i & 2)];
2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_temp1 = ((ABS((i2_p_mv0 - i2_q_mv0)) >= 4) ||
2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           (ABS((i2_p_mv1 - i2_q_mv1)) >= i4_ver_mvlimit));
2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs = ((pv_cur_pic_addr0 != pv_nbr_pic_addr0)
2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || (pv_cur_pic_addr1 != pv_nbr_pic_addr1)
2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || u4_bs_temp1);
2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_horz |= (u4_bs << u4_idx);
2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[0] = u4_bs_horz;
2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /***********************************/
2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Computing Bs for the left edge  */
2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /***********************************/
2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(i = 0; i < 4; i++, ps_leftmost_mv_pred += 4)
2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_idx = 24 - (i << 3);
2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* check if Bs is already set    */
2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(!((u4_bs_vert >> u4_idx) & 0xf))
2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /****************************************************/
2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If Bs is not set, evalaute conditions for Bs=1   */
2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /****************************************************/
2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs_temp1;
2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs;
2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If any motion vector component differs by more than 1 */
2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* integer pel or if reference pictures are different Bs */
2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* is set to 1. Note that this condition shall be met for*/
2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv0 = ps_leftmost_mv_pred->i2_mv[0];
2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv1 = ps_leftmost_mv_pred->i2_mv[1];
2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr0 = ps_left_addr->u4_add[i & 2];
2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr1 = ps_left_addr->u4_add[1 + (i & 2)];
2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_temp1 =
2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ((ABS((i2_p_mv0 - i2_q_mv0))
2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            >= 4)
2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv1 - i2_q_mv1))
3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit));
3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs = ((pv_cur_pic_addr0 != pv_nbr_pic_addr0)
3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || (pv_cur_pic_addr1 != pv_nbr_pic_addr1)
3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || u4_bs_temp1);
3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_vert |= (u4_bs << u4_idx);
3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[4] = u4_bs_vert;
3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    return;
3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs1_non16x16mb_pslice                               */
3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (=1) for those     */
3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  horz and vert edges of non16x16mb which are set to 0 by  */
3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  ih264d_fill_bs2_horz_vert. This function is used for p slices   */
3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        : <What inputs does the function take?>                    */
3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    : If any motion vector component of adjacent 4x4 blocks    */
3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  differs by more than 1 integer pel or if reference       */
3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  pictures are different, Bs is set to 1.                  */
3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_non16x16mb_pslice(mv_pred_t *ps_cur_mv_pred,
3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       mv_pred_t *ps_top_mv_pred,
3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       void **ppv_map_ref_idx_to_poc,
3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD32 *pu4_bs_table, /* pointer to the BsTable array */
3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       mv_pred_t *ps_leftmost_mv_pred,
3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       neighbouradd_t *ps_left_addr,
3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       void **u4_pic_addrress,
3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 i4_ver_mvlimit)
3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 edge;
3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void **ppv_map_ref_idx_to_poc_l0; //,*ppv_map_ref_idx_to_poc_l1;
3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l0 = ppv_map_ref_idx_to_poc;
3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(edge = 0; edge < 4; edge++, ps_top_mv_pred = ps_cur_mv_pred - 4)
3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************************************************/
3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Each iteration of this loop fills the four BS values of one HORIZ */
3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* edge and one BS value for each of the four VERT edges.            */
3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************************************************/
3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i;
3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_vert_idx = 24 - (edge << 3);
3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_bs_horz = pu4_bs_table[edge];
3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        mv_pred_t *ps_left_mv_pred = ps_leftmost_mv_pred + (edge << 2);
3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(i = 0; i < 4; i++, ps_top_mv_pred++, ps_cur_mv_pred++)
3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD16 i2_cur_mv0, i2_cur_mv1;
3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 i1_cur_ref0;
3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void *pv_cur_pic_addr0, *pv_cur_pic_addr1 = 0;
3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void *pv_nbr_pic_addr0, *pv_nbr_pic_addr1;
3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /******************************************************/
3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Each iteration of this inner loop computes a HORIZ */
3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* and a VERT BS value for a 4x4 block                */
3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /******************************************************/
3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs_vert = (pu4_bs_table[i + 4] >> u4_vert_idx) & 0xf;
3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_horz_idx = 24 - (i << 3);
3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* check if vert Bs for this block is already set    */
3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(!u4_bs_vert)
3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                WORD16 i2_left_mv0, i2_left_mv1;
3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* If Bs is not set, use left edge and current edge mvs and */
3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* reference pictures addresses to evaluate Bs==1           */
3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv0 = ps_left_mv_pred->i2_mv[0];
3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv1 = ps_left_mv_pred->i2_mv[1];
3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv0 = ps_cur_mv_pred->i2_mv[0];
3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv1 = ps_cur_mv_pred->i2_mv[1];
3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref0 = ps_cur_mv_pred->i1_ref_frame[0];
3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pv_cur_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_cur_ref0];
4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(i)
4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    WORD8 i1_left_ref0 = ps_left_mv_pred->i1_ref_frame[0];
4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_left_ref0];
4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = 0;
4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = ps_left_addr->u4_add[edge & 2];
4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = ps_left_addr->u4_add[1 + (edge & 2)];
4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_bs_temp1;
4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* If any motion vector component differs by more than 1 */
4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* integer pel or if reference pictures are different Bs */
4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* is set to 1. Note that this condition shall be met for*/
4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_temp1 =
4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_left_mv0 - i2_cur_mv0))
4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv1
4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit));
4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_vert = ((pv_nbr_pic_addr0 != pv_cur_pic_addr0)
4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    || (pv_nbr_pic_addr1 != pv_cur_pic_addr1)
4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    || u4_bs_temp1);
4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pu4_bs_table[i + 4] |= (u4_bs_vert << u4_vert_idx);
4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* check if horz Bs for this block is already set    */
4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(!((u4_bs_horz >> u4_horz_idx) & 0xf))
4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                WORD16 i2_top_mv0, i2_top_mv1;
4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* If Bs is not set, use top edge and current edge mvs and  */
4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* reference pictures addresses to evaluate Bs==1           */
4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv0 = ps_cur_mv_pred->i2_mv[0];
4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv1 = ps_cur_mv_pred->i2_mv[1];
4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref0 = ps_cur_mv_pred->i1_ref_frame[0];
4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_top_mv0 = ps_top_mv_pred->i2_mv[0];
4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_top_mv1 = ps_top_mv_pred->i2_mv[1];
4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pv_cur_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_cur_ref0];
4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(edge)
4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    WORD8 i1_top_ref0 = ps_top_mv_pred->i1_ref_frame[0];
4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_top_ref0];
4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = 0;
4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = u4_pic_addrress[i & 2];
4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = u4_pic_addrress[1 + (i & 2)];
4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_bs_temp1;
4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_bs;
4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* If any motion vector component differs by more than 1 */
4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* integer pel or if reference pictures are different Bs */
4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* is set to 1. Note that this condition shall be met for*/
4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_temp1 =
4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_top_mv0 - i2_cur_mv0))
4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_top_mv1
4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit));
4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs = ((pv_nbr_pic_addr0 != pv_cur_pic_addr0)
4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    || (pv_nbr_pic_addr1 != pv_cur_pic_addr1)
4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    || u4_bs_temp1);
4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_horz |= (u4_bs << u4_horz_idx);
4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_left_mv_pred = ps_cur_mv_pred;
4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[edge] = u4_bs_horz;
4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs1_16x16mb_bslice                                  */
5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (=1) for those     */
5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  horz and vert mb edges of 16x16mb which are set to 0 by  */
5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  ih264d_fill_bs2_horz_vert. This function is used for b slices   */
5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        : <What inputs does the function take?>                    */
5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    : If any motion vector component of adjacent 4x4 blocks    */
5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  differs by more than 1 integer pel or if reference       */
5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  pictures are different, Bs is set to 1.                  */
5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
5238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_16x16mb_bslice(mv_pred_t *ps_cur_mv_pred,
5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    mv_pred_t *ps_top_mv_pred,
5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    void **ppv_map_ref_idx_to_poc,
5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    UWORD32 *pu4_bs_table, /* pointer to the BsTable array */
5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    mv_pred_t *ps_leftmost_mv_pred,
5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    neighbouradd_t *ps_left_addr,
5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    void **u4_pic_addrress,
5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    WORD32 i4_ver_mvlimit)
5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_q_mv0, i2_q_mv1, i2_q_mv2, i2_q_mv3;
5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_p_mv0, i2_p_mv1, i2_p_mv2, i2_p_mv3;
5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_cur_pic_addr0, *pv_cur_pic_addr1;
5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_nbr_pic_addr0, *pv_nbr_pic_addr1;
5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void **ppv_map_ref_idx_to_poc_l0, **ppv_map_ref_idx_to_poc_l1;
5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 i;
5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bs_horz = pu4_bs_table[0];
5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bs_vert = pu4_bs_table[4];
5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l0 = ppv_map_ref_idx_to_poc;
5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l1 = ppv_map_ref_idx_to_poc + POC_LIST_L0_TO_L1_DIFF;
5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    i2_q_mv0 = ps_cur_mv_pred->i2_mv[0];
5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    i2_q_mv1 = ps_cur_mv_pred->i2_mv[1];
5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    i2_q_mv2 = ps_cur_mv_pred->i2_mv[2];
5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    i2_q_mv3 = ps_cur_mv_pred->i2_mv[3];
5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pv_cur_pic_addr0 = ppv_map_ref_idx_to_poc_l0[ps_cur_mv_pred->i1_ref_frame[0]];
5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pv_cur_pic_addr1 = ppv_map_ref_idx_to_poc_l1[ps_cur_mv_pred->i1_ref_frame[1]];
5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************/
5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Computing Bs for the top edge */
5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************/
5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(i = 0; i < 4; i++, ps_top_mv_pred++)
5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_idx = 24 - (i << 3);
5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* check if Bs is already set    */
5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(!((u4_bs_horz >> u4_idx) & 0xf))
5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /************************************************************/
5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If Bs is not set, use left edge and current edge mvs and */
5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* reference pictures addresses to evaluate Bs==1           */
5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /************************************************************/
5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs_temp1, u4_bs_temp2;
5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs;
5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If any motion vector component differs by more than 1 */
5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* integer pel or if reference pictures are different Bs */
5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* is set to 1. Note that this condition shall be met for*/
5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv0 = ps_top_mv_pred->i2_mv[0];
5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv1 = ps_top_mv_pred->i2_mv[1];
5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv2 = ps_top_mv_pred->i2_mv[2];
5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv3 = ps_top_mv_pred->i2_mv[3];
5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr0 = u4_pic_addrress[i & 2];
5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr1 = u4_pic_addrress[1 + (i & 2)];
5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_temp1 =
5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ((ABS((i2_p_mv0 - i2_q_mv0))
5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            >= 4)
5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv1 - i2_q_mv1))
5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit)
5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv2 - i2_q_mv2))
5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= 4)
5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv3 - i2_q_mv3))
5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit));
5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_temp2 =
5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ((ABS((i2_p_mv0 - i2_q_mv2))
5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            >= 4)
5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv1 - i2_q_mv3))
5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit)
6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv2 - i2_q_mv0))
6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= 4)
6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv3 - i2_q_mv1))
6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit));
6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs = ((pv_cur_pic_addr0 != pv_nbr_pic_addr0)
6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || (pv_cur_pic_addr1 != pv_nbr_pic_addr1)
6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || u4_bs_temp1)
6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            && ((pv_cur_pic_addr0 != pv_nbr_pic_addr1)
6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            || (pv_cur_pic_addr1
6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            != pv_nbr_pic_addr0)
6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            || u4_bs_temp2);
6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_horz |= (u4_bs << u4_idx);
6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[0] = u4_bs_horz;
6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /***********************************/
6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Computing Bs for the left edge  */
6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /***********************************/
6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(i = 0; i < 4; i++, ps_leftmost_mv_pred += 4)
6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_idx = 24 - (i << 3);
6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* check if Bs is already set    */
6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************/
6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(!((u4_bs_vert >> u4_idx) & 0xf))
6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /****************************************************/
6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If Bs is not set, evalaute conditions for Bs=1   */
6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /****************************************************/
6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs_temp1, u4_bs_temp2;
6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs;
6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* If any motion vector component differs by more than 1 */
6378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* integer pel or if reference pictures are different Bs */
6388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* is set to 1. Note that this condition shall be met for*/
6398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*********************************************************/
6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv0 = ps_leftmost_mv_pred->i2_mv[0];
6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv1 = ps_leftmost_mv_pred->i2_mv[1];
6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv2 = ps_leftmost_mv_pred->i2_mv[2];
6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            i2_p_mv3 = ps_leftmost_mv_pred->i2_mv[3];
6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr0 = ps_left_addr->u4_add[i & 2];
6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pv_nbr_pic_addr1 = ps_left_addr->u4_add[1 + (i & 2)];
6488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_temp1 =
6508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ((ABS((i2_p_mv0 - i2_q_mv0))
6518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            >= 4)
6528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv1 - i2_q_mv1))
6538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit)
6548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv2 - i2_q_mv2))
6558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= 4)
6568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv3 - i2_q_mv3))
6578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit));
6588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_temp2 =
6608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ((ABS((i2_p_mv0 - i2_q_mv2))
6618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            >= 4)
6628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv1 - i2_q_mv3))
6638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit)
6648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv2 - i2_q_mv0))
6658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= 4)
6668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            | (ABS((i2_p_mv3 - i2_q_mv1))
6678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            >= i4_ver_mvlimit));
6688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs = ((pv_cur_pic_addr0 != pv_nbr_pic_addr0)
6708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || (pv_cur_pic_addr1 != pv_nbr_pic_addr1)
6718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            || u4_bs_temp1)
6728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            && ((pv_cur_pic_addr0 != pv_nbr_pic_addr1)
6738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            || (pv_cur_pic_addr1
6748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                            != pv_nbr_pic_addr0)
6758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            || u4_bs_temp2);
6768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_vert |= (u4_bs << u4_idx);
6788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
6798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
6808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[4] = u4_bs_vert;
6818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    return;
6838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
6848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
6868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
6878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs1_non16x16mb_bslice                               */
6888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
6898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (=1) for those     */
6908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  horz and vert edges of non16x16mb which are set to 0 by  */
6918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  ih264d_fill_bs2_horz_vert. This function is used for b slices   */
6928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
6938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        : <What inputs does the function take?>                    */
6948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
6958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    : If any motion vector component of adjacent 4x4 blocks    */
6968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  differs by more than 1 integer pel or if reference       */
6978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  pictures are different, Bs is set to 1.                  */
6988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
6998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
7008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
7018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
7028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
7038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
7048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
7058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
7068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
7078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
7088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
7098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
7108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_non16x16mb_bslice(mv_pred_t *ps_cur_mv_pred,
7118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       mv_pred_t *ps_top_mv_pred,
7128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       void **ppv_map_ref_idx_to_poc,
7138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD32 *pu4_bs_table, /* pointer to the BsTable array */
7148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       mv_pred_t *ps_leftmost_mv_pred,
7158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       neighbouradd_t *ps_left_addr,
7168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       void **u4_pic_addrress,
7178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 i4_ver_mvlimit)
7188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
7198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 edge;
7208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void **ppv_map_ref_idx_to_poc_l0, **ppv_map_ref_idx_to_poc_l1;
7218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l0 = ppv_map_ref_idx_to_poc;
7228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l1 = ppv_map_ref_idx_to_poc + POC_LIST_L0_TO_L1_DIFF;
7238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
7258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(edge = 0; edge < 4; edge++, ps_top_mv_pred = ps_cur_mv_pred - 4)
7278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
7288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************************************************/
7298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Each iteration of this loop fills the four BS values of one HORIZ */
7308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* edge and one BS value for each of the four VERT edges.            */
7318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************************************************/
7328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i;
7338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_vert_idx = 24 - (edge << 3);
7348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_bs_horz = pu4_bs_table[edge];
7358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        mv_pred_t *ps_left_mv_pred = ps_leftmost_mv_pred + (edge << 2);
7368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(i = 0; i < 4; i++, ps_top_mv_pred++, ps_cur_mv_pred++)
7388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
7398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD16 i2_cur_mv0, i2_cur_mv1, i16_curMv2, i16_curMv3;
7408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 i1_cur_ref0, i1_cur_ref1;
7418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void *pv_cur_pic_addr0, *pv_cur_pic_addr1;
7428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void *pv_nbr_pic_addr0, *pv_nbr_pic_addr1;
7438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /******************************************************/
7458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Each iteration of this inner loop computes a HORIZ */
7468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* and a VERT BS value for a 4x4 block                */
7478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /******************************************************/
7488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_bs_vert = (pu4_bs_table[i + 4] >> u4_vert_idx) & 0xf;
7498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_horz_idx = 24 - (i << 3);
7508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
7528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* check if vert Bs for this block is already set    */
7538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
7548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(!u4_bs_vert)
7558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
7568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                WORD16 i2_left_mv0, i2_left_mv1, i2_left_mv2, i2_left_mv3;
7578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
7588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* If Bs is not set, use left edge and current edge mvs and */
7598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* reference pictures addresses to evaluate Bs==1           */
7608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
7618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv0 = ps_left_mv_pred->i2_mv[0];
7628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv1 = ps_left_mv_pred->i2_mv[1];
7638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv2 = ps_left_mv_pred->i2_mv[2];
7648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv3 = ps_left_mv_pred->i2_mv[3];
7658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv0 = ps_cur_mv_pred->i2_mv[0];
7678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv1 = ps_cur_mv_pred->i2_mv[1];
7688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv2 = ps_cur_mv_pred->i2_mv[2];
7698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv3 = ps_cur_mv_pred->i2_mv[3];
7708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref0 = ps_cur_mv_pred->i1_ref_frame[0];
7718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref1 = ps_cur_mv_pred->i1_ref_frame[1];
7728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pv_cur_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_cur_ref0];
7738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pv_cur_pic_addr1 = ppv_map_ref_idx_to_poc_l1[i1_cur_ref1];
7748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(i)
7768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
7778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    WORD8 i1_left_ref0, i1_left_ref1;
7788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_left_ref0 = ps_left_mv_pred->i1_ref_frame[0];
7798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_left_ref1 = ps_left_mv_pred->i1_ref_frame[1];
7808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_left_ref0];
7818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = ppv_map_ref_idx_to_poc_l1[i1_left_ref1];
7828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
7838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
7848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
7858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = ps_left_addr->u4_add[edge & 2];
7868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = ps_left_addr->u4_add[1 + (edge & 2)];
7878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
7888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
7908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_bs_temp1, u4_bs_temp2;
7918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
7928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* If any motion vector component differs by more than 1 */
7938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* integer pel or if reference pictures are different Bs */
7948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* is set to 1. Note that this condition shall be met for*/
7958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
7968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
7978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_temp1 =
7998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_left_mv0 - i2_cur_mv0))
8008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
8018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv1
8028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
8038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit)
8048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv2
8058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv2))
8068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
8078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv3
8088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
8098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit));
8108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_temp2 =
8128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_left_mv0 - i16_curMv2))
8138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
8148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv1
8158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
8168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit)
8178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv2
8188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv0))
8198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
8208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv3
8218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
8228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit));
8238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_vert =
8258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((pv_nbr_pic_addr0 != pv_cur_pic_addr0)
8268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || (pv_nbr_pic_addr1
8278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != pv_cur_pic_addr1)
8288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || u4_bs_temp1)
8298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    && ((pv_nbr_pic_addr0
8308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != pv_cur_pic_addr1)
8318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || (pv_nbr_pic_addr1
8328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                                    != pv_cur_pic_addr0)
8338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || u4_bs_temp2);
8348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pu4_bs_table[i + 4] |= (u4_bs_vert << u4_vert_idx);
8368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
8378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
8388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
8408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* check if horz Bs for this block is already set    */
8418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /*****************************************************/
8428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(!((u4_bs_horz >> u4_horz_idx) & 0xf))
8438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
8448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                WORD16 i2_top_mv0, i2_top_mv1, i16_topMv2, i16_topMv3;
8458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
8468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* If Bs is not set, use top edge and current edge mvs and  */
8478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /* reference pictures addresses to evaluate Bs==1           */
8488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                /************************************************************/
8498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv0 = ps_cur_mv_pred->i2_mv[0];
8508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv1 = ps_cur_mv_pred->i2_mv[1];
8518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv2 = ps_cur_mv_pred->i2_mv[2];
8528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv3 = ps_cur_mv_pred->i2_mv[3];
8538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref0 = ps_cur_mv_pred->i1_ref_frame[0];
8548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref1 = ps_cur_mv_pred->i1_ref_frame[1];
8558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_top_mv0 = ps_top_mv_pred->i2_mv[0];
8578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_top_mv1 = ps_top_mv_pred->i2_mv[1];
8588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_topMv2 = ps_top_mv_pred->i2_mv[2];
8598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_topMv3 = ps_top_mv_pred->i2_mv[3];
8608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pv_cur_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_cur_ref0];
8618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pv_cur_pic_addr1 = ppv_map_ref_idx_to_poc_l1[i1_cur_ref1];
8628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(edge)
8638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
8648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    WORD8 i1_top_ref0, i1_top_ref1;
8658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_top_ref0 = ps_top_mv_pred->i1_ref_frame[0];
8668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_top_ref1 = ps_top_mv_pred->i1_ref_frame[1];
8678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = ppv_map_ref_idx_to_poc_l0[i1_top_ref0];
8688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = ppv_map_ref_idx_to_poc_l1[i1_top_ref1];
8698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
8708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
8718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
8728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr0 = u4_pic_addrress[i & 2];
8738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    pv_nbr_pic_addr1 = u4_pic_addrress[1 + (i & 2)];
8748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
8758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
8778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_bs_temp1, u4_bs_temp2;
8788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_bs;
8798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
8808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* If any motion vector component differs by more than 1 */
8818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* integer pel or if reference pictures are different Bs */
8828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* is set to 1. Note that this condition shall be met for*/
8838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /* both (fwd-fwd,bwd-bwd) and (fwd-bwd,bwd-fwd) direction*/
8848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    /*********************************************************/
8858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_temp1 =
8878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_top_mv0 - i2_cur_mv0))
8888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
8898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_top_mv1
8908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
8918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit)
8928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv2
8938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv2))
8948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
8958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv3
8968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
8978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit));
8988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_temp2 =
9008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_top_mv0 - i16_curMv2))
9018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
9028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_top_mv1
9038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
9048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit)
9058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv2
9068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv0))
9078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
9088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv3
9098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
9108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= i4_ver_mvlimit));
9118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs =
9138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((pv_nbr_pic_addr0 != pv_cur_pic_addr0)
9148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || (pv_nbr_pic_addr1
9158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != pv_cur_pic_addr1)
9168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || u4_bs_temp1)
9178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    && ((pv_nbr_pic_addr0
9188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != pv_cur_pic_addr1)
9198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || (pv_nbr_pic_addr1
9208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                                    != pv_cur_pic_addr0)
9218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || u4_bs_temp2);
9228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs_horz |= (u4_bs << u4_horz_idx);
9248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
9258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
9268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_left_mv_pred = ps_cur_mv_pred;
9288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
9298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[edge] = u4_bs_horz;
9318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
9328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
9338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
9358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs_xtra_left_edge_cur_fld                           */
9378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (= 2 or 1) for     */
9398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  xtra left mb edge when cur mb is field and left mb is    */
9408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  frame.                                                   */
9418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        :                                                          */
9428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
9448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    :                                                          */
9458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
9488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
9498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
9518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
9538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
9558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
9568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
9578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
9588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_xtra_left_edge_cur_fld(UWORD32 *pu4_bs, /* Base pointer of BS table */
9598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 u4_left_mb_t_csbp, /* left mbpair's top csbp   */
9608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 u4_left_mb_b_csbp, /* left mbpair's bottom csbp*/
9618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 u4_cur_mb_csbp, /* csbp of current mb */
9628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD32 u4_cur_mb_top /* is top or bottom mb */
9638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           )
9658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
9668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 *pu4_packed_bs = (const UWORD32 *)gau4_ih264d_packed_bs2;
9678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_cur, u4_left, u4_or;
9688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(u4_cur_mb_top);
9698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
9718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left_mb_t_csbp = ((u4_left_mb_t_csbp & 0x0008) >> 3)
9738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_t_csbp & 0x0080) >> 6)
9748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_t_csbp & 0x0800) >> 9)
9758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_t_csbp & 0x8000) >> 12);
9768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left_mb_b_csbp = ((u4_left_mb_b_csbp & 0x0008) << 1)
9788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_b_csbp & 0x0080) >> 2)
9798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_b_csbp & 0x0800) >> 5)
9808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_b_csbp & 0x8000) >> 8);
9818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
9838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* u4_cur = 0|0|0|0|0|0|0|0|12C|12C|8C|8C|4C|4C|0C|0C                */
9848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
9858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur = (u4_cur_mb_csbp & 0x0001) + ((u4_cur_mb_csbp & 0x0001) << 1)
9868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x0010) >> 2)
9878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x0010) >> 1)
9888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x0100) >> 4)
9898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x0100) >> 3)
9908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x1000) >> 6)
9918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x1000) >> 5);
9928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
9948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* u4_left =0|0|0|0|0|0|0|0|15Lb|11Lb|7Lb|3Lb|15Lt|11Lt|7Lt|3Lt      */
9958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
9968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left = u4_left_mb_t_csbp + u4_left_mb_b_csbp;
9978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_or = (u4_cur | u4_left);
9998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
10008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Fill vert edges (4,9) boundary strengths  using look up table     */
10018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
10028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_packed_bs += 16;
10038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[4] = pu4_packed_bs[u4_or & 0xF];
10048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[9] = pu4_packed_bs[(u4_or >> 4)];
10058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
10068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
10088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs_xtra_left_edge_cur_frm                           */
10108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (= 2 or 1) for     */
10128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  xtra left mb edge when cur mb is frame and left mb is    */
10138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  field.                                                   */
10148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        :                                                          */
10158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
10178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    :                                                          */
10188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
10218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
10228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
10248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
10268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
10288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
10298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
10318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_xtra_left_edge_cur_frm(UWORD32 *pu4_bs, /* Base pointer of BS table */
10328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 u4_left_mb_t_csbp, /* left mbpair's top csbp   */
10338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 u4_left_mb_b_csbp, /* left mbpair's bottom csbp*/
10348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 u4_cur_mb_csbp, /* csbp of current mb */
10358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD32 u4_cur_mb_bot /* is top or bottom mb */
10368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           )
10388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
10398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 *pu4_packed_bs = (const UWORD32 *)gau4_ih264d_packed_bs2;
10408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_cur, u4_left, u4_or;
10418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_right_shift = (u4_cur_mb_bot << 3);
10428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
10448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left_mb_t_csbp >>= u4_right_shift;
10468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left_mb_b_csbp >>= u4_right_shift;
10478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left_mb_t_csbp = ((u4_left_mb_t_csbp & 0x08) >> 3)
10498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_t_csbp & 0x08) >> 2)
10508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_t_csbp & 0x80) >> 5)
10518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_t_csbp & 0x80) >> 4);
10528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left_mb_b_csbp = ((u4_left_mb_b_csbp & 0x08) << 1)
10548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_b_csbp & 0x08) << 2)
10558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_b_csbp & 0x80) >> 1)
10568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_left_mb_b_csbp & 0x80));
10578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur = ((u4_cur_mb_csbp & 0x0001)) + ((u4_cur_mb_csbp & 0x0010) >> 3)
10598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x0100) >> 6)
10608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    + ((u4_cur_mb_csbp & 0x1000) >> 9);
10618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur += (u4_cur << 4);
10638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left = u4_left_mb_t_csbp + u4_left_mb_b_csbp;
10658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_or = (u4_cur | u4_left);
10678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
10688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Fill vert edges (4,9) boundary strengths  using look up table     */
10698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
10708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_packed_bs += 16;
10718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[4] = pu4_packed_bs[u4_or & 0xF];
10728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[9] = pu4_packed_bs[(u4_or >> 4)];
10738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
10748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
10768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_fill_bs_xtra_top_edge                                    */
10788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function fills boundray strength (= 2 or 1) for     */
10808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  xtra top mb edge when cur mb is top mb of frame mb pair  */
10818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                  and top mbpair is field coded.                           */
10828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        :                                                          */
10838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Globals       : <Does it use any global variables?>                      */
10858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    :                                                          */
10868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : <What does the function produce?>                        */
10898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : <What does the function return?>                         */
10908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Issues        : <List any issues or problems with this function>         */
10928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
10948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
10968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         16 10 2008   Jay             Draft                                */
10978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
10988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
10998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_xtra_top_edge(UWORD32 *pu4_bs, /* Base pointer of BS table */
11008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  WORD32 u4_topmb_t_csbp, /* top mbpair's top csbp   */
11018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  WORD32 u4_topmb_b_csbp, /* top mbpair's bottom csbp*/
11028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  WORD32 u4_cur_mb_csbp /* csbp of current mb */
11038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                  )
11058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
11068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 *pu4_packed_bs = (const UWORD32 *)gau4_ih264d_packed_bs2;
11078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_or;
11088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur_mb_csbp &= 0xf;
11108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_topmb_t_csbp >>= 12;
11118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_topmb_b_csbp >>= 12;
11128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_or = (u4_cur_mb_csbp | u4_topmb_t_csbp);
11148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
11158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Fill vert edges (0,8) boundary strengths  using look up table     */
11168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*********************************************************************/
11178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_packed_bs += 16;
11188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[8] = pu4_packed_bs[u4_or];
11198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_or = (u4_cur_mb_csbp | u4_topmb_b_csbp);
11218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs[0] = pu4_packed_bs[u4_or];
11228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
11238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
11258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
11268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_compute_bs_non_mbaff                                        */
11278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
11288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function computes the pointers of left,top & current*/
11298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                : Nnz, MvPred & deblk_mb_t and supplies to FillBs function for*/
11308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                : Boundary Strength Calculation                            */
11318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        : <What inputs does the function take?>                    */
11328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    : This functions calls deblock MB in the MB increment order*/
11338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
11348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : Produces the Boundary Strength for Current Mb            */
11358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : None                                                     */
11368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
11378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
11388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
11398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
11408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                      ITTIAM                                               */
11418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
11428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_compute_bs_non_mbaff(dec_struct_t * ps_dec,
11448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                 dec_mb_info_t * ps_cur_mb_info,
11458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                 const UWORD16 u2_mbxn_mb)
11468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
11478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Mvpred and Nnz for top and Courrent */
11488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mv_pred_t *ps_cur_mv_pred, *ps_top_mv_pred = NULL, *ps_left_mv_pred;
11498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* deblk_mb_t Params */
11508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblk_mb_t *ps_cur_mb_params; /*< Parameters of current MacroBlock */
11518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblkmb_neighbour_t *ps_deblk_top_mb;
11528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Reference Index to POC mapping*/
11548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void ** apv_map_ref_idx_to_poc;
11558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_leftmbtype;
11568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 u2_left_csbp, u2_top_csbp, u2_cur_csbp;
11588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Set of flags */
11608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_cur_mb_intra, u1_top_mb_typ, u4_cur_mb_fld;
11618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u1_cur_mb_type;
11628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 * pu4_bs_table;
11638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Neighbour availability */
11658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Initialization */
11668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mbx = ps_cur_mb_info->u2_mbx;
11678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mby = ps_cur_mb_info->u2_mby;
11688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u1_pingpong = u2_mbx & 0x01;
11698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
11718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_deblk_top_mb = ps_dec->ps_deblk_top_mb + u2_mbx;
11738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer assignment for Current DeblkMB, Current Mv Pred  */
11768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mb_params = ps_dec->ps_deblk_mbn + u2_mbxn_mb;
11778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mv_pred = ps_dec->ps_mv_cur + (u2_mbxn_mb << 4);
11788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    apv_map_ref_idx_to_poc = ps_dec->ppv_map_ref_idx_to_poc + 1;
11808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_cur_mb_type = ps_cur_mb_params->u1_mb_type;
11818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_top_mb_typ = ps_deblk_top_mb->u1_mb_type;
11828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_deblk_top_mb->u1_mb_type = u1_cur_mb_type;
11838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
11858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 mb_qp_temp;
11868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_topmb_qp = ps_deblk_top_mb->u1_mb_qp;
11888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_deblk_top_mb->u1_mb_qp = ps_cur_mb_params->u1_mb_qp;
11898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_left_mb_qp = ps_dec->deblk_left_mb[1].u1_mb_qp;
11918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_dec->deblk_left_mb[1].u1_mb_qp = ps_cur_mb_params->u1_mb_qp;
11928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
11948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* if no deblocking required for current Mb then continue */
11968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Check next Mbs   in Mb group                           */
11978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_cur_mb_params->u1_deblocking_mode & MB_DISABLE_FILTERING)
11988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
11998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        void ** pu4_map_ref_idx_to_poc_l1 = apv_map_ref_idx_to_poc +
12008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        POC_LIST_L0_TO_L1_DIFF;
12018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
12028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Store Parameter for Top MvPred refernce frame Address */
12038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_top_mv_pred_addr = ps_cur_mb_info->ps_curmb->u4_pic_addrress;
12058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop0 = (ps_cur_mv_pred + 12)->i1_ref_frame;
12068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop1 = (ps_cur_mv_pred + 14)->i1_ref_frame;
12078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Store Left addresses for Next Mb   */
12098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_left_mv_pred_addr =
12108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_dec->ps_left_mvpred_addr[!u1_pingpong][1].u4_add;
12118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refleft0 = (ps_cur_mv_pred + 3)->i1_ref_frame;
12128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refTop0[0]];
12158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refTop0[1]];
12168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
12188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
12198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
12208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
12218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refleft0[0]];
12238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refleft0[1]];
12248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            //}
12258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Storing the leftMbtype for next Mb */
12268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_dec->deblk_left_mb[1].u1_mb_type = ps_cur_mb_params->u1_mb_type;
12278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
12288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        return;
12308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
12318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Flag for extra left Edge */
12338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mb_params->u1_single_call = 1;
12348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Update the Left deblk_mb_t and Left MvPred Parameters           */
12368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(!u2_mbx)
12378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
12388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u4_leftmbtype = 0;
12398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Initialize the ps_left_mv_pred with Junk but Valid Location */
12418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* to avoid invalid memory access                           */
12428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* this is read only pointer                                */
12438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_left_mv_pred = ps_dec->ps_mv_cur + 3;
12448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
12458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
12468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
12478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u4_leftmbtype = ps_dec->deblk_left_mb[1].u1_mb_type;
12488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Come to Left Most Edge of the MB */
12508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_left_mv_pred = (u2_mbxn_mb) ?
12518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_dec->ps_mv_cur + ((u2_mbxn_mb - 1) << 4) + 3 :
12528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_dec->ps_mv_left + 3;
12538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
12548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(!u2_mby)
12568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u1_top_mb_typ = 0;
12578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* MvPred Pointer Calculation */
12598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* CHANGED CODE */
12608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_top_mv_pred = ps_cur_mv_pred - (ps_dec->u2_frm_wd_in_mbs << 4) + 12;
12618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur_mb_intra = u1_cur_mb_type & D_INTRA_MB;
12638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur_mb_fld = !!(u1_cur_mb_type & D_FLD_MB);
12648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Compute BS function */
12658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table = ps_cur_mb_params->u4_bs_table;
12668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u2_cur_csbp = ps_cur_mb_info->ps_curmb->u2_luma_csbp;
12688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u2_left_csbp = ps_cur_mb_info->ps_left_mb->u2_luma_csbp;
12698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u2_top_csbp = ps_cur_mb_info->ps_top_mb->u2_luma_csbp;
12708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Compute BS function */
12718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_dec->ps_cur_sps->u1_profile_idc == HIGH_PROFILE_IDC)
12728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
12738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(ps_cur_mb_info->u1_tran_form8x8 == 1)
12748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
12758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u2_cur_csbp = ih264d_update_csbp_8x8(
12768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_cur_mb_info->ps_curmb->u2_luma_csbp);
12778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
12788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(ps_cur_mb_info->ps_left_mb->u1_tran_form8x8 == 1)
12808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
12818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u2_left_csbp = ih264d_update_csbp_8x8(
12828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_cur_mb_info->ps_left_mb->u2_luma_csbp);
12838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
12848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(ps_cur_mb_info->ps_top_mb->u1_tran_form8x8 == 1)
12868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
12878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u2_top_csbp = ih264d_update_csbp_8x8(
12888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_cur_mb_info->ps_top_mb->u2_luma_csbp);
12898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
12908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
12918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u4_cur_mb_intra)
12928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
12938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[4] = 0x04040404;
12958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[0] = u4_cur_mb_fld ? 0x03030303 : 0x04040404;
12968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[1] = 0x03030303;
12978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[2] = 0x03030303;
12988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[3] = 0x03030303;
12998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[5] = 0x03030303;
13008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[6] = 0x03030303;
13018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[7] = 0x03030303;
13028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
13038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
13048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
13058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_is_non16x16 = !!(u1_cur_mb_type & D_PRED_NON_16x16);
13068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_is_b = ps_dec->u1_B;
13078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ih264d_fill_bs2_horz_vert(
13098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table, u2_left_csbp, u2_top_csbp, u2_cur_csbp,
13108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        (const UWORD32 *)(gau4_ih264d_packed_bs2),
13118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        (const UWORD16 *)(gau2_ih264d_4x4_v2h_reorder));
13128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u4_leftmbtype & D_INTRA_MB)
13148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[4] = 0x04040404;
13158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u1_top_mb_typ & D_INTRA_MB)
13178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[0] = u4_cur_mb_fld ? 0x03030303 : 0x04040404;
13188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_dec->pf_fill_bs1[u4_is_b][u4_is_non16x16](
13208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_cur_mv_pred, ps_top_mv_pred, apv_map_ref_idx_to_poc,
13218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table, ps_left_mv_pred,
13228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        &(ps_dec->ps_left_mvpred_addr[u1_pingpong][1]),
13238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_cur_mb_info->ps_top_mb->u4_pic_addrress,
13248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        (4 >> u4_cur_mb_fld));
13258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
13268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
13288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        void ** pu4_map_ref_idx_to_poc_l1 = apv_map_ref_idx_to_poc +
13298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        POC_LIST_L0_TO_L1_DIFF;
13308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
13318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Store Parameter for Top MvPred refernce frame Address */
13328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_top_mv_pred_addr = ps_cur_mb_info->ps_curmb->u4_pic_addrress;
13348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop0 = (ps_cur_mv_pred + 12)->i1_ref_frame;
13358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop1 = (ps_cur_mv_pred + 14)->i1_ref_frame;
13368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Store Left addresses for Next Mb   */
13388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_left_mv_pred_addr =
13398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_dec->ps_left_mvpred_addr[!u1_pingpong][1].u4_add;
13408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refleft0 = (ps_cur_mv_pred + 3)->i1_ref_frame;
13418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refTop0[0]];
13438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refTop0[1]];
13448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
13468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
13478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
13488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
13498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refleft0[0]];
13518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refleft0[1]];
13528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Storing the leftMbtype for next Mb */
13548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_dec->deblk_left_mb[1].u1_mb_type = ps_cur_mb_params->u1_mb_type;
13558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
13578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
13588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* For transform 8x8 disable deblocking of the intrernal edges of a 8x8 block */
13608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_cur_mb_info->u1_tran_form8x8)
13618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
13628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[1] = 0;
13638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[3] = 0;
13648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[5] = 0;
13658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[7] = 0;
13668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
13678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
13688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
13708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
13718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Function Name : ih264d_compute_bs_mbaff                                           */
13728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
13738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Description   : This function computes the pointers of left,top & current*/
13748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                : Nnz, MvPred & deblk_mb_t and supplies to FillBs function for*/
13758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                : Boundary Strength Calculation                            */
13768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Inputs        : <What inputs does the function take?>                    */
13778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Processing    : This functions calls deblock MB in the MB increment order*/
13788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
13798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Outputs       : Produces the Boundary Strength for Current Mb            */
13808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Returns       : None                                                     */
13818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
13828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*  Revision History:                                                        */
13838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                                                                           */
13848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
13858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*                      ITTIAM                                               */
13868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
13878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_compute_bs_mbaff(dec_struct_t * ps_dec,
13898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                             dec_mb_info_t * ps_cur_mb_info,
13908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                             const UWORD16 u2_mbxn_mb)
13918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
13928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Mvpred and Nnz for top and Courrent */
13938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mv_pred_t *ps_cur_mv_pred, *ps_top_mv_pred = NULL, *ps_left_mv_pred;
13948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* deblk_mb_t Params */
13958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblk_mb_t *ps_cur_mb_params; /*< Parameters of current MacroBlock */
13968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    neighbouradd_t * ps_left_ngbr;
13978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblkmb_neighbour_t *ps_deblk_top_mb;
13988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Reference Index to POC mapping*/
13998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void ** apv_map_ref_idx_to_poc;
14008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_leftmbtype;
14028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 u2_left_csbp, u2_top_csbp, u2_cur_csbp;
14058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Set of flags */
14078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_cur_mb_intra, u4_cur_mb_fld, u4_top_mb_fld, u1_top_mb_typ, u4_left_mb_fld;
14088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u1_cur_mb_type;
14098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 * pu4_bs_table;
14108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u4_bot_mb = (1 - ps_cur_mb_info->u1_topmb);
14118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Initialization */
14128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mbx = ps_cur_mb_info->u2_mbx;
14138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mby = ps_cur_mb_info->u2_mby;
14148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Load From u1_pingpong and Store in !u1_pingpong */
14158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u1_pingpong = u2_mbx & 0x01;
14168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PROFILE_DISABLE_BOUNDARY_STRENGTH()
14188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_deblk_top_mb = ps_dec->ps_deblk_top_mb + (u2_mbx << 1);
14208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /************************************************/
14238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Initialize the left Mb type                  */
14248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Left MvPred                                  */
14258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /************************************************/
14268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(!u2_mbx)
14288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
14298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /************************************************************/
14308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Initialize the ps_left_mv_pred with Junk but Valid Location */
14318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* to avoid invalid memory access                       */
14328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* this is read only pointer                                */
14338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /************************************************************/
14348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_left_mv_pred = ps_dec->ps_mv_cur + 16;
14358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
14368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
14378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
14388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Come to Left Most Edge of the MB */
14398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_left_mv_pred = (u2_mbxn_mb) ?
14408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_dec->ps_mv_cur + ((u2_mbxn_mb - 1) << 5) + 3 :
14418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_dec->ps_mv_left + 3;
14428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_left_mv_pred += (u4_bot_mb << 4);
14448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
14458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_leftmbtype = ps_dec->deblk_left_mb[u4_bot_mb].u1_mb_type;
14478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_left_ngbr = &(ps_dec->ps_left_mvpred_addr[u1_pingpong][u4_bot_mb]);
14498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /************************************************/
14518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer Assignment for Current Mb Parameters */
14528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer Assignment for Current MvPred        */
14538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /************************************************/
14548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mb_params = ps_dec->ps_deblk_mbn + (u2_mbxn_mb << 1) + u4_bot_mb;
14558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_cur_mb_type = ps_cur_mb_params->u1_mb_type;
14568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mv_pred = ps_dec->ps_mv_cur + (u2_mbxn_mb << 5);
14588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mv_pred += (u4_bot_mb << 4);
14598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************/
14618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer Assignment for Top Mb Parameters */
14628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer Assignment for Top MvPred and    */
14638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer Assignment for Top Nnz           */
14648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************/
14658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* CHANGED CODE */
14678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_top_mv_pred = ps_cur_mv_pred - (ps_dec->u2_frm_wd_in_mbs << 5) + 12;
14688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur_mb_fld = !!(u1_cur_mb_type & D_FLD_MB);
14708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_left_mb_fld = !!(ps_dec->deblk_left_mb[0].u1_mb_type & D_FLD_MB);
14718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u4_left_mb_fld != u4_cur_mb_fld)
14738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
14748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Flag for extra left Edge */
14758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_single_call = 0;
14768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u4_bot_mb)
14788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
14798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_left_ngbr--;
14808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_left_mv_pred -= 16;
14818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
14828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
14838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
14848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_single_call = 1;
14858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    apv_map_ref_idx_to_poc = ps_dec->ppv_map_ref_idx_to_poc + 1;
14878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u4_cur_mb_fld)
14888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
14898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u4_bot_mb)
14908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
14918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            apv_map_ref_idx_to_poc += BOT_LIST_FLD_L0;
14928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
14938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
14948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
14958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            apv_map_ref_idx_to_poc += TOP_LIST_FLD_L0;
14968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
14978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
14988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**********************************************************/
15008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* if no deblocking required for current Mb then continue */
15018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**********************************************************/
15028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_cur_mb_params->u1_deblocking_mode & MB_DISABLE_FILTERING)
15038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
15048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        void ** pu4_map_ref_idx_to_poc_l1 = apv_map_ref_idx_to_poc +
15058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        POC_LIST_L0_TO_L1_DIFF;
15068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
15088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Store Parameter for Top MvPred refernce frame Address */
15098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_top_mv_pred_addr = ps_cur_mb_info->ps_curmb->u4_pic_addrress;
15118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_left_mv_pred_addr =
15128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_dec->ps_left_mvpred_addr[!u1_pingpong][u4_bot_mb].u4_add;
15138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop0 = (ps_cur_mv_pred + 12)->i1_ref_frame;
15148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop1 = (ps_cur_mv_pred + 14)->i1_ref_frame;
15158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refLeft0 = (ps_cur_mv_pred + 3)->i1_ref_frame;
15168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refTop0[0]];
15178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refTop0[1]];
15188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
15198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
15208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
15218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
15228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refLeft0[0]];
15238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refLeft0[1]];
15248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
15258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u4_bot_mb)
15268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
15278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* store The Left Mb Type*/
15288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_dec->deblk_left_mb[0].u1_mb_type =
15298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            (ps_cur_mb_params - 1)->u1_mb_type;
15308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_dec->deblk_left_mb[1].u1_mb_type = ps_cur_mb_params->u1_mb_type;
15318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
15338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_deblk_top_mb[u4_bot_mb].u1_mb_type = u1_cur_mb_type;
15348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        return;
15358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
15368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u2_mby)
15388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
15398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u1_top_mb_typ = ps_deblk_top_mb[1].u1_mb_type;
15408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u4_top_mb_fld = !!(u1_top_mb_typ & D_FLD_MB);
15418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(!u4_bot_mb)
15438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
15448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(u4_top_mb_fld & u4_cur_mb_fld)
15458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                u1_top_mb_typ = ps_deblk_top_mb[0].u1_mb_type;
15468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            else
15478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
15488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ps_top_mv_pred += 16;
15498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
15508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
15518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
15528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
15538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
15548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u4_top_mb_fld = u4_cur_mb_fld;
15558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u1_top_mb_typ = 0;
15568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
15578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u4_bot_mb & !u4_cur_mb_fld)
15598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
15608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u1_top_mb_typ = ps_deblk_top_mb[0].u1_mb_type;
15618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u4_top_mb_fld = u4_cur_mb_fld;
15628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_top_mv_pred = ps_cur_mv_pred - 4;
15638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
15648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table = ps_cur_mb_params->u4_bs_table;
15668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u4_cur_mb_intra = u1_cur_mb_type & D_INTRA_MB;
15678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u2_cur_csbp = ps_cur_mb_info->ps_curmb->u2_luma_csbp;
15698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u2_left_csbp = ps_cur_mb_info->ps_left_mb->u2_luma_csbp;
15708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u2_top_csbp = ps_cur_mb_info->ps_top_mb->u2_luma_csbp;
15718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Compute BS function */
15728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_dec->ps_cur_sps->u1_profile_idc == HIGH_PROFILE_IDC)
15738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
15748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(ps_cur_mb_info->u1_tran_form8x8 == 1)
15768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
15778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u2_cur_csbp = ih264d_update_csbp_8x8(
15788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_cur_mb_info->ps_curmb->u2_luma_csbp);
15798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
15808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(ps_cur_mb_info->ps_left_mb->u1_tran_form8x8 == 1)
15828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
15838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u2_left_csbp = ih264d_update_csbp_8x8(
15848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_cur_mb_info->ps_left_mb->u2_luma_csbp);
15858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
15868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(ps_cur_mb_info->ps_top_mb->u1_tran_form8x8 == 1)
15888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
15898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u2_top_csbp = ih264d_update_csbp_8x8(
15908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_cur_mb_info->ps_top_mb->u2_luma_csbp);
15918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
15928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
15938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u4_cur_mb_intra)
15948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
15958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[4] = 0x04040404;
15978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if((0 == u4_cur_mb_fld) && (0 == u4_top_mb_fld))
15988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
15998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[0] = 0x04040404;
16008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
16018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
16028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
16038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[0] = 0x03030303;
16048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
16058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[1] = 0x03030303;
16078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[2] = 0x03030303;
16088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[3] = 0x03030303;
16098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[5] = 0x03030303;
16108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[6] = 0x03030303;
16118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[7] = 0x03030303;
16128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************************************************/
16148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Fill Bs of xtra top and left edge unconditionally to avoid checks */
16158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*********************************************************************/
16168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[8] = 0x03030303;
16178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[9] = 0x04040404;
16188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
16198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
16208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
16218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_is_non16x16 = !!(u1_cur_mb_type & D_PRED_NON_16x16);
16228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_is_b = ps_dec->u1_B;
16238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ih264d_fill_bs2_horz_vert(
16258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table, u2_left_csbp, u2_top_csbp, u2_cur_csbp,
16268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        (const UWORD32 *)(gau4_ih264d_packed_bs2),
16278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        (const UWORD16 *)(gau2_ih264d_4x4_v2h_reorder));
16288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u4_leftmbtype & D_INTRA_MB)
16308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[4] = 0x04040404;
16318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u1_top_mb_typ & D_INTRA_MB)
16338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[0] = u4_cur_mb_fld ? 0x03030303 : 0x04040404;
16348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else if(u4_cur_mb_fld != u4_top_mb_fld)
16358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
16368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /****************************************************/
16378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Setting BS for mixed mode edge=1 when (Bs!=2)    */
16388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /****************************************************/
16398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[0] = (pu4_bs_table[0] >> 1) + 0x01010101;
16408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
16418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
16438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Call to Compute Boundary Strength for Extra Left Edge */
16448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(u2_mbx
16458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            && !(ps_cur_mb_params->u1_deblocking_mode
16468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            & MB_DISABLE_LEFT_EDGE))
16478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
16488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(u4_cur_mb_fld != u4_left_mb_fld)
16498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
16508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_left_mb_t_csbp =
16518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ps_cur_mb_info->ps_left_mb[0].u2_luma_csbp;
16528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_left_mb_b_csbp =
16538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ps_cur_mb_info->ps_left_mb[1].u2_luma_csbp;
16548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(1 == ps_cur_mb_info->ps_left_mb[0].u1_tran_form8x8)
16558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    {
16568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        u4_left_mb_t_csbp = (UWORD32)ih264d_update_csbp_8x8(
16578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        (UWORD16)u4_left_mb_t_csbp);
16588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    }
16598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(1 == ps_cur_mb_info->ps_left_mb[1].u1_tran_form8x8)
16618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    {
16628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        u4_left_mb_b_csbp = (UWORD32)ih264d_update_csbp_8x8(
16638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        (UWORD16)u4_left_mb_b_csbp);
16648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    }
16658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ps_dec->pf_fill_bs_xtra_left_edge[u4_cur_mb_fld](
16668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    pu4_bs_table, u4_left_mb_t_csbp,
16678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    u4_left_mb_b_csbp, u2_cur_csbp, u4_bot_mb);
16688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(ps_dec->deblk_left_mb[0].u1_mb_type & D_INTRA_MB)
16708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table[4] = 0x04040404;
16718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(ps_dec->deblk_left_mb[1].u1_mb_type & D_INTRA_MB)
16738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table[9] = 0x04040404;
16748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
16768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
16778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Call to Compute Boundary Strength for Extra Top Edge */
16788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(u2_mby
16798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            && !(ps_cur_mb_params->u1_deblocking_mode
16808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            & MB_DISABLE_TOP_EDGE))
16818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
16828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if((((!u4_bot_mb) & (!u4_cur_mb_fld)) && u4_top_mb_fld))
16838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
16848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_topmb_t_csbp =
16858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ps_cur_mb_info->ps_top_mb[-1].u2_luma_csbp;
16868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD32 u4_topmb_b_csbp =
16878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ps_cur_mb_info->ps_top_mb[0].u2_luma_csbp;
16888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(1 == ps_cur_mb_info->ps_top_mb[-1].u1_tran_form8x8)
16898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    {
16908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        u4_topmb_t_csbp = (UWORD32)ih264d_update_csbp_8x8(
16918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        (UWORD16)u4_topmb_t_csbp);
16928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    }
16938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(1 == ps_cur_mb_info->ps_top_mb[0].u1_tran_form8x8)
16958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    {
16968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        u4_topmb_b_csbp = (UWORD32)ih264d_update_csbp_8x8(
16978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        (UWORD16)u4_topmb_b_csbp);
16988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    }
16998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ih264d_fill_bs_xtra_top_edge(pu4_bs_table, u4_topmb_t_csbp,
17008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                 u4_topmb_b_csbp, u2_cur_csbp);
17018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(ps_deblk_top_mb[0].u1_mb_type & D_INTRA_MB)
17038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table[8] = 0x03030303;
17048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(ps_deblk_top_mb[1].u1_mb_type & D_INTRA_MB)
17068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table[0] = 0x03030303;
17078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
17088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
17098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
17108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_dec->pf_fill_bs1[u4_is_b][u4_is_non16x16](
17128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_cur_mv_pred, ps_top_mv_pred, apv_map_ref_idx_to_poc,
17138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        pu4_bs_table, ps_left_mv_pred, ps_left_ngbr,
17148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        ps_cur_mb_info->ps_top_mb->u4_pic_addrress,
17158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        (4 >> u4_cur_mb_fld));
17168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
17178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
17198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        void ** pu4_map_ref_idx_to_poc_l1 = apv_map_ref_idx_to_poc +
17208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        POC_LIST_L0_TO_L1_DIFF;
17218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
17238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* Store Parameter for Top MvPred refernce frame Address */
17248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_top_mv_pred_addr = ps_cur_mb_info->ps_curmb->u4_pic_addrress;
17258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            void ** ppv_left_mv_pred_addr =
17268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            ps_dec->ps_left_mvpred_addr[!u1_pingpong][u4_bot_mb].u4_add;
17278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop0 = (ps_cur_mv_pred + 12)->i1_ref_frame;
17288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refTop1 = (ps_cur_mv_pred + 14)->i1_ref_frame;
17298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            WORD8 * p1_refLeft0 = (ps_cur_mv_pred + 3)->i1_ref_frame;
17308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refTop0[0]];
17318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refTop0[1]];
17328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
17338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[2] = apv_map_ref_idx_to_poc[p1_refTop1[0]];
17348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
17358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_top_mv_pred_addr[3] = pu4_map_ref_idx_to_poc_l1[p1_refTop1[1]];
17368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[0] = apv_map_ref_idx_to_poc[p1_refLeft0[0]];
17378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ppv_left_mv_pred_addr[1] = pu4_map_ref_idx_to_poc_l1[p1_refLeft0[1]];
17388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
17398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u4_bot_mb)
17408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
17418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* store The Left Mb Type*/
17428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_dec->deblk_left_mb[0].u1_mb_type =
17438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            (ps_cur_mb_params - 1)->u1_mb_type;
17448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_dec->deblk_left_mb[1].u1_mb_type = ps_cur_mb_params->u1_mb_type;
17458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
17478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_deblk_top_mb[u4_bot_mb].u1_mb_type = u1_cur_mb_type;
17488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
17498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* For transform 8x8 disable deblocking of the intrernal edges of a 8x8 block */
17508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_cur_mb_info->u1_tran_form8x8)
17518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
17528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[1] = 0;
17538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[3] = 0;
17548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[5] = 0;
17558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[7] = 0;
17568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
17578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
17598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*!
17638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
17648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \if Function name : ih264d_fill_bs_for_mb \endif
17658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief
17678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Determines the boundary strength (Bs), for the complete MB. Bs is
17688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    determined for each block boundary between two neighbouring 4x4
17698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    luma blocks, then packed in a UWORD32, first Bs placed in MSB and
17708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    so on.  Such packed Bs values for all 8 edges are kept in an array.
17718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \return
17738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Returns the packed boundary strength(Bs)  MSB -> LSB Bs0|Bs1|Bs2|Bs3
17748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
17768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
17778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_for_mb(deblk_mb_t * ps_cur_mb_params,
17798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           deblk_mb_t * ps_top_mb_params,
17808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           deblk_mb_t * ps_left_mb_params,
17818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           mv_pred_t *ps_cur_mv_pred,
17828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           mv_pred_t *ps_top_mv_pred,
17838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           UWORD8 *puc_cur_nnz,
17848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           UWORD8 *puc_top_nnz,
17858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           void **ppv_map_ref_idx_to_poc,
17868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           UWORD32 ui_mbAff,
17878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           UWORD32 ui_bs_table[], /* pointer to the BsTable array */
17888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           mv_pred_t *ps_leftmost_mv_pred,
17898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           neighbouradd_t *ps_left_addr,
17908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                           neighbouradd_t *ps_top_add)
17918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
17928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bs_horz = 0;
17938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 edge, u1_top_intra = 0, u1_left_intra = 0;
17948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mv_pred_t *ps_left_mv_pred;
17958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_cur_mv0, i2_cur_mv1, i16_curMv2, i16_curMv3;
17968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_left_mv0, i2_left_mv1, i2_left_mv2, i2_left_mv3;
17978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_top_mv0, i2_top_mv1, i16_topMv2, i16_topMv3;
17988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD8 i1_cur_ref0, i1_cur_ref1, i1_left_ref0, i1_left_ref1, i1_top_ref0, i1_top_ref1;
17998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 uc_cur_nnz, uc_left_nnz, uc_top_nnz, u1_mb_type, uc_Bslice;
18008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void **ppv_map_ref_idx_to_poc_l0, **ppv_map_ref_idx_to_poc_l1;
18018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 uc_temp;
18028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 uc_cur_mb_fld, uc_top_mb_fld;
18038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 c_mv_limit;
18048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_mb_type = ps_cur_mb_params->u1_mb_type;
18068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    uc_Bslice = u1_mb_type & D_B_SLICE;
18078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l0 = ppv_map_ref_idx_to_poc;
18088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ppv_map_ref_idx_to_poc_l1 = ppv_map_ref_idx_to_poc + POC_LIST_L0_TO_L1_DIFF;
18098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_top_mb_params = ps_top_mb_params ? ps_top_mb_params : ps_cur_mb_params;
18118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_top_intra = ps_top_mb_params->u1_mb_type & D_INTRA_MB;
18128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_left_intra = ps_left_mb_params->u1_mb_type & D_INTRA_MB;
18138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui_bs_table[4] = 0x04040404; //Default for INTRA MB Boundary edges.
18158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    uc_cur_mb_fld = (ps_cur_mb_params->u1_mb_type & D_FLD_MB) >> 7;
18168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    uc_top_mb_fld = (ps_top_mb_params->u1_mb_type & D_FLD_MB) >> 7;
18178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    c_mv_limit = 4 >> uc_cur_mb_fld;
18198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if((0 == uc_cur_mb_fld) && (0 == uc_top_mb_fld))
18208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
18218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ui_bs_table[0] = 0x04040404;
18228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
18238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
18248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
18258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ui_bs_table[0] = 0x03030303;
18268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
18278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(edge = 0; edge < 4;
18298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    edge++, ps_top_mv_pred = ps_cur_mv_pred - 4, puc_top_nnz =
18308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    puc_cur_nnz - 4)
18318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
18328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        //Each iteration of this loop fills the four BS values of one HORIZ edge and
18338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        //one BS value for each of the four VERT edges.
18348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD8 i = 0;
18358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 uc_bs_horiz, uc_bs_vert;
18368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 ui_cnd;
18378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        void *ui_ref_pic_addr[4];
18388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 uc_mixed_mode_edge;
18398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        uc_mixed_mode_edge = 0;
18418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        uc_temp = (ui_mbAff << 4) + 13;
18438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        uc_cur_nnz = *(puc_cur_nnz - uc_temp);
18458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_left_mv_pred = ps_leftmost_mv_pred + (edge << 2);
18468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(i = 0; i < 4; i++, ps_top_mv_pred++, ps_cur_mv_pred++)
18488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
18498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            //Each iteration of this inner loop computes a HORIZ
18508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            //and a VERT BS value for a 4x4 block
18518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            uc_left_nnz = uc_cur_nnz;
18538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            uc_cur_nnz = *puc_cur_nnz++;
18548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            uc_top_nnz = *puc_top_nnz++;
18558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            //VERT edge is assigned BS values first
18578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ui_cnd = !(uc_left_nnz || uc_cur_nnz);
18588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            uc_bs_vert = 2;
18598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(ui_cnd)
18618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
18628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv0 = ps_left_mv_pred->i2_mv[0];
18638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv1 = ps_left_mv_pred->i2_mv[1];
18648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv2 = ps_left_mv_pred->i2_mv[2];
18658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_left_mv3 = ps_left_mv_pred->i2_mv[3];
18668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv0 = ps_cur_mv_pred->i2_mv[0];
18688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv1 = ps_cur_mv_pred->i2_mv[1];
18698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv2 = ps_cur_mv_pred->i2_mv[2];
18708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv3 = ps_cur_mv_pred->i2_mv[3];
18718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref0 = ps_cur_mv_pred->i1_ref_frame[0];
18728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref1 = ps_cur_mv_pred->i1_ref_frame[1];
18738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_ref_pic_addr[2] = ppv_map_ref_idx_to_poc_l0[i1_cur_ref0];
18748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_ref_pic_addr[3] = ppv_map_ref_idx_to_poc_l1[i1_cur_ref1];
18758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(i)
18778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
18788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_left_ref0 = ps_left_mv_pred->i1_ref_frame[0];
18798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_left_ref1 = ps_left_mv_pred->i1_ref_frame[1];
18808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[0] = ppv_map_ref_idx_to_poc_l0[i1_left_ref0];
18818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[1] = ppv_map_ref_idx_to_poc_l1[i1_left_ref1];
18828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
18838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
18848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
18858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[0] = ps_left_addr->u4_add[edge & 2];
18868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[1] = ps_left_addr->u4_add[1 + (edge & 2)];
18878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
18888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(!uc_Bslice)
18898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
18908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_vert =
18918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    (ui_ref_pic_addr[0] != ui_ref_pic_addr[2])
18928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv0
18938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv0))
18948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
18958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv1
18968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
18978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit);
18988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
18998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
19008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
19018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD8 uc_bs_temp1, uc_bs_temp2;
19028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_vert = 1;
19048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_temp1 =
19068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_left_mv0 - i2_cur_mv0))
19078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
19088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv1
19098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
19108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit)
19118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv2
19128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv2))
19138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
19148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv3
19158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
19168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit));
19178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_temp2 =
19198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_left_mv0 - i16_curMv2))
19208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
19218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv1
19228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
19238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit)
19248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv2
19258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv0))
19268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
19278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_left_mv3
19288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
19298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit));
19308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_vert =
19328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    (((ui_ref_pic_addr[0] != ui_ref_pic_addr[2])
19338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || (ui_ref_pic_addr[1]
19348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != ui_ref_pic_addr[3]))
19358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || (uc_bs_temp1))
19368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    && (((ui_ref_pic_addr[0]
19378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != ui_ref_pic_addr[3])
19388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || (ui_ref_pic_addr[1]
19398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                                    != ui_ref_pic_addr[2]))
19408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || (uc_bs_temp2));
19418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
19438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
19448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            //Fill the VERT BS, only if valid i.e.,
19458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            //if it is a non-edge OR it is an edge, which is not yet filled
19468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            uc_bs_vert = (!i && u1_left_intra) ? 4 : uc_bs_vert;
19478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ui_bs_table[i + 4] = (ui_bs_table[i + 4] << 8) | uc_bs_vert;
19488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            //HORIZ edge is assigned BS values next
19508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ui_cnd = !(uc_top_nnz || uc_cur_nnz);
19518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            uc_bs_horiz = 2;
19528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(ui_cnd)
19548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
19558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                uc_mixed_mode_edge =
19568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                (0 == edge) ? (uc_top_mb_fld != uc_cur_mb_fld) : 0;
19578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_cnd = 1 - uc_mixed_mode_edge;
19588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                uc_bs_horiz = uc_mixed_mode_edge;
19598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
19608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(ui_cnd)
19628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
19638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv0 = ps_cur_mv_pred->i2_mv[0];
19648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_cur_mv1 = ps_cur_mv_pred->i2_mv[1];
19658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv2 = ps_cur_mv_pred->i2_mv[2];
19668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_curMv3 = ps_cur_mv_pred->i2_mv[3];
19678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref0 = ps_cur_mv_pred->i1_ref_frame[0];
19688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i1_cur_ref1 = ps_cur_mv_pred->i1_ref_frame[1];
19698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_top_mv0 = ps_top_mv_pred->i2_mv[0];
19718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i2_top_mv1 = ps_top_mv_pred->i2_mv[1];
19728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_topMv2 = ps_top_mv_pred->i2_mv[2];
19738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                i16_topMv3 = ps_top_mv_pred->i2_mv[3];
19748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_ref_pic_addr[2] = ppv_map_ref_idx_to_poc_l0[i1_cur_ref0];
19758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_ref_pic_addr[3] = ppv_map_ref_idx_to_poc_l1[i1_cur_ref1];
19768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(edge)
19778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
19788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_top_ref0 = ps_top_mv_pred->i1_ref_frame[0];
19798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    i1_top_ref1 = ps_top_mv_pred->i1_ref_frame[1];
19808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[0] = ppv_map_ref_idx_to_poc_l0[i1_top_ref0];
19818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[1] = ppv_map_ref_idx_to_poc_l1[i1_top_ref1];
19828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
19838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
19848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
19858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[0] = ps_top_add->u4_add[i & 2];
19868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    ui_ref_pic_addr[1] = ps_top_add->u4_add[1 + (i & 2)];
19878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
19888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                if(!uc_Bslice)
19898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
19908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_horiz =
19918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    (ui_ref_pic_addr[0] != ui_ref_pic_addr[2])
19928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_top_mv0
19938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv0))
19948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
19958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_top_mv1
19968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
19978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit);
19988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
19998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                else
20008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
20018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    UWORD8 uc_bs_temp1, uc_bs_temp2;
20028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_horiz = 1;
20048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_temp1 =
20068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_top_mv0 - i2_cur_mv0))
20078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
20088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_top_mv1
20098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
20108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit)
20118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv2
20128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv2))
20138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
20148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv3
20158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
20168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit));
20178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_temp2 =
20198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    ((ABS((i2_top_mv0 - i16_curMv2))
20208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    >= 4)
20218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i2_top_mv1
20228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i16_curMv3))
20238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit)
20248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv2
20258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv0))
20268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= 4)
20278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    | (ABS((i16_topMv3
20288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    - i2_cur_mv1))
20298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    >= (UWORD8)c_mv_limit));
20308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_bs_horiz =
20328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                    (((ui_ref_pic_addr[0] != ui_ref_pic_addr[2])
20338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || (ui_ref_pic_addr[1]
20348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != ui_ref_pic_addr[3]))
20358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    || (uc_bs_temp1))
20368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                    && (((ui_ref_pic_addr[0]
20378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    != ui_ref_pic_addr[3])
20388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || (ui_ref_pic_addr[1]
20398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                                    != ui_ref_pic_addr[2]))
20408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                                    || (uc_bs_temp2));
20418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
20438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
20448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_left_mv_pred = ps_cur_mv_pred;
20458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs_horz = (u4_bs_horz << 8) + uc_bs_horiz;
20468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
20478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        //Fill the HORIZ BS, only if valid i.e.,
20488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        //if it is a non-edge OR it is an edge, which is not yet filled
20498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(edge || (!edge && !u1_top_intra))
20508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ui_bs_table[edge] = u4_bs_horz;
20518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
20528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
20538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*!
20558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
20568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \if Function name : ih264d_fill_bs_for_extra_left_edge \endif
20578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
20588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief
20598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Fills the boundary strength (Bs), for the top extra edge. ock
20608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
20618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \return
20628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Returns the packed boundary strength(Bs)  MSB -> LSB Bs0|Bs1|Bs2|Bs3
20638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
20648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
20658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
20668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_for_extra_left_edge(deblk_mb_t *ps_cur_deblk_mb,
20678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        deblk_mb_t *ps_leftDeblkMb,
20688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        UWORD8* puc_cur_nnz,
20698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        UWORD8 uc_botMb)
20708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
20718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Set the Flag in uc_deblocking_mode variable of current MB*/
20728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* for mixed mode edge*/
20738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_deblk_mb->u1_single_call = 0;
20748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_cur_deblk_mb->u1_mb_type & D_INTRA_MB)
20768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
20778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_deblk_mb->u4_bs_table[4] = 0x04040404;
20788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_deblk_mb->u4_bs_table[9] = 0x04040404;
20798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
20808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else if((ps_leftDeblkMb->u1_mb_type & D_INTRA_MB)
20818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    && ((ps_leftDeblkMb + 1)->u1_mb_type & D_INTRA_MB))
20828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
20838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_deblk_mb->u4_bs_table[4] = 0x04040404;
20848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_deblk_mb->u4_bs_table[9] = 0x04040404;
20858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
20868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    else
20878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
20888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Get strengths of left MB edge */
20898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_bs;
20908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 uc_Bs;
20918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i;
20928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 ui_curMbFld;
20938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 *puc_left_nnz;
20948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 ui_bs_left_edge[2];
20958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ui_curMbFld = (ps_cur_deblk_mb->u1_mb_type & D_FLD_MB) >> 7;
20978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        puc_left_nnz = puc_cur_nnz - 29;
20998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if((ui_curMbFld == 0) && uc_botMb)
21008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
21018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            puc_left_nnz -= 8;
21028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
21038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else if(ui_curMbFld && uc_botMb)
21048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
21058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            puc_left_nnz -= 16;
21068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
21078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(ui_curMbFld)
21098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
21108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(ps_leftDeblkMb->u1_mb_type & D_INTRA_MB)
21118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[0] = 0x04040404;
21138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                puc_left_nnz += 16;
21148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                puc_cur_nnz += 8;
21158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            else
21178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                u4_bs = 0;
21198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                for(i = 4; i > 0; i--)
21208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
21218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_Bs = ((*puc_cur_nnz || *puc_left_nnz)) ? 2 : 1;
21228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs = (u4_bs << 8) | uc_Bs;
21238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    puc_left_nnz += 4;
21248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(i & 0x01)
21258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        puc_cur_nnz += 4;
21268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
21278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[0] = u4_bs;
21288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if((ps_leftDeblkMb + 1)->u1_mb_type & D_INTRA_MB)
21318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[1] = 0x04040404;
21338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            else
21358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                u4_bs = 0;
21378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                for(i = 4; i > 0; i--)
21388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
21398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_Bs = ((*puc_cur_nnz || *puc_left_nnz)) ? 2 : 1;
21408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs = (u4_bs << 8) | uc_Bs;
21418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    puc_left_nnz += 4;
21428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(i & 0x01)
21438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        puc_cur_nnz += 4;
21448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
21458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[1] = u4_bs;
21468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
21488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
21498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
21508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD8 *puc_curNnzB, *puc_leftNnzB;
21518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            puc_curNnzB = puc_cur_nnz;
21528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            puc_leftNnzB = puc_left_nnz + 16;
21538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(ps_leftDeblkMb->u1_mb_type & D_INTRA_MB)
21548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[0] = 0x04040404;
21568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            else
21588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                u4_bs = 0;
21608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                for(i = 4; i > 0; i--, puc_cur_nnz += 4)
21618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
21628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_Bs = ((*puc_cur_nnz || *puc_left_nnz)) ? 2 : 1;
21638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs = (u4_bs << 8) | uc_Bs;
21648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(i & 0x01)
21658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        puc_left_nnz += 4;
21668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
21678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[0] = u4_bs;
21688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if((ps_leftDeblkMb + 1)->u1_mb_type & D_INTRA_MB)
21718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[1] = 0x04040404;
21738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            else
21758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
21768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                u4_bs = 0;
21778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                for(i = 4; i > 0; i--, puc_curNnzB += 4)
21788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                {
21798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    uc_Bs = ((*puc_curNnzB || *puc_leftNnzB)) ? 2 : 1;
21808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    u4_bs = (u4_bs << 8) | uc_Bs;
21818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                    if(i & 0x01)
21828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        puc_leftNnzB += 4;
21838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                }
21848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                ui_bs_left_edge[1] = u4_bs;
21858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
21868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
21878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Copy The Values in Cur Deblk Mb Parameters */
21888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_deblk_mb->u4_bs_table[4] = ui_bs_left_edge[0];
21898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_deblk_mb->u4_bs_table[9] = ui_bs_left_edge[1];
21908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
21918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
21938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*!
21958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
21968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \if Function name : ih264d_fill_bs_for_extra_top_edge \endif
21978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
21988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief
21998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Fills the boundary strength (Bs), for the top extra edge. ock
22008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
22018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \return
22028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Returns the packed boundary strength(Bs)  MSB -> LSB Bs0|Bs1|Bs2|Bs3
22038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
22048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************
22058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
22068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_for_extra_top_edge(deblk_mb_t *ps_cur_mb_params,
22078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD8 u1_Edge0_mb_typ,
22088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD8 u1_Edge1_mb_typ,
22098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD8 *pu1_curNnz,
22108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD8 *pu1_topNnz)
22118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
22128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bs;
22138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 uc_Bs;
22148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i;
22158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_cur_nnz_tmp;
22168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top_nnz_tmp;
22178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_top_edge;
22188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_top_mb_type;
22198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(u1_top_edge = 0; u1_top_edge < 2; u1_top_edge++)
22208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
22218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u1_top_mb_type = u1_top_edge ? u1_Edge1_mb_typ : u1_Edge0_mb_typ;
22228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_cur_nnz_tmp = pu1_curNnz;
22238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_top_nnz_tmp = pu1_topNnz + (u1_top_edge << 2);
22248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if((ps_cur_mb_params->u1_mb_type & D_INTRA_MB)
22268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        + (u1_top_mb_type & D_INTRA_MB))
22278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
22288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs = 0x03030303;
22298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
22308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
22318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
22328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_bs = 0;
22338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            for(i = 4; i > 0; i--, pu1_cur_nnz_tmp += 1, pu1_top_nnz_tmp += 1)
22348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
22358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                uc_Bs = ((*pu1_cur_nnz_tmp || *pu1_top_nnz_tmp)) ? 2 : 1;
22368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                u4_bs = (u4_bs << 8) | uc_Bs;
22378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
22388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
22398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(u1_top_edge)
22408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_cur_mb_params->u4_bs_table[0] = u4_bs;
22418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
22428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            ps_cur_mb_params->u4_bs_table[8] = u4_bs;
22438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
22448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
22458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_mbedge_4(dec_struct_t * ps_dec,
22488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                             dec_mb_info_t * ps_cur_mb_info,
22498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                             const UWORD16 u2_mbxn_mb)
22508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
22518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* deblk_mb_t Params */
22538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblk_mb_t *ps_cur_mb_params; /*< Parameters of current MacroBlock */
22548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblkmb_neighbour_t *ps_deblk_top_mb;
22558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 * pu4_bs_table;
22568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_cur_mb_type;
22578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Neighbour availability */
22598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Initialization */
22608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mbx = ps_cur_mb_info->u2_mbx;
22618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mby = ps_cur_mb_info->u2_mby;
22628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u1_pingpong = u2_mbx & 0x01;
22638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_deblk_top_mb = ps_dec->ps_deblk_top_mb + u2_mbx;
22648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer assignment for Current DeblkMB, Current Mv Pred  */
22678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mb_params = ps_dec->ps_deblk_mbn + u2_mbxn_mb;
22688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_cur_mb_type = ps_cur_mb_params->u1_mb_type;
22708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_deblk_top_mb->u1_mb_type = u1_cur_mb_type;
22728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
22748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 mb_qp_temp;
22758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_topmb_qp = ps_deblk_top_mb->u1_mb_qp;
22778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_deblk_top_mb->u1_mb_qp = ps_cur_mb_params->u1_mb_qp;
22788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_left_mb_qp = ps_dec->deblk_left_mb[1].u1_mb_qp;
22808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_dec->deblk_left_mb[1].u1_mb_qp = ps_cur_mb_params->u1_mb_qp;
22818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
22838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mb_params->u1_single_call = 1;
22858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_dec->deblk_left_mb[1].u1_mb_type = ps_cur_mb_params->u1_mb_type;
22878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* if no deblocking required for current Mb then continue */
22888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Check next Mbs   in Mb group                           */
22898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_cur_mb_params->u1_deblocking_mode & MB_DISABLE_FILTERING)
22908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
22918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Storing the leftMbtype for next Mb */
22928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        return;
22938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
22948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Compute BS function */
22968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table = ps_cur_mb_params->u4_bs_table;
22978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[4] = 0x04040404;
22998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[0] = 0x04040404;
23008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[1] = 0;
23018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[2] = 0;
23028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[3] = 0;
23038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[5] = 0;
23048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[6] = 0;
23058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table[7] = 0;
23068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
23088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_mbedge_2(dec_struct_t * ps_dec,
23108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                             dec_mb_info_t * ps_cur_mb_info,
23118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                             const UWORD16 u2_mbxn_mb)
23128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
23138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* deblk_mb_t Params */
23158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblk_mb_t *ps_cur_mb_params; /*< Parameters of current MacroBlock */
23168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblkmb_neighbour_t *ps_deblk_top_mb;
23178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 * pu4_bs_table;
23188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_cur_mb_type;
23198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Neighbour availability */
23218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Initialization */
23228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mbx = ps_cur_mb_info->u2_mbx;
23238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u2_mby = ps_cur_mb_info->u2_mby;
23248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    const UWORD32 u1_pingpong = u2_mbx & 0x01;
23258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_deblk_top_mb = ps_dec->ps_deblk_top_mb + u2_mbx;
23268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Pointer assignment for Current DeblkMB, Current Mv Pred  */
23298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mb_params = ps_dec->ps_deblk_mbn + u2_mbxn_mb;
23308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_cur_mb_type = ps_cur_mb_params->u1_mb_type;
23328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_deblk_top_mb->u1_mb_type = u1_cur_mb_type;
23348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
23368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 mb_qp_temp;
23378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_topmb_qp = ps_deblk_top_mb->u1_mb_qp;
23398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_deblk_top_mb->u1_mb_qp = ps_cur_mb_params->u1_mb_qp;
23408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_cur_mb_params->u1_left_mb_qp = ps_dec->deblk_left_mb[1].u1_mb_qp;
23428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        ps_dec->deblk_left_mb[1].u1_mb_qp = ps_cur_mb_params->u1_mb_qp;
23438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
23458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_cur_mb_params->u1_single_call = 1;
23478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ps_dec->deblk_left_mb[1].u1_mb_type = ps_cur_mb_params->u1_mb_type;
23498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* if no deblocking required for current Mb then continue */
23508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Check next Mbs   in Mb group                           */
23518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(ps_cur_mb_params->u1_deblocking_mode & MB_DISABLE_FILTERING)
23528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
23538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Storing the leftMbtype for next Mb */
23548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        return;
23558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
23568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Compute BS function */
23588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu4_bs_table = ps_cur_mb_params->u4_bs_table;
23598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
23618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 top_mb_csbp, left_mb_csbp, cur_mb_csbp;
23628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 top_edge, left_edge;
23638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        top_mb_csbp = ps_cur_mb_info->ps_top_mb->u2_luma_csbp;
23658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        left_mb_csbp = ps_cur_mb_info->ps_left_mb->u2_luma_csbp;
23668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        cur_mb_csbp = ps_cur_mb_info->ps_curmb->u2_luma_csbp;
23678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        top_mb_csbp = top_mb_csbp >> 12;
23698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        top_edge = top_mb_csbp | (cur_mb_csbp & 0xf);
23708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(top_edge)
23728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[0] = 0x02020202;
23738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
23748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[0] = 0;
23758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        cur_mb_csbp = cur_mb_csbp & CSBP_LEFT_BLOCK_MASK;
23778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        left_mb_csbp = left_mb_csbp & CSBP_RIGHT_BLOCK_MASK;
23788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        left_edge = cur_mb_csbp | left_mb_csbp;
23808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(left_edge)
23828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[4] = 0x02020202;
23838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
23848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu4_bs_table[4] = 0;
23858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[1] = 0;
23878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[2] = 0;
23888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[3] = 0;
23898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[5] = 0;
23908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[6] = 0;
23918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu4_bs_table[7] = 0;
23928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
23938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
2395