• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /*
18  * @file    csc.h
19  *
20  * @brief   color space convertion abstract header
21  *
22  * @author  Pyoungjae Jung (pjet.jung@samsung.com)
23  *
24  * @version 1.0
25  *
26  * @history
27  *   2011.12.27 : Create
28  */
29 
30 #ifndef CSC_H
31 #define CSC_H
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 #define CSC_MAX_PLANES 3
38 
39 typedef enum _CSC_ERRORCODE {
40     CSC_ErrorNone = 0,
41     CSC_Error,
42     CSC_ErrorNotInit,
43     CSC_ErrorInvalidAddress,
44     CSC_ErrorUnsupportFormat,
45     CSC_ErrorNotImplemented
46 } CSC_ERRORCODE;
47 
48 typedef enum _CSC_METHOD {
49     CSC_METHOD_SW = 0,
50     CSC_METHOD_HW
51 } CSC_METHOD;
52 
53 typedef enum _CSC_HW_PROPERTY_TYPE {
54     CSC_HW_PROPERTY_FIXED_NODE = 0,
55     CSC_HW_PROPERTY_MODE_DRM,
56 } CSC_HW_PROPERTY_TYPE;
57 
58 /*
59  * change hal pixel format to omx pixel format
60  *
61  * @param hal_format
62  *   hal pixel format[in]
63  *
64  * @return
65  *   omx pixel format
66  */
67 unsigned int hal_2_omx_pixel_format(
68     unsigned int hal_format);
69 
70 /*
71  * change omx pixel format to hal pixel format
72  *
73  * @param hal_format
74  *   omx pixel format[in]
75  *
76  * @return
77  *   hal pixel format
78  */
79 unsigned int omx_2_hal_pixel_format(
80     unsigned int omx_format);
81 
82 /*
83  * Init CSC handle
84  *
85  * @return
86  *   csc handle
87  */
88 void *csc_init(
89     CSC_METHOD method);
90 
91 /*
92  * Deinit CSC handle
93  *
94  * @param handle
95  *   CSC handle[in]
96  *
97  * @return
98  *   error code
99  */
100 CSC_ERRORCODE csc_deinit(
101     void *handle);
102 
103 /*
104  * get color space converter method
105  *
106  * @param handle
107  *   CSC handle[in]
108  *
109  * @param method
110  *   CSC method[out]
111  *
112  * @return
113  *   error code
114  */
115 CSC_ERRORCODE csc_get_method(
116     void           *handle,
117     CSC_METHOD     *method);
118 
119 /*
120  * Set hw property
121  *
122  * @param handle
123  *   CSC handle[in]
124  *
125  * @param property
126  *   csc hw property[in]
127  *
128  * @param value
129  *   csc hw property value[in]
130  *
131  * @return
132  *   csc handle
133  */
134 CSC_ERRORCODE csc_set_hw_property(
135     void                *handle,
136     CSC_HW_PROPERTY_TYPE property,
137     int                  value);
138 
139 /*
140  * Get source format.
141  *
142  * @param handle
143  *   CSC handle[in]
144  *
145  * @param width
146  *   address of image width[out]
147  *
148  * @param height
149  *   address of image height[out]
150  *
151  * @param crop_left
152  *   address of image left crop size[out]
153  *
154  * @param crop_top
155  *   address of image top crop size[out]
156  *
157  * @param crop_width
158  *   address of cropped image width[out]
159  *
160  * @param crop_height
161  *   address of cropped image height[out]
162  *
163  * @param color_format
164  *   address of source color format(HAL format)[out]
165  *
166  * @return
167  *   error code
168  */
169 CSC_ERRORCODE csc_get_src_format(
170     void           *handle,
171     unsigned int   *width,
172     unsigned int   *height,
173     unsigned int   *crop_left,
174     unsigned int   *crop_top,
175     unsigned int   *crop_width,
176     unsigned int   *crop_height,
177     unsigned int   *color_format,
178     unsigned int   *cacheable);
179 
180 /*
181  * Set source format.
182  * Don't call each converting time.
183  * Pls call this function as below.
184  *   1. first converting time
185  *   2. format is changed
186  *
187  * @param handle
188  *   CSC handle[in]
189  *
190  * @param width
191  *   image width[in]
192  *
193  * @param height
194  *   image height[in]
195  *
196  * @param crop_left
197  *   image left crop size[in]
198  *
199  * @param crop_top
200  *   image top crop size[in]
201  *
202  * @param crop_width
203  *   cropped image width[in]
204  *
205  * @param crop_height
206  *   cropped image height[in]
207  *
208  * @param color_format
209  *   source color format(HAL format)[in]
210  *
211  * @return
212  *   error code
213  */
214 CSC_ERRORCODE csc_set_src_format(
215     void           *handle,
216     unsigned int    width,
217     unsigned int    height,
218     unsigned int    crop_left,
219     unsigned int    crop_top,
220     unsigned int    crop_width,
221     unsigned int    crop_height,
222     unsigned int    color_format,
223     unsigned int    cacheable);
224 
225 /*
226  * Get destination format.
227  *
228  * @param handle
229  *   CSC handle[in]
230  *
231  * @param width
232  *   address of image width[out]
233  *
234  * @param height
235  *   address of image height[out]
236  *
237  * @param crop_left
238  *   address of image left crop size[out]
239  *
240  * @param crop_top
241  *   address of image top crop size[out]
242  *
243  * @param crop_width
244  *   address of cropped image width[out]
245  *
246  * @param crop_height
247  *   address of cropped image height[out]
248  *
249  * @param color_format
250  *   address of color format(HAL format)[out]
251  *
252  * @return
253  *   error code
254  */
255 CSC_ERRORCODE csc_get_dst_format(
256     void           *handle,
257     unsigned int   *width,
258     unsigned int   *height,
259     unsigned int   *crop_left,
260     unsigned int   *crop_top,
261     unsigned int   *crop_width,
262     unsigned int   *crop_height,
263     unsigned int   *color_format,
264     unsigned int   *cacheable);
265 
266 /*
267  * Set destination format
268  * Don't call each converting time.
269  * Pls call this function as below.
270  *   1. first converting time
271  *   2. format is changed
272  *
273  * @param handle
274  *   CSC handle[in]
275  *
276  * @param width
277  *   image width[in]
278  *
279  * @param height
280  *   image height[in]
281  *
282  * @param crop_left
283  *   image left crop size[in]
284  *
285  * @param crop_top
286  *   image top crop size[in]
287  *
288  * @param crop_width
289  *   cropped image width[in]
290  *
291  * @param crop_height
292  *   cropped image height[in]
293  *
294  * @param color_format
295  *   destination color format(HAL format)[in]
296  *
297  * @return
298  *   error code
299  */
300 CSC_ERRORCODE csc_set_dst_format(
301     void           *handle,
302     unsigned int    width,
303     unsigned int    height,
304     unsigned int    crop_left,
305     unsigned int    crop_top,
306     unsigned int    crop_width,
307     unsigned int    crop_height,
308     unsigned int    color_format,
309     unsigned int    cacheable);
310 
311 /*
312  * Setup source buffer
313  * set_format func should be called before this this func.
314  *
315  * @param handle
316  *   CSC handle[in]
317  *
318  * @param src_buffer
319  *   source buffer pointer array[in]
320  *
321  * @param y
322  *   y or RGB destination pointer[in]
323  *
324  * @param u
325  *   u or uv destination pointer[in]
326  *
327  * @param v
328  *   v or none destination pointer[in]
329  *
330  * @return
331  *   error code
332  */
333 CSC_ERRORCODE csc_set_src_buffer(
334     void *handle,
335     void *addr[CSC_MAX_PLANES]);
336 
337 /*
338  * Setup destination buffer
339  *
340  * @param handle
341  *   CSC handle[in]
342  *
343  * @param y
344  *   y or RGB destination pointer[in]
345  *
346  * @param u
347  *   u or uv destination pointer[in]
348  *
349  * @param v
350  *   v or none destination pointer[in]
351  *
352  * @return
353  *   error code
354  */
355 CSC_ERRORCODE csc_set_dst_buffer(
356     void *handle,
357     void *addr[CSC_MAX_PLANES]);
358 
359 /*
360  * Convert color space with presetup color format
361  *
362  * @param handle
363  *   CSC handle[in]
364  *
365  * @return
366  *   error code
367  */
368 CSC_ERRORCODE csc_convert(
369     void *handle);
370 
371 #ifdef __cplusplus
372 }
373 #endif
374 
375 #endif
376