Hamsalekha S | 8d3d303 | 2015-03-13 21:24:58 +0530 | [diff] [blame] | 1 | /****************************************************************************** |
| 2 | * |
| 3 | * Copyright (C) 2015 The Android Open Source Project |
| 4 | * |
| 5 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | * you may not use this file except in compliance with the License. |
| 7 | * You may obtain a copy of the License at: |
| 8 | * |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | * |
| 11 | * Unless required by applicable law or agreed to in writing, software |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | * See the License for the specific language governing permissions and |
| 15 | * limitations under the License. |
| 16 | * |
| 17 | ***************************************************************************** |
| 18 | * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| 19 | */ |
| 20 | #ifndef _IH264D_DEBLOCKING_H_ |
| 21 | #define _IH264D_DEBLOCKING_H_ |
| 22 | /*! |
| 23 | ************************************************************************** |
| 24 | * \file ih264d_deblocking.h |
| 25 | * |
| 26 | * \brief |
| 27 | * Declarations of deblocking functions |
| 28 | * |
| 29 | * \date |
| 30 | * 23/11/2002 |
| 31 | * |
| 32 | * \author AI |
| 33 | ************************************************************************** |
| 34 | */ |
| 35 | #include "ih264_typedefs.h" |
| 36 | #include "ih264_macros.h" |
| 37 | #include "ih264_platform_macros.h" |
| 38 | #include "ih264d_structs.h" |
| 39 | |
| 40 | WORD8 ih264d_set_deblocking_parameters(deblk_mb_t * ps_cur_deblk_mb, |
| 41 | dec_slice_params_t * ps_slice, |
| 42 | UWORD8 u1_mb_ngbr_availablity, |
| 43 | UWORD8 u1_mb_field_decoding_flag); |
| 44 | |
Hamsalekha S | caab4fe | 2015-05-07 16:38:07 +0530 | [diff] [blame] | 45 | void ih264d_copy_intra_pred_line(dec_struct_t *ps_dec, |
| 46 | dec_mb_info_t *ps_cur_mb_info, |
| 47 | UWORD32 nmb_index); |
| 48 | |
Hamsalekha S | 8d3d303 | 2015-03-13 21:24:58 +0530 | [diff] [blame] | 49 | void FilterBoundaryLeft(tfr_ctxt_t * const ps_tfr_cxt, |
| 50 | const WORD8 i1_cb_qp_idx_ofst, |
| 51 | const WORD8 i1_cr_qp_idx_ofst, |
| 52 | deblk_mb_t * const ps_cur_mb, |
| 53 | UWORD16 u2_strd_y, |
| 54 | UWORD16 u2_strd_uv, |
| 55 | deblk_mb_t * const ps_left_mb, |
| 56 | const UWORD32 pu4_bs_tab[], |
| 57 | const UWORD8 u1_cur_fld); |
| 58 | void FilterBoundaryTop(tfr_ctxt_t * const ps_tfr_cxt, |
| 59 | const WORD8 i1_cb_qp_idx_ofst, |
| 60 | const WORD8 i1_cr_qp_idx_ofst, |
| 61 | deblk_mb_t * const ps_cur_mb, |
| 62 | const UWORD16 u2_strd_y, |
| 63 | const UWORD16 u2_strd_uv, |
| 64 | deblk_mb_t * const ps_top_mb, |
| 65 | const UWORD32 u4_bs); |
| 66 | void deblock_mb(tfr_ctxt_t * const ps_tfr_cxt, |
| 67 | const WORD8 i1_cb_qp_idx_ofst, |
| 68 | const WORD8 i1_cr_qp_idx_ofst, |
| 69 | deblk_mb_t * const ps_cur_mb, |
| 70 | WORD32 i4_strd_y, |
| 71 | WORD32 i4_strd_uv, |
| 72 | deblk_mb_t * const ps_top_mb, |
| 73 | deblk_mb_t * const ps_left_mb, |
| 74 | const UWORD8 u1_cur_fld, |
| 75 | const UWORD8 u1_extra_top_edge); |
| 76 | void ih264d_deblock_mb_mbaff(dec_struct_t *ps_dec, |
| 77 | tfr_ctxt_t * const ps_tfr_cxt, |
| 78 | const WORD8 i1_cb_qp_idx_ofst, |
| 79 | const WORD8 i1_cr_qp_idx_ofst, |
| 80 | deblk_mb_t * const ps_cur_mb, |
| 81 | WORD32 i4_strd_y, |
| 82 | WORD32 i4_strd_uv, |
| 83 | deblk_mb_t * const ps_top_mb, |
| 84 | deblk_mb_t * const ps_left_mb, |
| 85 | const UWORD8 u1_cur_fld, |
| 86 | const UWORD8 u1_extra_top_edge); |
| 87 | |
| 88 | void ih264d_deblock_picture_mbaff(dec_struct_t * const ps_dec); |
| 89 | |
| 90 | void ih264d_deblock_picture_non_mbaff(dec_struct_t * const ps_dec); |
| 91 | |
| 92 | void ih264d_deblock_picture_progressive(dec_struct_t * const ps_dec); |
| 93 | |
| 94 | void ih264d_compute_bs_mbaff(dec_struct_t * ps_dec, |
| 95 | dec_mb_info_t * ps_cur_mb_info, |
| 96 | const UWORD16 u2_mbxn_mb); |
| 97 | void ih264d_compute_bs_non_mbaff(dec_struct_t * ps_dec, |
| 98 | dec_mb_info_t * ps_cur_mb_info, |
| 99 | const UWORD16 u2_mbxn_mb); |
| 100 | |
| 101 | void ih264d_fill_bs_mbedge_2(dec_struct_t * ps_dec, |
| 102 | dec_mb_info_t * ps_cur_mb_info, |
| 103 | const UWORD16 u2_mbxn_mb); |
| 104 | |
| 105 | void ih264d_fill_bs_mbedge_4(dec_struct_t * ps_dec, |
| 106 | dec_mb_info_t * ps_cur_mb_info, |
| 107 | const UWORD16 u2_mbxn_mb); |
| 108 | |
| 109 | void ih264d_fill_bs1_16x16mb_pslice(mv_pred_t *ps_cur_mv_pred, |
| 110 | mv_pred_t *ps_top_mv_pred, |
| 111 | void **ppv_map_ref_idx_to_poc, |
| 112 | UWORD32 *pu4_bs_table, |
| 113 | mv_pred_t *ps_leftmost_mv_pred, |
| 114 | neighbouradd_t *ps_left_addr, |
| 115 | void **u4_pic_addrress, |
| 116 | WORD32 i4_ver_mvlimit); |
| 117 | |
| 118 | void ih264d_fill_bs1_non16x16mb_pslice(mv_pred_t *ps_cur_mv_pred, |
| 119 | mv_pred_t *ps_top_mv_pred, |
| 120 | void **ppv_map_ref_idx_to_poc, |
| 121 | UWORD32 *pu4_bs_table, |
| 122 | mv_pred_t *ps_leftmost_mv_pred, |
| 123 | neighbouradd_t *ps_left_addr, |
| 124 | void **u4_pic_addrress, |
| 125 | WORD32 i4_ver_mvlimit); |
| 126 | |
| 127 | void ih264d_fill_bs1_16x16mb_bslice(mv_pred_t *ps_cur_mv_pred, |
| 128 | mv_pred_t *ps_top_mv_pred, |
| 129 | void **ppv_map_ref_idx_to_poc, |
| 130 | UWORD32 *pu4_bs_table, |
| 131 | mv_pred_t *ps_leftmost_mv_pred, |
| 132 | neighbouradd_t *ps_left_addr, |
| 133 | void **u4_pic_addrress, |
| 134 | WORD32 i4_ver_mvlimit); |
| 135 | |
| 136 | void ih264d_fill_bs1_non16x16mb_bslice(mv_pred_t *ps_cur_mv_pred, |
| 137 | mv_pred_t *ps_top_mv_pred, |
| 138 | void **ppv_map_ref_idx_to_poc, |
| 139 | UWORD32 *pu4_bs_table, |
| 140 | mv_pred_t *ps_leftmost_mv_pred, |
| 141 | neighbouradd_t *ps_left_addr, |
| 142 | void **u4_pic_addrress, |
| 143 | WORD32 i4_ver_mvlimit); |
| 144 | |
| 145 | void ih264d_fill_bs_xtra_left_edge_cur_fld(UWORD32 *pu4_bs, |
| 146 | WORD32 u4_left_mb_t_csbp, |
| 147 | WORD32 u4_left_mb_b_csbp, |
| 148 | WORD32 u4_cur_mb_csbp, |
| 149 | UWORD32 u4_cur_mb_top); |
| 150 | |
| 151 | void ih264d_fill_bs_xtra_left_edge_cur_frm(UWORD32 *pu4_bs, |
| 152 | WORD32 u4_left_mb_t_csbp, |
| 153 | WORD32 u4_left_mb_b_csbp, |
| 154 | WORD32 u4_cur_mb_csbp, |
| 155 | UWORD32 u4_cur_mb_top); |
| 156 | |
| 157 | void ih264d_deblock_mb_nonmbaff(dec_struct_t *ps_dec, |
| 158 | tfr_ctxt_t * const ps_tfr_cxt, |
| 159 | const WORD8 i1_cb_qp_idx_ofst, |
| 160 | const WORD8 i1_cr_qp_idx_ofst, |
Hamsalekha S | 8d3d303 | 2015-03-13 21:24:58 +0530 | [diff] [blame] | 161 | WORD32 i4_strd_y, |
Hamsalekha S | caab4fe | 2015-05-07 16:38:07 +0530 | [diff] [blame] | 162 | WORD32 i4_strd_uv); |
Hamsalekha S | 8d3d303 | 2015-03-13 21:24:58 +0530 | [diff] [blame] | 163 | |
| 164 | void ih264d_init_deblk_tfr_ctxt(dec_struct_t * ps_dec, |
| 165 | pad_mgr_t *ps_pad_mgr, |
| 166 | tfr_ctxt_t *ps_tfr_cxt, |
| 167 | UWORD16 u2_image_wd_mb, |
| 168 | UWORD8 u1_mbaff); |
| 169 | |
| 170 | void ih264d_deblock_mb_level(dec_struct_t *ps_dec, |
| 171 | dec_mb_info_t *ps_cur_mb_info, |
| 172 | UWORD32 nmb_index); |
| 173 | |
| 174 | #endif /* _IH264D_DEBLOCKING_H_ */ |