1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2018 The Android Open Source Project 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ***************************************************************************** 18*c83a76b0SSuyog Pawar * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*c83a76b0SSuyog Pawar */ 20*c83a76b0SSuyog Pawar /** 21*c83a76b0SSuyog Pawar ******************************************************************************* 22*c83a76b0SSuyog Pawar * @file 23*c83a76b0SSuyog Pawar * ihevc_resi_trans.h 24*c83a76b0SSuyog Pawar * 25*c83a76b0SSuyog Pawar * @brief 26*c83a76b0SSuyog Pawar * Functions declarations for residue and forward transform 27*c83a76b0SSuyog Pawar * 28*c83a76b0SSuyog Pawar * @author 29*c83a76b0SSuyog Pawar * Ittiam 30*c83a76b0SSuyog Pawar * 31*c83a76b0SSuyog Pawar * @remarks 32*c83a76b0SSuyog Pawar * None 33*c83a76b0SSuyog Pawar * 34*c83a76b0SSuyog Pawar ******************************************************************************* 35*c83a76b0SSuyog Pawar */ 36*c83a76b0SSuyog Pawar #ifndef _IHEVC_RESI_TRANS_H_ 37*c83a76b0SSuyog Pawar #define _IHEVC_RESI_TRANS_H_ 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_resi_trans_4x4_ttype1_ft(UWORD8 *pu1_src, 40*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 41*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 42*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 43*c83a76b0SSuyog Pawar WORD32 src_strd, 44*c83a76b0SSuyog Pawar WORD32 pred_strd, 45*c83a76b0SSuyog Pawar WORD32 dst_strd, 46*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane); 47*c83a76b0SSuyog Pawar 48*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_hbd_resi_trans_4x4_ttype1_ft(UWORD16 *pu2_src, 49*c83a76b0SSuyog Pawar UWORD16 *pu2_pred, 50*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 51*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 52*c83a76b0SSuyog Pawar WORD32 src_strd, 53*c83a76b0SSuyog Pawar WORD32 pred_strd, 54*c83a76b0SSuyog Pawar WORD32 dst_strd, 55*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane, 56*c83a76b0SSuyog Pawar UWORD8 bit_depth); 57*c83a76b0SSuyog Pawar 58*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_resi_trans_4x4_ft(UWORD8 *pu1_src, 59*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 60*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 61*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 62*c83a76b0SSuyog Pawar WORD32 src_strd, 63*c83a76b0SSuyog Pawar WORD32 pred_strd, 64*c83a76b0SSuyog Pawar WORD32 dst_strd, 65*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane); 66*c83a76b0SSuyog Pawar 67*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_hbd_resi_trans_4x4_ft 68*c83a76b0SSuyog Pawar ( 69*c83a76b0SSuyog Pawar UWORD16 *pu2_src, 70*c83a76b0SSuyog Pawar UWORD16 *pu2_pred, 71*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 72*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 73*c83a76b0SSuyog Pawar WORD32 src_strd, 74*c83a76b0SSuyog Pawar WORD32 pred_strd, 75*c83a76b0SSuyog Pawar WORD32 dst_strd_chr_flag, 76*c83a76b0SSuyog Pawar UWORD8 bit_depth 77*c83a76b0SSuyog Pawar ); 78*c83a76b0SSuyog Pawar 79*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_resi_trans_8x8_ft(UWORD8 *pu1_src, 80*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 81*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 82*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 83*c83a76b0SSuyog Pawar WORD32 src_strd, 84*c83a76b0SSuyog Pawar WORD32 pred_strd, 85*c83a76b0SSuyog Pawar WORD32 dst_strd, 86*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane); 87*c83a76b0SSuyog Pawar 88*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_hbd_resi_trans_8x8_ft 89*c83a76b0SSuyog Pawar ( 90*c83a76b0SSuyog Pawar UWORD16 *pu2_src, 91*c83a76b0SSuyog Pawar UWORD16 *pu2_pred, 92*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 93*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 94*c83a76b0SSuyog Pawar WORD32 src_strd, 95*c83a76b0SSuyog Pawar WORD32 pred_strd, 96*c83a76b0SSuyog Pawar WORD32 dst_strd_chr_flag, 97*c83a76b0SSuyog Pawar UWORD8 bit_depth 98*c83a76b0SSuyog Pawar ); 99*c83a76b0SSuyog Pawar 100*c83a76b0SSuyog Pawar 101*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_resi_trans_16x16_ft(UWORD8 *pu1_src, 102*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 103*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 104*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 105*c83a76b0SSuyog Pawar WORD32 src_strd, 106*c83a76b0SSuyog Pawar WORD32 pred_strd, 107*c83a76b0SSuyog Pawar WORD32 dst_strd, 108*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane); 109*c83a76b0SSuyog Pawar 110*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_hbd_resi_trans_16x16_ft(UWORD16 *pu2_src, 111*c83a76b0SSuyog Pawar UWORD16 *pu2_pred, 112*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 113*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 114*c83a76b0SSuyog Pawar WORD32 src_strd, 115*c83a76b0SSuyog Pawar WORD32 pred_strd, 116*c83a76b0SSuyog Pawar WORD32 dst_strd, 117*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane, 118*c83a76b0SSuyog Pawar UWORD8 bit_depth); 119*c83a76b0SSuyog Pawar 120*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_resi_trans_32x32_ft(UWORD8 *pu1_src, 121*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 122*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 123*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 124*c83a76b0SSuyog Pawar WORD32 src_strd, 125*c83a76b0SSuyog Pawar WORD32 pred_strd, 126*c83a76b0SSuyog Pawar WORD32 dst_strd, 127*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane); 128*c83a76b0SSuyog Pawar 129*c83a76b0SSuyog Pawar typedef UWORD32 ihevc_hbd_resi_trans_32x32_ft(UWORD16 *pu2_src, 130*c83a76b0SSuyog Pawar UWORD16 *pu2_pred, 131*c83a76b0SSuyog Pawar WORD32 *pi4_temp, 132*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 133*c83a76b0SSuyog Pawar WORD32 src_strd, 134*c83a76b0SSuyog Pawar WORD32 pred_strd, 135*c83a76b0SSuyog Pawar WORD32 dst_strd, 136*c83a76b0SSuyog Pawar CHROMA_PLANE_ID_T e_chroma_plane, 137*c83a76b0SSuyog Pawar UWORD8 bit_depth); 138*c83a76b0SSuyog Pawar 139*c83a76b0SSuyog Pawar 140*c83a76b0SSuyog Pawar typedef void ihevc_resi_trans_4x4_16bit_ft(WORD16 *pi2_src, 141*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 142*c83a76b0SSuyog Pawar WORD16 *pi2_tmp, 143*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 144*c83a76b0SSuyog Pawar WORD32 src_strd, 145*c83a76b0SSuyog Pawar WORD32 pred_strd, 146*c83a76b0SSuyog Pawar WORD32 dst_strd); 147*c83a76b0SSuyog Pawar 148*c83a76b0SSuyog Pawar typedef void ihevc_resi_trans_8x8_16bit_ft(WORD16 *pi2_src, 149*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 150*c83a76b0SSuyog Pawar WORD16 *pi2_tmp, 151*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 152*c83a76b0SSuyog Pawar WORD32 src_strd, 153*c83a76b0SSuyog Pawar WORD32 pred_strd, 154*c83a76b0SSuyog Pawar WORD32 dst_strd); 155*c83a76b0SSuyog Pawar 156*c83a76b0SSuyog Pawar typedef void ihevc_resi_trans_16x16_16bit_ft(WORD16 *pi2_src, 157*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 158*c83a76b0SSuyog Pawar WORD16 *pi2_tmp, 159*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 160*c83a76b0SSuyog Pawar WORD32 src_strd, 161*c83a76b0SSuyog Pawar WORD32 pred_strd, 162*c83a76b0SSuyog Pawar WORD32 dst_strd); 163*c83a76b0SSuyog Pawar 164*c83a76b0SSuyog Pawar typedef void ihevc_resi_trans_32x32_16bit_ft(WORD16 *pi2_src, 165*c83a76b0SSuyog Pawar UWORD8 *pu1_pred, 166*c83a76b0SSuyog Pawar WORD16 *pi2_tmp, 167*c83a76b0SSuyog Pawar WORD16 *pi2_dst, 168*c83a76b0SSuyog Pawar WORD32 src_strd, 169*c83a76b0SSuyog Pawar WORD32 pred_strd, 170*c83a76b0SSuyog Pawar WORD32 dst_strd); 171*c83a76b0SSuyog Pawar 172*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ttype1_ft ihevc_resi_trans_4x4_ttype1; 173*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ft ihevc_resi_trans_4x4; 174*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_ft ihevc_resi_trans_8x8; 175*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_ft ihevc_resi_trans_16x16; 176*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_ft ihevc_resi_trans_32x32; 177*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_16bit_ft ihevc_resi_trans_4x4_16bit; 178*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_16bit_ft ihevc_resi_trans_8x8_16bit; 179*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_16bit_ft ihevc_resi_trans_16x16_16bit; 180*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_16bit_ft ihevc_resi_trans_32x32_16bit; 181*c83a76b0SSuyog Pawar 182*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ttype1_ft ihevc_resi_trans_4x4_ttype1_sse42; 183*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ft ihevc_resi_trans_4x4_sse42; 184*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_ft ihevc_resi_trans_8x8_sse42; 185*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_ft ihevc_resi_trans_16x16_sse42; 186*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_ft ihevc_resi_trans_32x32_sse42; 187*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_16bit_ft ihevc_resi_trans_4x4_16bit_sse42; 188*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_16bit_ft ihevc_resi_trans_8x8_16bit_sse42; 189*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_16bit_ft ihevc_resi_trans_16x16_16bit_sse42; 190*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_16bit_ft ihevc_resi_trans_32x32_16bit_sse42; 191*c83a76b0SSuyog Pawar 192*c83a76b0SSuyog Pawar 193*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ttype1_ft ihevc_resi_trans_4x4_ttype1_avx; 194*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ft ihevc_resi_trans_4x4_avx; 195*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_ft ihevc_resi_trans_8x8_avx; 196*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_ft ihevc_resi_trans_16x16_avx; 197*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_ft ihevc_resi_trans_32x32_avx; 198*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_16bit_ft ihevc_resi_trans_4x4_16bit_avx; 199*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_16bit_ft ihevc_resi_trans_8x8_16bit_avx; 200*c83a76b0SSuyog Pawar 201*c83a76b0SSuyog Pawar #ifndef DISABLE_AVX2 202*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_ft ihevc_resi_trans_8x8_avx2; 203*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_ft ihevc_resi_trans_16x16_avx2; 204*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_ft ihevc_resi_trans_32x32_avx2; 205*c83a76b0SSuyog Pawar #endif 206*c83a76b0SSuyog Pawar 207*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_4x4_ttype1_ft ihevc_hbd_resi_trans_4x4_ttype1; 208*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_4x4_ft ihevc_hbd_resi_trans_4x4; 209*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_8x8_ft ihevc_hbd_resi_trans_8x8; 210*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_16x16_ft ihevc_hbd_resi_trans_16x16; 211*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_32x32_ft ihevc_hbd_resi_trans_32x32; 212*c83a76b0SSuyog Pawar 213*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_4x4_ttype1_ft ihevc_hbd_resi_trans_4x4_ttype1_sse42; 214*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_4x4_ft ihevc_hbd_resi_trans_4x4_sse42; 215*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_8x8_ft ihevc_hbd_resi_trans_8x8_sse42; 216*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_16x16_ft ihevc_hbd_resi_trans_16x16_sse42; 217*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_32x32_ft ihevc_hbd_resi_trans_32x32_sse42; 218*c83a76b0SSuyog Pawar 219*c83a76b0SSuyog Pawar 220*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_4x4_ttype1_ft ihevc_hbd_resi_trans_4x4_ttype1_avx; 221*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_4x4_ft ihevc_hbd_resi_trans_4x4_avx; 222*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_8x8_ft ihevc_hbd_resi_trans_8x8_avx; 223*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_16x16_ft ihevc_hbd_resi_trans_16x16_avx; 224*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_32x32_ft ihevc_hbd_resi_trans_32x32_avx; 225*c83a76b0SSuyog Pawar 226*c83a76b0SSuyog Pawar /* AVX2 declarations */ 227*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_8x8_ft ihevc_hbd_resi_trans_8x8_avx2; 228*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_16x16_ft ihevc_hbd_resi_trans_16x16_avx2; 229*c83a76b0SSuyog Pawar ihevc_hbd_resi_trans_32x32_ft ihevc_hbd_resi_trans_32x32_avx2; 230*c83a76b0SSuyog Pawar 231*c83a76b0SSuyog Pawar /*A9 declarations*/ 232*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_ft ihevc_resi_trans_16x16_a9q; 233*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ft ihevc_resi_trans_4x4_a9q; 234*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_ft ihevc_resi_trans_8x8_a9q; 235*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ttype1_ft ihevc_resi_trans_4x4_ttype1_a9q; 236*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_ft ihevc_resi_trans_32x32_a9q; 237*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ft ihevc_resi_trans_4x4_neon; 238*c83a76b0SSuyog Pawar ihevc_resi_trans_4x4_ttype1_ft ihevc_resi_trans_4x4_ttype1_neon; 239*c83a76b0SSuyog Pawar ihevc_resi_trans_8x8_ft ihevc_resi_trans_8x8_neon; 240*c83a76b0SSuyog Pawar ihevc_resi_trans_16x16_ft ihevc_resi_trans_16x16_neon; 241*c83a76b0SSuyog Pawar ihevc_resi_trans_32x32_ft ihevc_resi_trans_32x32_neon; 242*c83a76b0SSuyog Pawar 243*c83a76b0SSuyog Pawar #endif /*_IHEVC_RESI_TRANS_H_*/ 244