1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 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 19*c83a76b0SSuyog Pawar /** 20*c83a76b0SSuyog Pawar ****************************************************************************** 21*c83a76b0SSuyog Pawar * @file ihevc_sao.h 22*c83a76b0SSuyog Pawar * 23*c83a76b0SSuyog Pawar * @brief 24*c83a76b0SSuyog Pawar * This file contains enumerations, macros and extern declarations of HEVC 25*c83a76b0SSuyog Pawar * SAO 26*c83a76b0SSuyog Pawar * 27*c83a76b0SSuyog Pawar * @author 28*c83a76b0SSuyog Pawar * Ittiam 29*c83a76b0SSuyog Pawar ****************************************************************************** 30*c83a76b0SSuyog Pawar */ 31*c83a76b0SSuyog Pawar 32*c83a76b0SSuyog Pawar #ifndef _IHEVC_SAO_H_ 33*c83a76b0SSuyog Pawar #define _IHEVC_SAO_H_ 34*c83a76b0SSuyog Pawar 35*c83a76b0SSuyog Pawar enum 36*c83a76b0SSuyog Pawar { 37*c83a76b0SSuyog Pawar SAO_NONE, 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar SAO_BAND, 40*c83a76b0SSuyog Pawar 41*c83a76b0SSuyog Pawar SAO_EDGE_0_DEG, 42*c83a76b0SSuyog Pawar 43*c83a76b0SSuyog Pawar SAO_EDGE_90_DEG, 44*c83a76b0SSuyog Pawar 45*c83a76b0SSuyog Pawar SAO_EDGE_135_DEG, 46*c83a76b0SSuyog Pawar 47*c83a76b0SSuyog Pawar SAO_EDGE_45_DEG 48*c83a76b0SSuyog Pawar }; 49*c83a76b0SSuyog Pawar 50*c83a76b0SSuyog Pawar static const WORD32 gi4_ihevc_hbd_table_edge_idx[5] = { 1, 2, 0, 3, 4 }; 51*c83a76b0SSuyog Pawar 52*c83a76b0SSuyog Pawar typedef void ihevc_sao_band_offset_luma_ft(UWORD8 *pu1_src, 53*c83a76b0SSuyog Pawar WORD32 src_strd, 54*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 55*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 56*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 57*c83a76b0SSuyog Pawar WORD32 sao_band_pos, 58*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset, 59*c83a76b0SSuyog Pawar WORD32 wd, 60*c83a76b0SSuyog Pawar WORD32 ht); 61*c83a76b0SSuyog Pawar 62*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_band_offset_luma_ft(UWORD16 *pu2_src, 63*c83a76b0SSuyog Pawar WORD32 src_strd, 64*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 65*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 66*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 67*c83a76b0SSuyog Pawar WORD32 sao_band_pos, 68*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset, 69*c83a76b0SSuyog Pawar WORD32 wd, 70*c83a76b0SSuyog Pawar WORD32 ht, 71*c83a76b0SSuyog Pawar UWORD32 bitdepth); 72*c83a76b0SSuyog Pawar 73*c83a76b0SSuyog Pawar typedef void ihevc_sao_band_offset_chroma_ft(UWORD8 *pu1_src, 74*c83a76b0SSuyog Pawar WORD32 src_strd, 75*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 76*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 77*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 78*c83a76b0SSuyog Pawar WORD32 sao_band_pos_u, 79*c83a76b0SSuyog Pawar WORD32 sao_band_pos_v, 80*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_u, 81*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_v, 82*c83a76b0SSuyog Pawar WORD32 wd, 83*c83a76b0SSuyog Pawar WORD32 ht); 84*c83a76b0SSuyog Pawar 85*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_band_offset_chroma_ft(UWORD16 *pu2_src, 86*c83a76b0SSuyog Pawar WORD32 src_strd, 87*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 88*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 89*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 90*c83a76b0SSuyog Pawar WORD32 sao_band_pos_u, 91*c83a76b0SSuyog Pawar WORD32 sao_band_pos_v, 92*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_u, 93*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_v, 94*c83a76b0SSuyog Pawar WORD32 wd, 95*c83a76b0SSuyog Pawar WORD32 ht, 96*c83a76b0SSuyog Pawar UWORD32 bit_depth); 97*c83a76b0SSuyog Pawar 98*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class0_ft(UWORD8 *pu1_src, 99*c83a76b0SSuyog Pawar WORD32 src_strd, 100*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 101*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 102*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 103*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 104*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 105*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 106*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset, 107*c83a76b0SSuyog Pawar WORD32 wd, 108*c83a76b0SSuyog Pawar WORD32 ht); 109*c83a76b0SSuyog Pawar 110*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class0_ft(UWORD16 *pu2_src, 111*c83a76b0SSuyog Pawar WORD32 src_strd, 112*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 113*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 114*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 115*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 116*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 117*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 118*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset, 119*c83a76b0SSuyog Pawar WORD32 wd, 120*c83a76b0SSuyog Pawar WORD32 ht, 121*c83a76b0SSuyog Pawar UWORD32 bit_depth); 122*c83a76b0SSuyog Pawar 123*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class0_chroma_ft(UWORD8 *pu1_src, 124*c83a76b0SSuyog Pawar WORD32 src_strd, 125*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 126*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 127*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 128*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 129*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 130*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 131*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_u, 132*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_v, 133*c83a76b0SSuyog Pawar WORD32 wd, 134*c83a76b0SSuyog Pawar WORD32 ht); 135*c83a76b0SSuyog Pawar 136*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class0_chroma_ft(UWORD16 *pu2_src, 137*c83a76b0SSuyog Pawar WORD32 src_strd, 138*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 139*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 140*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 141*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 142*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 143*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 144*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_u, 145*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_v, 146*c83a76b0SSuyog Pawar WORD32 wd, 147*c83a76b0SSuyog Pawar WORD32 ht, 148*c83a76b0SSuyog Pawar UWORD32 bit_depth); 149*c83a76b0SSuyog Pawar 150*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class1_ft(UWORD8 *pu1_src, 151*c83a76b0SSuyog Pawar WORD32 src_strd, 152*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 153*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 154*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 155*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 156*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 157*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 158*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset, 159*c83a76b0SSuyog Pawar WORD32 wd, 160*c83a76b0SSuyog Pawar WORD32 ht); 161*c83a76b0SSuyog Pawar 162*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class1_ft(UWORD16 *pu2_src, 163*c83a76b0SSuyog Pawar WORD32 src_strd, 164*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 165*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 166*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 167*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 168*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 169*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 170*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset, 171*c83a76b0SSuyog Pawar WORD32 wd, 172*c83a76b0SSuyog Pawar WORD32 ht, 173*c83a76b0SSuyog Pawar UWORD32 bit_depth); 174*c83a76b0SSuyog Pawar 175*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class1_chroma_ft(UWORD8 *pu1_src, 176*c83a76b0SSuyog Pawar WORD32 src_strd, 177*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 178*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 179*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 180*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 181*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 182*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 183*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_u, 184*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_v, 185*c83a76b0SSuyog Pawar WORD32 wd, 186*c83a76b0SSuyog Pawar WORD32 ht); 187*c83a76b0SSuyog Pawar 188*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class1_chroma_ft(UWORD16 *pu2_src, 189*c83a76b0SSuyog Pawar WORD32 src_strd, 190*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 191*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 192*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 193*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 194*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 195*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 196*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_u, 197*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_v, 198*c83a76b0SSuyog Pawar WORD32 wd, 199*c83a76b0SSuyog Pawar WORD32 ht, 200*c83a76b0SSuyog Pawar UWORD32 bit_depth); 201*c83a76b0SSuyog Pawar 202*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class2_ft(UWORD8 *pu1_src, 203*c83a76b0SSuyog Pawar WORD32 src_strd, 204*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 205*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 206*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 207*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 208*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 209*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 210*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset, 211*c83a76b0SSuyog Pawar WORD32 wd, 212*c83a76b0SSuyog Pawar WORD32 ht); 213*c83a76b0SSuyog Pawar 214*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class2_ft(UWORD16 *pu2_src, 215*c83a76b0SSuyog Pawar WORD32 src_strd, 216*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 217*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 218*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 219*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 220*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 221*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 222*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset, 223*c83a76b0SSuyog Pawar WORD32 wd, 224*c83a76b0SSuyog Pawar WORD32 ht, 225*c83a76b0SSuyog Pawar UWORD32 bit_depth); 226*c83a76b0SSuyog Pawar 227*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class2_chroma_ft(UWORD8 *pu1_src, 228*c83a76b0SSuyog Pawar WORD32 src_strd, 229*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 230*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 231*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 232*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 233*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 234*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 235*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_u, 236*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_v, 237*c83a76b0SSuyog Pawar WORD32 wd, 238*c83a76b0SSuyog Pawar WORD32 ht); 239*c83a76b0SSuyog Pawar 240*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class2_chroma_ft(UWORD16 *pu2_src, 241*c83a76b0SSuyog Pawar WORD32 src_strd, 242*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 243*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 244*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 245*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 246*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 247*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 248*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_u, 249*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_v, 250*c83a76b0SSuyog Pawar WORD32 wd, 251*c83a76b0SSuyog Pawar WORD32 ht, 252*c83a76b0SSuyog Pawar UWORD32 bit_depth); 253*c83a76b0SSuyog Pawar 254*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class3_ft(UWORD8 *pu1_src, 255*c83a76b0SSuyog Pawar WORD32 src_strd, 256*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 257*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 258*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 259*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 260*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 261*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 262*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset, 263*c83a76b0SSuyog Pawar WORD32 wd, 264*c83a76b0SSuyog Pawar WORD32 ht); 265*c83a76b0SSuyog Pawar 266*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class3_ft(UWORD16 *pu2_src, 267*c83a76b0SSuyog Pawar WORD32 src_strd, 268*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 269*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 270*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 271*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 272*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 273*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 274*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset, 275*c83a76b0SSuyog Pawar WORD32 wd, 276*c83a76b0SSuyog Pawar WORD32 ht, 277*c83a76b0SSuyog Pawar UWORD32 bit_depth); 278*c83a76b0SSuyog Pawar typedef void ihevc_sao_edge_offset_class3_chroma_ft(UWORD8 *pu1_src, 279*c83a76b0SSuyog Pawar WORD32 src_strd, 280*c83a76b0SSuyog Pawar UWORD8 *pu1_src_left, 281*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top, 282*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_left, 283*c83a76b0SSuyog Pawar UWORD8 *pu1_src_top_right, 284*c83a76b0SSuyog Pawar UWORD8 *pu1_src_bot_left, 285*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 286*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_u, 287*c83a76b0SSuyog Pawar WORD8 *pi4_sao_offset_v, 288*c83a76b0SSuyog Pawar WORD32 wd, 289*c83a76b0SSuyog Pawar WORD32 ht); 290*c83a76b0SSuyog Pawar 291*c83a76b0SSuyog Pawar typedef void ihevc_hbd_sao_edge_offset_class3_chroma_ft(UWORD16 *pu2_src, 292*c83a76b0SSuyog Pawar WORD32 src_strd, 293*c83a76b0SSuyog Pawar UWORD16 *pu2_src_left, 294*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top, 295*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_left, 296*c83a76b0SSuyog Pawar UWORD16 *pu2_src_top_right, 297*c83a76b0SSuyog Pawar UWORD16 *pu2_src_bot_left, 298*c83a76b0SSuyog Pawar UWORD8 *pu1_avail, 299*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_u, 300*c83a76b0SSuyog Pawar WORD8 *pi1_sao_offset_v, 301*c83a76b0SSuyog Pawar WORD32 wd, 302*c83a76b0SSuyog Pawar WORD32 ht, 303*c83a76b0SSuyog Pawar UWORD32 bit_depth); 304*c83a76b0SSuyog Pawar /* C function declarations */ 305*c83a76b0SSuyog Pawar ihevc_sao_band_offset_luma_ft ihevc_sao_band_offset_luma; 306*c83a76b0SSuyog Pawar ihevc_sao_band_offset_chroma_ft ihevc_sao_band_offset_chroma; 307*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_ft ihevc_sao_edge_offset_class0; 308*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_chroma_ft ihevc_sao_edge_offset_class0_chroma; 309*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_ft ihevc_sao_edge_offset_class1; 310*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_chroma_ft ihevc_sao_edge_offset_class1_chroma; 311*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_ft ihevc_sao_edge_offset_class2; 312*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_chroma_ft ihevc_sao_edge_offset_class2_chroma; 313*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_ft ihevc_sao_edge_offset_class3; 314*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_chroma_ft ihevc_sao_edge_offset_class3_chroma; 315*c83a76b0SSuyog Pawar 316*c83a76b0SSuyog Pawar /* NEONINTR function declarations */ 317*c83a76b0SSuyog Pawar ihevc_sao_band_offset_luma_ft ihevc_sao_band_offset_luma_neonintr; 318*c83a76b0SSuyog Pawar ihevc_sao_band_offset_chroma_ft ihevc_sao_band_offset_chroma_neonintr; 319*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_ft ihevc_sao_edge_offset_class0_neonintr; 320*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_chroma_ft ihevc_sao_edge_offset_class0_chroma_neonintr; 321*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_ft ihevc_sao_edge_offset_class1_neonintr; 322*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_chroma_ft ihevc_sao_edge_offset_class1_chroma_neonintr; 323*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_ft ihevc_sao_edge_offset_class2_neonintr; 324*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_chroma_ft ihevc_sao_edge_offset_class2_chroma_neonintr; 325*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_ft ihevc_sao_edge_offset_class3_neonintr; 326*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_chroma_ft ihevc_sao_edge_offset_class3_chroma_neonintr; 327*c83a76b0SSuyog Pawar 328*c83a76b0SSuyog Pawar /* A9Q function declarations */ 329*c83a76b0SSuyog Pawar ihevc_sao_band_offset_luma_ft ihevc_sao_band_offset_luma_a9q; 330*c83a76b0SSuyog Pawar ihevc_sao_band_offset_chroma_ft ihevc_sao_band_offset_chroma_a9q; 331*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_ft ihevc_sao_edge_offset_class0_a9q; 332*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_chroma_ft ihevc_sao_edge_offset_class0_chroma_a9q; 333*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_ft ihevc_sao_edge_offset_class1_a9q; 334*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_chroma_ft ihevc_sao_edge_offset_class1_chroma_a9q; 335*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_ft ihevc_sao_edge_offset_class2_a9q; 336*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_chroma_ft ihevc_sao_edge_offset_class2_chroma_a9q; 337*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_ft ihevc_sao_edge_offset_class3_a9q; 338*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_chroma_ft ihevc_sao_edge_offset_class3_chroma_a9q; 339*c83a76b0SSuyog Pawar 340*c83a76b0SSuyog Pawar /* A9A (Apple) function declarations */ 341*c83a76b0SSuyog Pawar ihevc_sao_band_offset_luma_ft ihevc_sao_band_offset_luma_a9a; 342*c83a76b0SSuyog Pawar ihevc_sao_band_offset_chroma_ft ihevc_sao_band_offset_chroma_a9a; 343*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_ft ihevc_sao_edge_offset_class0_a9a; 344*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_chroma_ft ihevc_sao_edge_offset_class0_chroma_a9a; 345*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_ft ihevc_sao_edge_offset_class1_a9a; 346*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_chroma_ft ihevc_sao_edge_offset_class1_chroma_a9a; 347*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_ft ihevc_sao_edge_offset_class2_a9a; 348*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_chroma_ft ihevc_sao_edge_offset_class2_chroma_a9a; 349*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_ft ihevc_sao_edge_offset_class3_a9a; 350*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_chroma_ft ihevc_sao_edge_offset_class3_chroma_a9a; 351*c83a76b0SSuyog Pawar 352*c83a76b0SSuyog Pawar /* SSSE31 function declarations */ 353*c83a76b0SSuyog Pawar ihevc_sao_band_offset_luma_ft ihevc_sao_band_offset_luma_ssse3; 354*c83a76b0SSuyog Pawar ihevc_sao_band_offset_chroma_ft ihevc_sao_band_offset_chroma_ssse3; 355*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_ft ihevc_sao_edge_offset_class0_ssse3; 356*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_chroma_ft ihevc_sao_edge_offset_class0_chroma_ssse3; 357*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_ft ihevc_sao_edge_offset_class1_ssse3; 358*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_chroma_ft ihevc_sao_edge_offset_class1_chroma_ssse3; 359*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_ft ihevc_sao_edge_offset_class2_ssse3; 360*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_chroma_ft ihevc_sao_edge_offset_class2_chroma_ssse3; 361*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_ft ihevc_sao_edge_offset_class3_ssse3; 362*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_chroma_ft ihevc_sao_edge_offset_class3_chroma_ssse3; 363*c83a76b0SSuyog Pawar 364*c83a76b0SSuyog Pawar /* SSE4 function declarations */ 365*c83a76b0SSuyog Pawar 366*c83a76b0SSuyog Pawar /* C high bit depth function declarations */ 367*c83a76b0SSuyog Pawar ihevc_hbd_sao_band_offset_luma_ft ihevc_hbd_sao_band_offset_luma; 368*c83a76b0SSuyog Pawar ihevc_hbd_sao_band_offset_chroma_ft ihevc_hbd_sao_band_offset_chroma; 369*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class0_ft ihevc_hbd_sao_edge_offset_class0; 370*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class0_chroma_ft ihevc_hbd_sao_edge_offset_class0_chroma; 371*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class1_ft ihevc_hbd_sao_edge_offset_class1; 372*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class1_chroma_ft ihevc_hbd_sao_edge_offset_class1_chroma; 373*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class2_ft ihevc_hbd_sao_edge_offset_class2; 374*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class2_chroma_ft ihevc_hbd_sao_edge_offset_class2_chroma; 375*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class3_ft ihevc_hbd_sao_edge_offset_class3; 376*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class3_chroma_ft ihevc_hbd_sao_edge_offset_class3_chroma; 377*c83a76b0SSuyog Pawar 378*c83a76b0SSuyog Pawar /* SSE4.2 HBD function Declarations*/ 379*c83a76b0SSuyog Pawar ihevc_hbd_sao_band_offset_luma_ft ihevc_hbd_sao_band_offset_luma_sse42; 380*c83a76b0SSuyog Pawar ihevc_hbd_sao_band_offset_chroma_ft ihevc_hbd_sao_band_offset_chroma_sse42; 381*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class0_ft ihevc_hbd_sao_edge_offset_class0_sse42; 382*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class0_chroma_ft ihevc_hbd_sao_edge_offset_class0_chroma_sse42; 383*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class1_ft ihevc_hbd_sao_edge_offset_class1_sse42; 384*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class1_chroma_ft ihevc_hbd_sao_edge_offset_class1_chroma_sse42; 385*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class2_ft ihevc_hbd_sao_edge_offset_class2_sse42; 386*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class2_chroma_ft ihevc_hbd_sao_edge_offset_class2_chroma_sse42; 387*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class3_ft ihevc_hbd_sao_edge_offset_class3_sse42; 388*c83a76b0SSuyog Pawar ihevc_hbd_sao_edge_offset_class3_chroma_ft ihevc_hbd_sao_edge_offset_class3_chroma_sse42; 389*c83a76b0SSuyog Pawar 390*c83a76b0SSuyog Pawar /* armv8 function declarations */ 391*c83a76b0SSuyog Pawar ihevc_sao_band_offset_luma_ft ihevc_sao_band_offset_luma_av8; 392*c83a76b0SSuyog Pawar ihevc_sao_band_offset_chroma_ft ihevc_sao_band_offset_chroma_av8; 393*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_ft ihevc_sao_edge_offset_class0_av8; 394*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class0_chroma_ft ihevc_sao_edge_offset_class0_chroma_av8; 395*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_ft ihevc_sao_edge_offset_class1_av8; 396*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class1_chroma_ft ihevc_sao_edge_offset_class1_chroma_av8; 397*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_ft ihevc_sao_edge_offset_class2_av8; 398*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class2_chroma_ft ihevc_sao_edge_offset_class2_chroma_av8; 399*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_ft ihevc_sao_edge_offset_class3_av8; 400*c83a76b0SSuyog Pawar ihevc_sao_edge_offset_class3_chroma_ft ihevc_sao_edge_offset_class3_chroma_av8; 401*c83a76b0SSuyog Pawar 402*c83a76b0SSuyog Pawar #endif /* _IHEVC_SAO_H_ */ 403