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
46typedef 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
56typedef 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
67typedef 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);
77typedef 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 */
92ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888;
93ihevcd_fmt_conv_420sp_to_rgb565_ft ihevcd_fmt_conv_420sp_to_rgb565;
94ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp;
95ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p;
96
97/* A9Q function declarations */
98ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888_a9q;
99ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp_a9q;
100ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_a9q;
101
102/* A9A function declarations */
103ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888_a9a;
104ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp_a9a;
105ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_a9a;
106
107/* SSSe31 function declarations */
108ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_ssse3;
109
110/* SSE4 function declarations */
111ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_sse42;
112
113/* armv8 function declarations */
114ihevcd_fmt_conv_420sp_to_rgba8888_ft ihevcd_fmt_conv_420sp_to_rgba8888_av8;
115ihevcd_fmt_conv_420sp_to_420sp_ft ihevcd_fmt_conv_420sp_to_420sp_av8;
116ihevcd_fmt_conv_420sp_to_420p_ft ihevcd_fmt_conv_420sp_to_420p_av8;
117
118#endif /* _IHEVCD_FMT_CONV_H_ */
119