blob: 6b33bf0883de948b8989e58667ae3263e0e07656 [file] [log] [blame]
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301/******************************************************************************
2 *
3 * Copyright (C) 2015 The Android Open Source Project
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 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*/
20
21/**
22*******************************************************************************
23* @file
24* ih264e_fmt_conv.h
25*
26* @brief
27* The file contains extern declarations of color space conversion routines
28*
29* @author
30* ittiam
31*
32* @remarks
33* None
34*
35*******************************************************************************
36*/
37
38#ifndef IH264E_FMT_CONV_H_
39#define IH264E_FMT_CONV_H_
40
41#define COEFF1 13073
42#define COEFF2 -3207
43#define COEFF3 -6664
44#define COEFF4 16530
45
46IH264E_ERROR_T ih264e_fmt_conv(codec_t *ps_codec,
47 pic_buf_t *ps_pic,
48 UWORD8 *pu1_y_dst,
49 UWORD8 *pu1_u_dst,
50 UWORD8 *pu1_v_dst,
51 UWORD32 u4_dst_y_strd,
52 UWORD32 u4_dst_uv_strd,
53 WORD32 cur_row,
54 WORD32 num_rows);
55
56typedef void ih264e_fmt_conv_420sp_to_rgba8888_ft(UWORD8 *pu1_y_src,
57 UWORD8 *pu1_uv_src,
58 UWORD32 *pu4_rgba_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
66typedef void ih264e_fmt_conv_420sp_to_rgb565_ft(UWORD8 *pu1_y_src,
67 UWORD8 *pu1_uv_src,
68 UWORD16 *pu2_rgb_dst,
69 WORD32 wd,
70 WORD32 ht,
71 WORD32 src_y_strd,
72 WORD32 src_uv_strd,
73 WORD32 dst_strd,
74 WORD32 is_u_first);
75
76typedef void ih264e_fmt_conv_420sp_to_420sp_ft(UWORD8 *pu1_y_src,
77 UWORD8 *pu1_uv_src,
78 UWORD8 *pu1_y_dst,
79 UWORD8 *pu1_uv_dst,
80 WORD32 wd,
81 WORD32 ht,
82 WORD32 src_y_strd,
83 WORD32 src_uv_strd,
84 WORD32 dst_y_strd,
85 WORD32 dst_uv_strd);
86
87typedef void ih264e_fmt_conv_420sp_to_420p_ft(UWORD8 *pu1_y_src,
88 UWORD8 *pu1_uv_src,
89 UWORD8 *pu1_y_dst,
90 UWORD8 *pu1_u_dst,
91 UWORD8 *pu1_v_dst,
92 WORD32 wd,
93 WORD32 ht,
94 WORD32 src_y_strd,
95 WORD32 src_uv_strd,
96 WORD32 dst_y_strd,
97 WORD32 dst_uv_strd,
98 WORD32 is_u_first,
99 WORD32 disable_luma_copy);
100
101typedef void ih264e_fmt_conv_420p_to_420sp_ft(UWORD8 *pu1_y_src, UWORD8 *pu1_u_src, UWORD8 *pu1_v_src,
102 UWORD8 *pu1_y_dst, UWORD8 *pu1_uv_dst,
103 UWORD16 u2_height, UWORD16 u2_width, UWORD16 src_y_strd,
104 UWORD16 src_u_strd, UWORD16 src_v_strd,
105 UWORD16 dst_y_strd, UWORD16 dst_uv_strd,
106 UWORD32 convert_uv_only);
107
108typedef void ih264e_fmt_conv_422i_to_420sp_ft(UWORD8 *pu1_y_buf,UWORD8 *pu1_u_buf,UWORD8 *pu1_v_buf,
109 UWORD8 *pu1_422i_buf,
110 WORD32 u4_y_width,WORD32 u4_y_height,
111 WORD32 u4_y_stride,WORD32 u4_u_stride,WORD32 u4_v_stride,
112 WORD32 u4_422i_stride);
113
114
115/* C function declarations */
116ih264e_fmt_conv_420sp_to_rgba8888_ft ih264e_fmt_conv_420sp_to_rgba8888;
117ih264e_fmt_conv_420sp_to_rgb565_ft ih264e_fmt_conv_420sp_to_rgb565;
118ih264e_fmt_conv_420sp_to_420sp_ft ih264e_fmt_conv_420sp_to_420sp;
119ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p;
120ih264e_fmt_conv_420p_to_420sp_ft ih264e_fmt_conv_420p_to_420sp;
121ih264e_fmt_conv_422i_to_420sp_ft ih264e_fmt_conv_422i_to_420sp;
122
123/* A9Q function declarations */
124ih264e_fmt_conv_420sp_to_rgba8888_ft ih264e_fmt_conv_420sp_to_rgba8888_a9q;
125ih264e_fmt_conv_420sp_to_420sp_ft ih264e_fmt_conv_420sp_to_420sp_a9q;
126ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_a9q;
127ih264e_fmt_conv_420p_to_420sp_ft ih264e_fmt_conv_420p_to_420sp_a9q;
128ih264e_fmt_conv_422i_to_420sp_ft ih264e_fmt_conv_422i_to_420sp_a9q;
129
130
131/* A9A function declarations */
132ih264e_fmt_conv_420sp_to_rgba8888_ft ih264e_fmt_conv_420sp_to_rgba8888_a9a;
133ih264e_fmt_conv_420sp_to_420sp_ft ih264e_fmt_conv_420sp_to_420sp_a9a;
134ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_a9a;
135
136/* SSSe31 function declarations */
137ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_ssse31;
138
139/* SSE4 function declarations */
140ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_sse42;
141
142#endif /* IH264E_FMT_CONV_H_ */