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  *******************************************************************************
21  * @file
22  *  ihevcd_structs.h
23  *
24  * @brief
25  *  Structure definitions used in the decoder
26  *
27  * @author
28  *  Harish
29  *
30  * @par List of Functions:
31  *
32  * @remarks
33  *  None
34  *
35  *******************************************************************************
36  */
37 
38 #ifndef _IHEVCD_FMT_CONV_H_
39 #define _IHEVCD_FMT_CONV_H_
40 
41 #define COEFF1          13073
42 #define COEFF2          -3207
43 #define COEFF3          -6664
44 #define COEFF4          16530
45 
46 typedef void ihevcd_fmt_conv_420sp_to_rgba8888_ft(UWORD8 *pu1_y_src,
47                                                   UWORD8 *pu1_uv_src,
48                                                   UWORD32 *pu4_rgba_dst,
49                                                   WORD32 wd,
50                                                   WORD32 ht,
51                                                   WORD32 src_y_strd,
52                                                   WORD32 src_uv_strd,
53                                                   WORD32 dst_strd,
54                                                   WORD32 is_u_first);
55 
56 typedef void ihevcd_fmt_conv_420sp_to_rgb565_ft(UWORD8 *pu1_y_src,
57                                                 UWORD8 *pu1_uv_src,
58                                                 UWORD16 *pu2_rgb_dst,
59                                                 WORD32 wd,
60                                                 WORD32 ht,
61                                                 WORD32 src_y_strd,
62                                                 WORD32 src_uv_strd,
63                                                 WORD32 dst_strd,
64                                                 WORD32 is_u_first);
65 
66 
67 typedef void ihevcd_fmt_conv_420sp_to_420sp_ft(UWORD8 *pu1_y_src,
68                                                UWORD8 *pu1_uv_src,
69                                                UWORD8 *pu1_y_dst,
70                                                UWORD8 *pu1_uv_dst,
71                                                WORD32 wd,
72                                                WORD32 ht,
73                                                WORD32 src_y_strd,
74                                                WORD32 src_uv_strd,
75                                                WORD32 dst_y_strd,
76                                                WORD32 dst_uv_strd);
77 typedef void ihevcd_fmt_conv_420sp_to_420p_ft(UWORD8 *pu1_y_src,
78                                               UWORD8 *pu1_uv_src,
79                                               UWORD8 *pu1_y_dst,
80                                               UWORD8 *pu1_u_dst,
81                                               UWORD8 *pu1_v_dst,
82                                               WORD32 wd,
83                                               WORD32 ht,
84                                               WORD32 src_y_strd,
85                                               WORD32 src_uv_strd,
86                                               WORD32 dst_y_strd,
87                                               WORD32 dst_uv_strd,
88                                               WORD32 is_u_first,
89                                               WORD32 disable_luma_copy);
90 
91 /* C function declarations */
92 ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888;
93 ihevcd_fmt_conv_420sp_to_rgb565_ft ihevcd_fmt_conv_420sp_to_rgb565;
94 ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp;
95 ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p;
96 
97 /* A9Q function declarations */
98 ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888_a9q;
99 ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp_a9q;
100 ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_a9q;
101 
102 /* A9A function declarations */
103 ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888_a9a;
104 ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp_a9a;
105 ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_a9a;
106 
107 /* SSSe31 function declarations */
108 ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_ssse3;
109 
110 /* SSE4 function declarations */
111 ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_sse42;
112 
113 /* armv8 function declarations */
114 ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888_av8;
115 ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp_av8;
116 ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_av8;
117 
118 #endif /* _IHEVCD_FMT_CONV_H_ */
119