Home | History | Annotate | Download | only in common
      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_weighted_pred.h
     22 *
     23 * @brief
     24 *  Function declarations used for buffer management
     25 *
     26 * @author
     27 *  Srinivas T
     28 *
     29 * @remarks
     30 *  None
     31 *
     32 *******************************************************************************
     33 */
     34 
     35 #ifndef IHEVC_WEIGHTED_PRED_H_
     36 #define IHEVC_WEIGHTED_PRED_H_
     37 
     38 typedef void ihevc_weighted_pred_uni_ft(WORD16 *pi2_src,
     39                                         UWORD8 *pu1_dst,
     40                                         WORD32 src_strd,
     41                                         WORD32 dst_strd,
     42                                         WORD32 wgt0,
     43                                         WORD32 off0,
     44                                         WORD32 shift,
     45                                         WORD32 lvl_shift,
     46                                         WORD32 ht,
     47                                         WORD32 wd);
     48 
     49 typedef void ihevc_weighted_pred_chroma_uni_ft(WORD16 *pi2_src,
     50                                                UWORD8 *pu1_dst,
     51                                                WORD32 src_strd,
     52                                                WORD32 dst_strd,
     53                                                WORD32 wgt0_cb,
     54                                                WORD32 wgt0_cr,
     55                                                WORD32 off0_cb,
     56                                                WORD32 off0_cr,
     57                                                WORD32 shift,
     58                                                WORD32 lvl_shift,
     59                                                WORD32 ht,
     60                                                WORD32 wd);
     61 
     62 typedef void ihevc_weighted_pred_bi_ft(WORD16 *pi2_src1,
     63                                        WORD16 *pi2_src2,
     64                                        UWORD8 *pu1_dst,
     65                                        WORD32 src_strd1,
     66                                        WORD32 src_strd2,
     67                                        WORD32 dst_strd,
     68                                        WORD32 wgt0,
     69                                        WORD32 off0,
     70                                        WORD32 wgt1,
     71                                        WORD32 off1,
     72                                        WORD32 shift,
     73                                        WORD32 lvl_shift1,
     74                                        WORD32 lvl_shift2,
     75                                        WORD32 ht,
     76                                        WORD32 wd);
     77 
     78 typedef void ihevc_weighted_pred_chroma_bi_ft(WORD16 *pi2_src1,
     79                                               WORD16 *pi2_src2,
     80                                               UWORD8 *pu1_dst,
     81                                               WORD32 src_strd1,
     82                                               WORD32 src_strd2,
     83                                               WORD32 dst_strd,
     84                                               WORD32 wgt0_cb,
     85                                               WORD32 wgt0_cr,
     86                                               WORD32 off0_cb,
     87                                               WORD32 off0_cr,
     88                                               WORD32 wgt1_cb,
     89                                               WORD32 wgt1_cr,
     90                                               WORD32 off1_cb,
     91                                               WORD32 off1_cr,
     92                                               WORD32 shift,
     93                                               WORD32 lvl_shift1,
     94                                               WORD32 lvl_shift2,
     95                                               WORD32 ht,
     96                                               WORD32 wd);
     97 
     98 typedef void ihevc_weighted_pred_bi_default_ft(WORD16 *pi2_src1,
     99                                                WORD16 *pi2_src2,
    100                                                UWORD8 *pu1_dst,
    101                                                WORD32 src_strd1,
    102                                                WORD32 src_strd2,
    103                                                WORD32 dst_strd,
    104                                                WORD32 lvl_shift1,
    105                                                WORD32 lvl_shift2,
    106                                                WORD32 ht,
    107                                                WORD32 wd);
    108 
    109 typedef void ihevc_weighted_pred_chroma_bi_default_ft(WORD16 *pi2_src1,
    110                                                       WORD16 *pi2_src2,
    111                                                       UWORD8 *pu1_dst,
    112                                                       WORD32 src_strd1,
    113                                                       WORD32 src_strd2,
    114                                                       WORD32 dst_strd,
    115                                                       WORD32 lvl_shift1,
    116                                                       WORD32 lvl_shift2,
    117                                                       WORD32 ht,
    118                                                       WORD32 wd);
    119 /* C function declarations */
    120 ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni;
    121 ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni;
    122 ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi;
    123 ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi;
    124 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default;
    125 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default;
    126 
    127 /* A9 Q function declarations */
    128 ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_a9q;
    129 ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_a9q;
    130 ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_a9q;
    131 ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_a9q;
    132 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_a9q;
    133 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_a9q;
    134 
    135 /* A9 A function declarations */
    136 ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_a9a;
    137 ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_a9a;
    138 ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_a9a;
    139 ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_a9a;
    140 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_a9a;
    141 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_a9a;
    142 
    143 /* NEONINTR function declarations */
    144 ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_neonintr;
    145 ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_neonintr;
    146 ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_neonintr;
    147 ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_neonintr;
    148 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_neonintr;
    149 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_neonintr;
    150 /* SSSE3 function declarations */
    151 ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_ssse3;
    152 ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_ssse3;
    153 ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_ssse3;
    154 ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_ssse3;
    155 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_ssse3;
    156 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_ssse3;
    157 
    158 /* SSE42 function declarations */
    159 ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_sse42;
    160 ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_sse42;
    161 ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_sse42;
    162 ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_sse42;
    163 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_sse42;
    164 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_sse42;
    165 
    166 /* AVX2 function declarations */
    167 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_avx2;
    168 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_avx2;
    169 
    170 /* armv8 function declarations */
    171 ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_av8;
    172 ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_av8;
    173 ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_av8;
    174 ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_av8;
    175 ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_av8;
    176 ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_av8;
    177 
    178 #endif /* IHEVC_WEIGHTED_PRED_H_ */
    179