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