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 97extern const WORD32 ih264_g_six_tap[3];/* coefficients for 6 tap filtering*/ 98 99/*****************************************************************************/ 100/* Extern Function Declarations */ 101/*****************************************************************************/ 102 103typedef 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 112typedef 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 119typedef 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 128typedef 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 139ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy; 140 141ih264_interleave_copy_ft ih264_interleave_copy; 142 143ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz; 144 145ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert; 146 147ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel; 148 149ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel; 150 151ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel; 152 153ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel; 154 155ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel; 156 157ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel; 158 159ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear; 160 161ih264_inter_pred_chroma_ft ih264_inter_pred_chroma; 162 163/* A9 NEON Declarations */ 164ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_a9q; 165 166ih264_interleave_copy_ft ih264_interleave_copy_a9; 167 168ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_a9q; 169 170ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_a9q; 171 172ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_a9q; 173 174ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q; 175 176ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_a9q; 177 178ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_a9q; 179 180ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q; 181 182ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q; 183 184ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q; 185 186ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_a9q; 187 188/* AV8 NEON Declarations */ 189ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_av8; 190 191ih264_interleave_copy_ft ih264_interleave_copy_av8; 192 193ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_av8; 194 195ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_av8; 196 197ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_av8; 198 199ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_av8; 200 201ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_av8; 202 203ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_av8; 204 205ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_av8; 206 207ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_av8; 208 209ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_av8; 210 211ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dx_zero_av8; 212 213ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dy_zero_av8; 214 215 216/* SSSE3 Intrinsic Declarations */ 217ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_ssse3; 218 219ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_ssse3; 220 221ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_ssse3; 222 223ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_ssse3; 224 225ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3; 226 227ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_ssse3; 228 229ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_ssse3; 230 231ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3; 232 233ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3; 234 235ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3; 236 237ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_ssse3; 238 239#endif 240 241/** Nothing past this point */ 242