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.h
22 *
23 * @brief
24 *  Functions declarations for inverse transform
25 *
26 * @author
27 *  Ittiam
28 *
29 * @remarks
30 *  None
31 *
32 *******************************************************************************
33 */
34 #ifndef _IHEVC_ITRANS_H_
35 #define _IHEVC_ITRANS_H_
36 
37 typedef void ihevc_itrans_4x4_ttype1_ft(WORD16 *pi2_src,
38                                         WORD16 *pi2_dst,
39                                         WORD32 i4_src_strd,
40                                         WORD32 i4_dst_strd,
41                                         WORD32 i4_shift,
42                                         WORD32 i4_zero_cols);
43 typedef void ihevc_itrans_4x4_ft(WORD16 *pi2_src,
44                                  WORD16 *pi2_dst,
45                                  WORD32 i4_src_strd,
46                                  WORD32 i4_dst_strd,
47                                  WORD32 i4_shift,
48                                  WORD32 i4_zero_cols);
49 typedef void ihevc_itrans_8x8_ft(WORD16 *pi2_src,
50                                  WORD16 *pi2_dst,
51                                  WORD32 i4_src_strd,
52                                  WORD32 i4_dst_strd,
53                                  WORD32 i4_shift,
54                                  WORD32 i4_zero_cols);
55 typedef void ihevc_itrans_16x16_ft(WORD16 *pi2_src,
56                                    WORD16 *pi2_dst,
57                                    WORD32 i4_src_strd,
58                                    WORD32 i4_dst_strd,
59                                    WORD32 i4_shift,
60                                    WORD32 i4_zero_cols);
61 typedef void ihevc_itrans_32x32_ft(WORD16 *pi2_src,
62                                    WORD16 *pi2_dst,
63                                    WORD32 i4_src_strd,
64                                    WORD32 i4_dst_strd,
65                                    WORD32 i4_shift,
66                                    WORD32 i4_zero_cols);
67 
68 /* C function declarations */
69 ihevc_itrans_4x4_ttype1_ft ihevc_itrans_4x4_ttype1;
70 ihevc_itrans_4x4_ft ihevc_itrans_4x4;
71 ihevc_itrans_8x8_ft ihevc_itrans_8x8;
72 ihevc_itrans_16x16_ft ihevc_itrans_16x16;
73 ihevc_itrans_32x32_ft ihevc_itrans_32x32;
74 
75 /* A9 Q function declarations */
76 ihevc_itrans_4x4_ttype1_ft ihevc_itrans_4x4_ttype1_a9q;
77 ihevc_itrans_4x4_ft ihevc_itrans_4x4_a9q;
78 ihevc_itrans_8x8_ft ihevc_itrans_8x8_a9q;
79 ihevc_itrans_16x16_ft ihevc_itrans_16x16_a9q;
80 ihevc_itrans_32x32_ft ihevc_itrans_32x32_a9q;
81 
82 /* A9 Q function declarations */
83 ihevc_itrans_4x4_ttype1_ft ihevc_itrans_4x4_ttype1_neonintr;
84 ihevc_itrans_4x4_ft ihevc_itrans_4x4_neonintr;
85 ihevc_itrans_8x8_ft ihevc_itrans_8x8_neonintr;
86 ihevc_itrans_16x16_ft ihevc_itrans_16x16_neonintr;
87 ihevc_itrans_32x32_ft ihevc_itrans_32x32_neonintr;
88 
89 /* SSSE3 function declarations */
90 ihevc_itrans_4x4_ttype1_ft ihevc_itrans_4x4_ttype1_ssse3;
91 ihevc_itrans_4x4_ft ihevc_itrans_4x4_ssse3;
92 ihevc_itrans_8x8_ft ihevc_itrans_8x8_ssse3;
93 ihevc_itrans_16x16_ft ihevc_itrans_16x16_ssse3;
94 ihevc_itrans_32x32_ft ihevc_itrans_32x32_ssse3;
95 
96 /* SSE4.2 function declarations */
97 ihevc_itrans_4x4_ttype1_ft ihevc_itrans_4x4_ttype1_sse42;
98 ihevc_itrans_4x4_ft ihevc_itrans_4x4_sse42;
99 ihevc_itrans_8x8_ft ihevc_itrans_8x8_sse42;
100 ihevc_itrans_16x16_ft ihevc_itrans_16x16_sse42;
101 ihevc_itrans_32x32_ft ihevc_itrans_32x32_sse42;
102 
103 /* armv8 function declarations */
104 ihevc_itrans_4x4_ttype1_ft ihevc_itrans_4x4_ttype1_av8;
105 ihevc_itrans_4x4_ft ihevc_itrans_4x4_av8;
106 ihevc_itrans_8x8_ft ihevc_itrans_8x8_av8;
107 ihevc_itrans_16x16_ft ihevc_itrans_16x16_av8;
108 ihevc_itrans_32x32_ft ihevc_itrans_32x32_av8;
109 #endif /*_IHEVC_ITRANS_H_*/
110