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#ifndef _IH264D_DEBLOCKING_H_ 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define _IH264D_DEBLOCKING_H_ 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*! 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \file ih264d_deblocking.h 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Declarations of deblocking functions 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \date 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 23/11/2002 318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \author AI 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************** 348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_typedefs.h" 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_macros.h" 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_platform_macros.h" 388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264d_structs.h" 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD8 ih264d_set_deblocking_parameters(deblk_mb_t * ps_cur_deblk_mb, 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_slice_params_t * ps_slice, 428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mb_ngbr_availablity, 438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mb_field_decoding_flag); 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 458ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissenvoid ih264d_copy_intra_pred_line(dec_struct_t *ps_dec, 468ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen dec_mb_info_t *ps_cur_mb_info, 478ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen UWORD32 nmb_index); 488ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid FilterBoundaryLeft(tfr_ctxt_t * const ps_tfr_cxt, 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cb_qp_idx_ofst, 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cr_qp_idx_ofst, 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_cur_mb, 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_strd_y, 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_strd_uv, 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_left_mb, 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD32 pu4_bs_tab[], 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD8 u1_cur_fld); 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid FilterBoundaryTop(tfr_ctxt_t * const ps_tfr_cxt, 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cb_qp_idx_ofst, 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cr_qp_idx_ofst, 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_cur_mb, 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD16 u2_strd_y, 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD16 u2_strd_uv, 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_top_mb, 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD32 u4_bs); 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid deblock_mb(tfr_ctxt_t * const ps_tfr_cxt, 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cb_qp_idx_ofst, 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cr_qp_idx_ofst, 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_cur_mb, 708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_y, 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_uv, 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_top_mb, 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_left_mb, 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD8 u1_cur_fld, 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD8 u1_extra_top_edge); 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_mb_mbaff(dec_struct_t *ps_dec, 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * const ps_tfr_cxt, 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cb_qp_idx_ofst, 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cr_qp_idx_ofst, 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_cur_mb, 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_y, 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_uv, 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_top_mb, 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S deblk_mb_t * const ps_left_mb, 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD8 u1_cur_fld, 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD8 u1_extra_top_edge); 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_picture_mbaff(dec_struct_t * const ps_dec); 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_picture_non_mbaff(dec_struct_t * const ps_dec); 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_picture_progressive(dec_struct_t * const ps_dec); 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_compute_bs_mbaff(dec_struct_t * ps_dec, 958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_mb_info_t * ps_cur_mb_info, 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD16 u2_mbxn_mb); 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_compute_bs_non_mbaff(dec_struct_t * ps_dec, 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_mb_info_t * ps_cur_mb_info, 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD16 u2_mbxn_mb); 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_mbedge_2(dec_struct_t * ps_dec, 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_mb_info_t * ps_cur_mb_info, 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD16 u2_mbxn_mb); 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_mbedge_4(dec_struct_t * ps_dec, 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_mb_info_t * ps_cur_mb_info, 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const UWORD16 u2_mbxn_mb); 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_16x16mb_pslice(mv_pred_t *ps_cur_mv_pred, 1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_top_mv_pred, 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **ppv_map_ref_idx_to_poc, 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 *pu4_bs_table, 1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_leftmost_mv_pred, 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S neighbouradd_t *ps_left_addr, 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **u4_pic_addrress, 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_ver_mvlimit); 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_non16x16mb_pslice(mv_pred_t *ps_cur_mv_pred, 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_top_mv_pred, 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **ppv_map_ref_idx_to_poc, 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 *pu4_bs_table, 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_leftmost_mv_pred, 1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S neighbouradd_t *ps_left_addr, 1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **u4_pic_addrress, 1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_ver_mvlimit); 1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_16x16mb_bslice(mv_pred_t *ps_cur_mv_pred, 1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_top_mv_pred, 1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **ppv_map_ref_idx_to_poc, 1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 *pu4_bs_table, 1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_leftmost_mv_pred, 1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S neighbouradd_t *ps_left_addr, 1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **u4_pic_addrress, 1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_ver_mvlimit); 1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs1_non16x16mb_bslice(mv_pred_t *ps_cur_mv_pred, 1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_top_mv_pred, 1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **ppv_map_ref_idx_to_poc, 1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 *pu4_bs_table, 1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mv_pred_t *ps_leftmost_mv_pred, 1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S neighbouradd_t *ps_left_addr, 1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void **u4_pic_addrress, 1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_ver_mvlimit); 1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_xtra_left_edge_cur_fld(UWORD32 *pu4_bs, 1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 u4_left_mb_t_csbp, 1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 u4_left_mb_b_csbp, 1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 u4_cur_mb_csbp, 1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_cur_mb_top); 1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_fill_bs_xtra_left_edge_cur_frm(UWORD32 *pu4_bs, 1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 u4_left_mb_t_csbp, 1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 u4_left_mb_b_csbp, 1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 u4_cur_mb_csbp, 1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_cur_mb_top); 1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_mb_nonmbaff(dec_struct_t *ps_dec, 1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t * const ps_tfr_cxt, 1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cb_qp_idx_ofst, 1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S const WORD8 i1_cr_qp_idx_ofst, 1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i4_strd_y, 1628ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen WORD32 i4_strd_uv); 1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_init_deblk_tfr_ctxt(dec_struct_t * ps_dec, 1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pad_mgr_t *ps_pad_mgr, 1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S tfr_ctxt_t *ps_tfr_cxt, 1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD16 u2_image_wd_mb, 1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 u1_mbaff); 1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264d_deblock_mb_level(dec_struct_t *ps_dec, 1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S dec_mb_info_t *ps_cur_mb_info, 1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 nmb_index); 1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /* _IH264D_DEBLOCKING_H_ */ 175