• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_itrans_recon.h
22  *
23  * @brief
24  *  Functions declarations for inverse transform and  reconstruction
25  *
26  * @author
27  *  Ittiam
28  *
29  * @remarks
30  *  None
31  *
32  *******************************************************************************
33  */
34  #ifndef _IHEVC_ITRANS_RECON_H_
35  #define _IHEVC_ITRANS_RECON_H_
36  
37  typedef void ihevc_itrans_recon_4x4_ttype1_ft(WORD16 *pi2_src,
38                                                WORD16 *pi2_tmp,
39                                                UWORD8 *pu1_pred,
40                                                UWORD8 *pu1_dst,
41                                                WORD32 src_strd,
42                                                WORD32 pred_strd,
43                                                WORD32 dst_strd,
44                                                WORD32 zero_cols,
45                                                WORD32 zero_rows);
46  typedef void ihevc_hbd_itrans_recon_4x4_ttype1_ft(WORD16 *pi2_src,
47                                                    WORD16 *pi2_tmp,
48                                                    UWORD16 *pu2_pred,
49                                                    UWORD16 *pu2_dst,
50                                                    WORD32 src_strd,
51                                                    WORD32 pred_strd,
52                                                    WORD32 dst_strd,
53                                                    WORD32 zero_cols,
54                                                    WORD32 zero_rows,
55                                                    UWORD8 bit_depth);
56  typedef void ihevc_itrans_recon_4x4_ft(WORD16 *pi2_src,
57                                         WORD16 *pi2_tmp,
58                                         UWORD8 *pu1_pred,
59                                         UWORD8 *pu1_dst,
60                                         WORD32 src_strd,
61                                         WORD32 pred_strd,
62                                         WORD32 dst_strd,
63                                         WORD32 zero_cols,
64                                         WORD32 zero_rows);
65  typedef void ihevc_hbd_itrans_recon_4x4_ft(WORD16 *pi2_src,
66                                             WORD16 *pi2_tmp,
67                                             UWORD16 *pu2_pred,
68                                             UWORD16 *pu2_dst,
69                                             WORD32 src_strd,
70                                             WORD32 pred_strd,
71                                             WORD32 dst_strd,
72                                             WORD32 zero_cols,
73                                             WORD32 zero_rows,
74                                             UWORD8 bit_depth);
75  typedef void ihevc_itrans_recon_8x8_ft(WORD16 *pi2_src,
76                                         WORD16 *pi2_tmp,
77                                         UWORD8 *pu1_pred,
78                                         UWORD8 *pu1_dst,
79                                         WORD32 src_strd,
80                                         WORD32 pred_strd,
81                                         WORD32 dst_strd,
82                                         WORD32 zero_cols,
83                                         WORD32 zero_rows);
84  typedef void ihevc_hbd_itrans_recon_8x8_ft(WORD16 *pi2_src,
85                                             WORD16 *pi2_tmp,
86                                             UWORD16 *pu2_pred,
87                                             UWORD16 *pu2_dst,
88                                             WORD32 src_strd,
89                                             WORD32 pred_strd,
90                                             WORD32 dst_strd,
91                                             WORD32 zero_cols,
92                                             WORD32 zero_rows,
93                                             UWORD8 bit_depth);
94  typedef void ihevc_itrans_recon_16x16_ft(WORD16 *pi2_src,
95                                           WORD16 *pi2_tmp,
96                                           UWORD8 *pu1_pred,
97                                           UWORD8 *pu1_dst,
98                                           WORD32 src_strd,
99                                           WORD32 pred_strd,
100                                           WORD32 dst_strd,
101                                           WORD32 zero_cols,
102                                           WORD32 zero_rows);
103  typedef void ihevc_hbd_itrans_recon_16x16_ft(WORD16 *pi2_src,
104                                               WORD16 *pi2_tmp,
105                                               UWORD16 *pu2_pred,
106                                               UWORD16 *pu2_dst,
107                                               WORD32 src_strd,
108                                               WORD32 pred_strd,
109                                               WORD32 dst_strd,
110                                               WORD32 zero_cols,
111                                               WORD32 zero_rows,
112                                               UWORD8 bit_depth);
113  typedef void ihevc_itrans_recon_32x32_ft(WORD16 *pi2_src,
114                                           WORD16 *pi2_tmp,
115                                           UWORD8 *pu1_pred,
116                                           UWORD8 *pu1_dst,
117                                           WORD32 src_strd,
118                                           WORD32 pred_strd,
119                                           WORD32 dst_strd,
120                                           WORD32 zero_cols,
121                                           WORD32 zero_rows);
122  typedef void ihevc_hbd_itrans_recon_32x32_ft(WORD16 *pi2_src,
123                                               WORD16 *pi2_tmp,
124                                               UWORD16 *pu2_pred,
125                                               UWORD16 *pu2_dst,
126                                               WORD32 src_strd,
127                                               WORD32 pred_strd,
128                                               WORD32 dst_strd,
129                                               WORD32 zero_cols,
130                                               WORD32 zero_rows,
131                                               UWORD8 bit_depth);
132  
133  /* C function declarations */
134  ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1;
135  ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4;
136  ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8;
137  ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16;
138  ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32;
139  
140  ihevc_hbd_itrans_recon_4x4_ttype1_ft ihevc_hbd_itrans_recon_4x4_ttype1;
141  ihevc_hbd_itrans_recon_4x4_ft ihevc_hbd_itrans_recon_4x4;
142  ihevc_hbd_itrans_recon_8x8_ft ihevc_hbd_itrans_recon_8x8;
143  ihevc_hbd_itrans_recon_16x16_ft ihevc_hbd_itrans_recon_16x16;
144  ihevc_hbd_itrans_recon_32x32_ft ihevc_hbd_itrans_recon_32x32;
145  
146  /* A9 Q function declarations */
147  ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_a9q;
148  ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_a9q;
149  ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_a9q;
150  ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_a9q;
151  ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_a9q;
152  
153  /* A9 A function declarations */
154  ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_a9a;
155  ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_a9a;
156  ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_a9a;
157  ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_a9a;
158  ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_a9a;
159  
160  /* NEONINTR function declarations */
161  ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_neonintr;
162  ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_neonintr;
163  ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_neonintr;
164  ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_neonintr;
165  ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_neonintr;
166  
167  /* SSSE31 function declarations */
168  ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_ssse3;
169  ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_ssse3;
170  ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_ssse3;
171  ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_ssse3;
172  ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_ssse3;
173  
174  /* SSE42 function declarations */
175  ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_sse42;
176  ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_sse42;
177  ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_sse42;
178  ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_sse42;
179  
180  ihevc_hbd_itrans_recon_4x4_ttype1_ft ihevc_hbd_itrans_recon_4x4_ttype1_sse42;
181  ihevc_hbd_itrans_recon_4x4_ft ihevc_hbd_itrans_recon_4x4_sse42;
182  ihevc_hbd_itrans_recon_8x8_ft ihevc_hbd_itrans_recon_8x8_sse42;
183  ihevc_hbd_itrans_recon_16x16_ft ihevc_hbd_itrans_recon_16x16_sse42;
184  ihevc_hbd_itrans_recon_32x32_ft ihevc_hbd_itrans_recon_32x32_sse42;
185  
186  
187  /* armv8 function declarations */
188  ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_av8;
189  ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_av8;
190  ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_av8;
191  ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_av8;
192  ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_av8;
193  #endif /*_IHEVC_ITRANS_RECON_H_*/
194