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
38typedef 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
49typedef 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
62typedef 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
78typedef 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
98typedef 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
109typedef 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 */
120ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni;
121ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni;
122ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi;
123ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi;
124ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default;
125ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default;
126
127/* A9 Q function declarations */
128ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_a9q;
129ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_a9q;
130ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_a9q;
131ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_a9q;
132ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_a9q;
133ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_a9q;
134
135/* A9 A function declarations */
136ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_a9a;
137ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_a9a;
138ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_a9a;
139ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_a9a;
140ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_a9a;
141ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_a9a;
142
143/* NEONINTR function declarations */
144ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_neonintr;
145ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_neonintr;
146ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_neonintr;
147ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_neonintr;
148ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_neonintr;
149ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_neonintr;
150/* SSSE3 function declarations */
151ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_ssse3;
152ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_ssse3;
153ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_ssse3;
154ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_ssse3;
155ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_ssse3;
156ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_ssse3;
157
158/* SSE42 function declarations */
159ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_sse42;
160ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_sse42;
161ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_sse42;
162ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_sse42;
163ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_sse42;
164ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_sse42;
165
166/* AVX2 function declarations */
167ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_avx2;
168ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_avx2;
169
170/* armv8 function declarations */
171ihevc_weighted_pred_uni_ft ihevc_weighted_pred_uni_av8;
172ihevc_weighted_pred_chroma_uni_ft ihevc_weighted_pred_chroma_uni_av8;
173ihevc_weighted_pred_bi_ft ihevc_weighted_pred_bi_av8;
174ihevc_weighted_pred_chroma_bi_ft ihevc_weighted_pred_chroma_bi_av8;
175ihevc_weighted_pred_bi_default_ft ihevc_weighted_pred_bi_default_av8;
176ihevc_weighted_pred_chroma_bi_default_ft ihevc_weighted_pred_chroma_bi_default_av8;
177
178#endif /* IHEVC_WEIGHTED_PRED_H_ */
179