1 /****************************************************************************** 2 * 3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 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 /** 19 ******************************************************************************* 20 * @file 21 * ihevc_itrans_recon.h 22 * 23 * @brief 24 * Functions declarations for inverse transform and reconstruction 25 * 26 * @author 27 * Ittiam 28 * 29 * @remarks 30 * None 31 * 32 ******************************************************************************* 33 */ 34 #ifndef _IHEVC_ITRANS_RECON_H_ 35 #define _IHEVC_ITRANS_RECON_H_ 36 37 typedef void ihevc_itrans_recon_4x4_ttype1_ft(WORD16 *pi2_src, 38 WORD16 *pi2_tmp, 39 UWORD8 *pu1_pred, 40 UWORD8 *pu1_dst, 41 WORD32 src_strd, 42 WORD32 pred_strd, 43 WORD32 dst_strd, 44 WORD32 zero_cols, 45 WORD32 zero_rows); 46 typedef void ihevc_hbd_itrans_recon_4x4_ttype1_ft(WORD16 *pi2_src, 47 WORD16 *pi2_tmp, 48 UWORD16 *pu2_pred, 49 UWORD16 *pu2_dst, 50 WORD32 src_strd, 51 WORD32 pred_strd, 52 WORD32 dst_strd, 53 WORD32 zero_cols, 54 WORD32 zero_rows, 55 UWORD8 bit_depth); 56 typedef void ihevc_itrans_recon_4x4_ft(WORD16 *pi2_src, 57 WORD16 *pi2_tmp, 58 UWORD8 *pu1_pred, 59 UWORD8 *pu1_dst, 60 WORD32 src_strd, 61 WORD32 pred_strd, 62 WORD32 dst_strd, 63 WORD32 zero_cols, 64 WORD32 zero_rows); 65 typedef void ihevc_hbd_itrans_recon_4x4_ft(WORD16 *pi2_src, 66 WORD16 *pi2_tmp, 67 UWORD16 *pu2_pred, 68 UWORD16 *pu2_dst, 69 WORD32 src_strd, 70 WORD32 pred_strd, 71 WORD32 dst_strd, 72 WORD32 zero_cols, 73 WORD32 zero_rows, 74 UWORD8 bit_depth); 75 typedef void ihevc_itrans_recon_8x8_ft(WORD16 *pi2_src, 76 WORD16 *pi2_tmp, 77 UWORD8 *pu1_pred, 78 UWORD8 *pu1_dst, 79 WORD32 src_strd, 80 WORD32 pred_strd, 81 WORD32 dst_strd, 82 WORD32 zero_cols, 83 WORD32 zero_rows); 84 typedef void ihevc_hbd_itrans_recon_8x8_ft(WORD16 *pi2_src, 85 WORD16 *pi2_tmp, 86 UWORD16 *pu2_pred, 87 UWORD16 *pu2_dst, 88 WORD32 src_strd, 89 WORD32 pred_strd, 90 WORD32 dst_strd, 91 WORD32 zero_cols, 92 WORD32 zero_rows, 93 UWORD8 bit_depth); 94 typedef void ihevc_itrans_recon_16x16_ft(WORD16 *pi2_src, 95 WORD16 *pi2_tmp, 96 UWORD8 *pu1_pred, 97 UWORD8 *pu1_dst, 98 WORD32 src_strd, 99 WORD32 pred_strd, 100 WORD32 dst_strd, 101 WORD32 zero_cols, 102 WORD32 zero_rows); 103 typedef void ihevc_hbd_itrans_recon_16x16_ft(WORD16 *pi2_src, 104 WORD16 *pi2_tmp, 105 UWORD16 *pu2_pred, 106 UWORD16 *pu2_dst, 107 WORD32 src_strd, 108 WORD32 pred_strd, 109 WORD32 dst_strd, 110 WORD32 zero_cols, 111 WORD32 zero_rows, 112 UWORD8 bit_depth); 113 typedef void ihevc_itrans_recon_32x32_ft(WORD16 *pi2_src, 114 WORD16 *pi2_tmp, 115 UWORD8 *pu1_pred, 116 UWORD8 *pu1_dst, 117 WORD32 src_strd, 118 WORD32 pred_strd, 119 WORD32 dst_strd, 120 WORD32 zero_cols, 121 WORD32 zero_rows); 122 typedef void ihevc_hbd_itrans_recon_32x32_ft(WORD16 *pi2_src, 123 WORD16 *pi2_tmp, 124 UWORD16 *pu2_pred, 125 UWORD16 *pu2_dst, 126 WORD32 src_strd, 127 WORD32 pred_strd, 128 WORD32 dst_strd, 129 WORD32 zero_cols, 130 WORD32 zero_rows, 131 UWORD8 bit_depth); 132 133 /* C function declarations */ 134 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1; 135 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4; 136 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8; 137 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16; 138 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32; 139 140 ihevc_hbd_itrans_recon_4x4_ttype1_ft ihevc_hbd_itrans_recon_4x4_ttype1; 141 ihevc_hbd_itrans_recon_4x4_ft ihevc_hbd_itrans_recon_4x4; 142 ihevc_hbd_itrans_recon_8x8_ft ihevc_hbd_itrans_recon_8x8; 143 ihevc_hbd_itrans_recon_16x16_ft ihevc_hbd_itrans_recon_16x16; 144 ihevc_hbd_itrans_recon_32x32_ft ihevc_hbd_itrans_recon_32x32; 145 146 /* A9 Q function declarations */ 147 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_a9q; 148 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_a9q; 149 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_a9q; 150 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_a9q; 151 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_a9q; 152 153 /* A9 A function declarations */ 154 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_a9a; 155 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_a9a; 156 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_a9a; 157 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_a9a; 158 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_a9a; 159 160 /* NEONINTR function declarations */ 161 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_neonintr; 162 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_neonintr; 163 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_neonintr; 164 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_neonintr; 165 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_neonintr; 166 167 /* SSSE31 function declarations */ 168 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_ssse3; 169 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_ssse3; 170 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_ssse3; 171 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_ssse3; 172 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_ssse3; 173 174 /* SSE42 function declarations */ 175 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_sse42; 176 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_sse42; 177 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_sse42; 178 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_sse42; 179 180 ihevc_hbd_itrans_recon_4x4_ttype1_ft ihevc_hbd_itrans_recon_4x4_ttype1_sse42; 181 ihevc_hbd_itrans_recon_4x4_ft ihevc_hbd_itrans_recon_4x4_sse42; 182 ihevc_hbd_itrans_recon_8x8_ft ihevc_hbd_itrans_recon_8x8_sse42; 183 ihevc_hbd_itrans_recon_16x16_ft ihevc_hbd_itrans_recon_16x16_sse42; 184 ihevc_hbd_itrans_recon_32x32_ft ihevc_hbd_itrans_recon_32x32_sse42; 185 186 187 /* armv8 function declarations */ 188 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_av8; 189 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_av8; 190 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_av8; 191 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_av8; 192 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_av8; 193 #endif /*_IHEVC_ITRANS_RECON_H_*/ 194