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 21 /** 22 ******************************************************************************* 23 * @file 24 * ih264_inter_pred_filters.h 25 * 26 * @brief 27 * Declarations of functions used for inter prediction 28 * 29 * @author 30 * Ittiam 31 * 32 * @par List of Functions: 33 * -ih264_inter_pred_luma_copy 34 * -ih264_interleave_copy 35 * -ih264_inter_pred_luma_horz 36 * -ih264_inter_pred_luma_vert 37 * -ih264_inter_pred_luma_horz_hpel_vert_hpel 38 * -ih264_inter_pred_luma_vert_qpel 39 * -ih264_inter_pred_luma_horz_qpel 40 * -ih264_inter_pred_luma_horz_qpel_vert_qpel 41 * -ih264_inter_pred_luma_horz_qpel_vert_hpel 42 * -ih264_inter_pred_luma_horz_hpel_vert_qpel 43 * -ih264_inter_pred_luma_bilinear 44 * -ih264_inter_pred_chroma 45 * -ih264_inter_pred_luma_copy_a9q 46 * -ih264_interleave_copy_a9 47 * -ih264_inter_pred_luma_horz_a9q 48 * -ih264_inter_pred_luma_vert_a9q 49 * -ih264_inter_pred_luma_bilinear_a9q 50 * -ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q 51 * -ih264_inter_pred_luma_horz_qpel_a9q 52 * -ih264_inter_pred_luma_vert_qpel_a9q 53 * -ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q 54 * -ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q 55 * -ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q 56 * -ih264_inter_pred_chroma_a9q 57 * -ih264_inter_pred_luma_copy_av8 58 * -ih264_interleave_copy_av8 59 * -ih264_inter_pred_luma_horz_av8 60 * -ih264_inter_pred_luma_vert_av8 61 * -ih264_inter_pred_luma_bilinear_av8 62 * -ih264_inter_pred_luma_horz_hpel_vert_hpel_av8 63 * -ih264_inter_pred_luma_horz_qpel_av8 64 * -ih264_inter_pred_luma_vert_qpel_av8 65 * -ih264_inter_pred_luma_horz_qpel_vert_qpel_av8 66 * -ih264_inter_pred_luma_horz_qpel_vert_hpel_av8 67 * -ih264_inter_pred_luma_horz_hpel_vert_qpel_av8 68 * -ih264_inter_pred_chroma_av8 69 * -ih264_inter_pred_chroma_dx_zero_av8 70 * -ih264_inter_pred_chroma_dy_zero_av8 71 * -ih264_inter_pred_luma_copy_ssse3 72 * -ih264_inter_pred_luma_copy_ssse3 73 * -ih264_inter_pred_luma_horz_ssse3 74 * -ih264_inter_pred_luma_vert_ssse3 75 * -ih264_inter_pred_luma_bilinear_ssse3 76 * -ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3 77 * -ih264_inter_pred_luma_horz_qpel_ssse3 78 * -ih264_inter_pred_luma_vert_qpel_ssse3 79 * -ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3 80 * -ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3 81 * -ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3 82 * -ih264_inter_pred_chroma_ssse3 83 * 84 * @remarks 85 * None 86 * 87 ******************************************************************************* 88 */ 89 90 #ifndef _IH264_INTER_PRED_H_ 91 #define _IH264_INTER_PRED_H_ 92 93 /*****************************************************************************/ 94 /* Constant Data variables */ 95 /*****************************************************************************/ 96 97 extern const WORD32 ih264_g_six_tap[3];/* coefficients for 6 tap filtering*/ 98 99 /*****************************************************************************/ 100 /* Extern Function Declarations */ 101 /*****************************************************************************/ 102 103 typedef void ih264_inter_pred_luma_ft(UWORD8 *pu1_src, 104 UWORD8 *pu1_dst, 105 WORD32 src_strd, 106 WORD32 dst_strd, 107 WORD32 ht, 108 WORD32 wd, 109 UWORD8* pu1_tmp, 110 WORD32 dydx); 111 112 typedef void ih264_interleave_copy_ft(UWORD8 *pu1_src, 113 UWORD8 *pu1_dst, 114 WORD32 src_strd, 115 WORD32 dst_strd, 116 WORD32 ht, 117 WORD32 wd); 118 119 typedef void ih264_inter_pred_luma_bilinear_ft(UWORD8 *pu1_src1, 120 UWORD8 *pu1_src2, 121 UWORD8 *pu1_dst, 122 WORD32 src_strd1, 123 WORD32 src_strd2, 124 WORD32 dst_strd, 125 WORD32 height, 126 WORD32 width); 127 128 typedef void ih264_inter_pred_chroma_ft(UWORD8 *pu1_src, 129 UWORD8 *pu1_dst, 130 WORD32 src_strd, 131 WORD32 dst_strd, 132 WORD32 dx, 133 WORD32 dy, 134 WORD32 ht, 135 WORD32 wd); 136 137 /* No NEON Declarations */ 138 139 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy; 140 141 ih264_interleave_copy_ft ih264_interleave_copy; 142 143 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz; 144 145 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert; 146 147 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel; 148 149 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel; 150 151 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel; 152 153 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel; 154 155 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel; 156 157 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel; 158 159 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear; 160 161 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma; 162 163 /* A9 NEON Declarations */ 164 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_a9q; 165 166 ih264_interleave_copy_ft ih264_interleave_copy_a9; 167 168 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_a9q; 169 170 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_a9q; 171 172 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_a9q; 173 174 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q; 175 176 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_a9q; 177 178 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_a9q; 179 180 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q; 181 182 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q; 183 184 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q; 185 186 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_a9q; 187 188 /* AV8 NEON Declarations */ 189 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_av8; 190 191 ih264_interleave_copy_ft ih264_interleave_copy_av8; 192 193 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_av8; 194 195 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_av8; 196 197 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_av8; 198 199 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_av8; 200 201 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_av8; 202 203 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_av8; 204 205 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_av8; 206 207 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_av8; 208 209 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_av8; 210 211 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dx_zero_av8; 212 213 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dy_zero_av8; 214 215 216 /* SSSE3 Intrinsic Declarations */ 217 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_ssse3; 218 219 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_ssse3; 220 221 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_ssse3; 222 223 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_ssse3; 224 225 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3; 226 227 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_ssse3; 228 229 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_ssse3; 230 231 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3; 232 233 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3; 234 235 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3; 236 237 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_ssse3; 238 239 #endif 240 241 /** Nothing past this point */ 242