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