• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 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        M4VIFI_FiltersAPI.h
19  * @brief        External API and Data definitions for the video filter library
20  * @note        This file defines and declares data common to the video filter library:
21  *                    -# data types
22  *                    -# error codes
23  *                    -# external API's
24  *                    -# API level structure definition
25  ******************************************************************************
26 */
27 
28 #ifndef _M4VIFI_FILTERSAPI_H_
29 
30 #define _M4VIFI_FILTERSAPI_H_
31 
32 #ifdef __cplusplus
33 
34 extern "C" {
35 
36 #endif /* __cplusplus */
37 
38     /**
39      ***********************************************************
40      *                    Data types definition
41      ***********************************************************
42     */
43 
44     typedef unsigned char M4VIFI_UInt8;
45     typedef char M4VIFI_Int8;
46     typedef unsigned short M4VIFI_UInt16;
47     typedef unsigned long M4VIFI_UInt32;
48     typedef short M4VIFI_Int16;
49     typedef long M4VIFI_Int32;
50     typedef float M4VIFI_Float;
51     typedef double M4VIFI_Double;
52     typedef unsigned char M4VIFI_ErrorCode;
53 
54 /**
55  ***********************************************************
56  *                    Error codes definition
57  ***********************************************************
58 */
59 #define M4VIFI_OK                        0
60 #define M4VIFI_INVALID_PARAM            7
61 #define M4VIFI_ILLEGAL_FRAME_HEIGHT        8
62 #define M4VIFI_ILLEGAL_FRAME_WIDTH        9
63 
64 /**
65  ***********************************************************
66  *                    Other basic definitions
67  ***********************************************************
68 */
69 #define CNST    const
70 #define EXTERN    extern
71 
72 #ifndef NULL
73 #define NULL    0
74 
75 #endif
76 #ifndef FALSE
77 #define FALSE    0
78 #define TRUE    !FALSE
79 
80 #endif
81 
82 /**
83  ***********************************************************
84  *                    Structures definition
85  ***********************************************************
86 */
87 
88 /**
89  ******************************************************************************
90  * structure    M4VIFI_ImagePlane
91  * @brief        Texture (YUV) planes structure
92  * @note        This structure details the image planes for the output textures:
93  *                sizes (in pixels) are luma plane sizes, the 3 pointers point
94  *                to the Y, U and V buffers which store data in planar format.
95  ******************************************************************************
96 */
97 
98     typedef struct
99         {
100         M4VIFI_UInt32 u_width;   /**< Width of luma in pixel unit */
101         M4VIFI_UInt32 u_height;  /**< Height of luma in pixel unit */
102         M4VIFI_UInt32 u_topleft; /**< Pointer to first texture active pixel */
103         M4VIFI_UInt32 u_stride;  /**< Stride value */
104         M4VIFI_UInt8 *pac_data;  /**< Pointer to the data */
105         } M4VIFI_ImagePlane;
106 
107 /**
108  ******************************************************************************
109  * structure    M4VIFI_FramingData
110  * @brief        Data necessary to add an overlay on an image
111  * @note        This structure details the position and the data of the overlay
112  ******************************************************************************
113 */
114     typedef struct
115         {
116         M4VIFI_UInt32
117             m_xPosStep; /**< X positioning of the overlay vs main picture.
118                                   X positioning is expressed in percentage vs the main
119                                    picture width.
120                                   m_xPosStep must be expressed by step of 1% and between
121                                   -50/+50%.
122                                   0% means overlay is centered vs main picture on
123                                    X abscissa. */
124         M4VIFI_UInt32
125             m_yPosStep; /**< Y positioning of the overlay vs main picture.
126                                   Y positioning is expressed in percentage vs the main
127                                    picture width.
128                                   m_xPosStep must be expressed by step of 1% and between
129                                    -50/+50%.
130                                   0% means overlay is centered vs main picture on
131                                    Y abscissa. */
132 
133         M4VIFI_ImagePlane
134             *
135                 m_imagePlane; /**< Pointer to the framing image with alpha channel */
136         } M4VIFI_FramingData;
137 
138 /**
139  ******************************************************************************
140  * structure    M4VIFI_HLSoffset
141  * @brief        HLS offset structure
142  * @note        This structure have the hue, saturation and lightness value
143  *                for quality enhancement. Range of values neccessarily be
144  *                hue = -360 to 360, sat = 0 to 100 and light = 0 t0 100
145  ******************************************************************************
146 */
147     typedef struct
148         {
149         M4VIFI_Int16 hue;   /**< Hue offset */
150         M4VIFI_Int16 sat;   /**< Saturation offset */
151         M4VIFI_Int16 light; /**< Light offset */
152         } M4VIFI_HLSoffset;
153 
154 /**
155  ******************************************************************************
156  * structure    M4VIFI_Tranformation
157  * @brief        Image Tranformation Structure
158  * @note        Image Tranformation Request
159  *                rotation : 1 -> +90deg Rotation
160  *                          -1 -> -90deg Rotation
161  *                           0 ->  No Rotation
162  ******************************************************************************
163 */
164     typedef struct
165         {
166         M4VIFI_Int32 i32_rotation; /**< Rotation Flag        */
167         } M4VIFI_Tranformation;
168 
169 /**
170  ******************************************************************************
171  * structure    M4VIFI_pContext
172  * @brief        New Structures
173  * @note        -# Structure of M4VIFI_HLSoffset
174  ******************************************************************************
175 */
176     typedef struct
177         {
178         M4VIFI_HLSoffset hlsOffset; /**< HLS offset structure */
179         } M4VIFI_pContext;
180 
181     /*
182      *****************************************************
183      *                    External API functions
184      *****************************************************
185     */
186 
187     /**< Effect filters */
188     M4VIFI_UInt8 M4VIFI_SepiaYUV420toYUV420(void *pUserData,
189         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
190     M4VIFI_UInt8 M4VIFI_GrayscaleYUV420toYUV420(void *pUserData,
191         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
192     M4VIFI_UInt8 M4VIFI_ContrastYUV420toYUV420(void *pUserData,
193         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
194     M4VIFI_UInt8 M4VIFI_NegativeYUV420toYUV420(void *pUserData,
195         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
196     M4VIFI_UInt8 M4VIFI_FlipYUV420toYUV420(void *pUserData,
197         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
198     M4VIFI_UInt8 M4VIFI_MirrorYUV420toYUV420(void *pUserData,
199         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
200     M4VIFI_UInt8 M4VIFI_Rotate180YUV420toYUV420(void *pUserData,
201         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
202     M4VIFI_UInt8 M4VIFI_Rotate90RightYUV420toYUV420(void *pUserData,
203         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
204     M4VIFI_UInt8 M4VIFI_Rotate90LeftYUV420toYUV420(void *pUserData,
205         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
206     M4VIFI_UInt8 M4VIFI_ColorRYUV420toYUV420(void *pUserData,
207         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
208     M4VIFI_UInt8 M4VIFI_ColorGYUV420toYUV420(void *pUserData,
209         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
210     M4VIFI_UInt8 M4VIFI_ColorBYUV420toYUV420(void *pUserData,
211         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
212     M4VIFI_UInt8 M4VIFI_FramingRGB565toYUV420(void *pUserData,
213         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
214     M4VIFI_UInt8 M4VIFI_FramingYUV420(void *pUserData,
215         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
216     M4VIFI_UInt8 M4VIFI_SetHueInYUV420(void *pUserData,
217         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
218     M4VIFI_UInt8 M4VIFI_ColdYUV420toYUV420(void *pUserData,
219         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
220     M4VIFI_UInt8 M4VIFI_WarmYUV420toYUV420(void *pUserData,
221         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
222 
223 /*                ADS Compiler                */
224 
225 /*        Generic ARM assembly functions        */
226 #if defined ADS_ARM
227 
228     /** Apply grayscale effect RGB565toRGB565 */
229 
230     M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
231         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
232 
233     /** Resize Bilinear RGB888toRGB888 */
234     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
235         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
236 
237     /** Resize Bilinear RGB565toRGB565 */
238     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
239         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
240 
241     /** Resize Bilinear YUV420toYUV420 */
242     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
243         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
244 
245     /** RGB565 to YUV420 */
246     M4VIFI_UInt8 M4VIFI_RGB565toYUV420AdsArm(void *pUserData,
247         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
248     /** BGR565 to YUV420 */
249     M4VIFI_UInt8 M4VIFI_BGR565toYUV420AdsArm(void *pUserData,
250         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
251 
252     /** YUV422 to YUV420 */
253     M4VIFI_UInt8 M4VIFI_UYVYtoYUV420AdsArm(void *pUserData,
254         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
255 
256     /** YUV420 to RGB565 */
257     M4VIFI_UInt8 M4VIFI_YUV420toRGB565AdsArm(void *pUserData,
258         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
259     /** YUV420 to BGR565 */
260     M4VIFI_UInt8 M4VIFI_YUV420toBGR565AdsArm(void *pUserData,
261         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
262 
263     /** Resize Bilinear YUV420toRGB565 */
264     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565AdsArm(void *pUserData,
265         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
266     /** Resize Bilinear YUV420toBGR565 */
267     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565AdsArm(void *pUserData,
268         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
269     /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
270     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm(
271         void *pUserData,
272             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
273     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm(
274         void *pUserData,
275             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
276     /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
277     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm(
278         void *pUserData,
279             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
280     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm(
281         void *pUserData,
282             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
283     /** Modify HLS in RGB565 */
284     M4VIFI_UInt8 M4VIFI_SetHLSinRGB565AdsArm(void *pUserData,
285         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
286     /** Modify HLS in BGR565 */
287     M4VIFI_UInt8 M4VIFI_SetHLSinBGR565AdsArm(void *pUserData,
288         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
289 
290 #define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420AdsArm
291 #define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420AdsArm
292 #define M4VIFI_UYVYtoYUV420                                    M4VIFI_UYVYtoYUV420AdsArm
293 #define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565AdsArm
294 #define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565AdsArm
295 #define M4VIFI_ResizeBilinearYUV420toRGB565             \
296                            M4VIFI_ResizeBilinearYUV420toRGB565AdsArm
297 
298 #define M4VIFI_ResizeBilinearYUV420toBGR565             \
299                            M4VIFI_ResizeBilinearYUV420toBGR565AdsArm
300 
301 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
302                            M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm
303 
304 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft  \
305                            M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm
306 
307 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
308                            M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm
309 
310 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft  \
311                            M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm
312 
313 #define M4VIFI_SetHLSinRGB565                                M4VIFI_SetHLSinRGB565AdsArm
314 #define M4VIFI_SetHLSinBGR565                                M4VIFI_SetHLSinBGR565AdsArm
315 
316 /*        ARM9E assembly functions        */
317 #elif defined ADS_ARM9E
318 
319     /** Apply grayscale effect RGB565toRGB565 */
320 
321     M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
322         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
323 
324     /** Resize Bilinear YUV888toYUV888 */
325     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
326         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
327 
328     /** Resize Bilinear YUV565toYUV565 */
329     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
330         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
331     /** Resize Bilinear YUV420toYUV420 */
332     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
333         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
334 
335     /** RGB565 to YUV420 */
336     M4VIFI_UInt8 M4VIFI_RGB565toYUV420AdsArm9E(void *pUserData,
337         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
338     /** BGR565 to YUV420 */
339     M4VIFI_UInt8 M4VIFI_BGR565toYUV420AdsArm9E(void *pUserData,
340         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
341 
342     /** YUV422 to YUV420 */
343     M4VIFI_UInt8 M4VIFI_UYVYtoYUV420AdsArm9E(void *pUserData,
344         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
345 
346     /** YUV420 to RGB565 */
347     M4VIFI_UInt8 M4VIFI_YUV420toRGB565AdsArm9E(void *pUserData,
348         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
349     /** YUV420 to BGR565 */
350     M4VIFI_UInt8 M4VIFI_YUV420toBGR565AdsArm9E(void *pUserData,
351         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
352 
353     /** Resize Bilinear YUV420toRGB565 */
354     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565AdsArm9E(void *pUserData,
355         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
356     /** Resize Bilinear YUV420toBGR565 */
357     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565AdsArm9E(void *pUserData,
358         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
359     /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
360     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm9E(
361         void *pUserData,
362             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
363     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm9E(
364         void *pUserData,
365             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
366     /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
367     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm9E(
368         void *pUserData,
369             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
370     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm9E(
371         void *pUserData,
372             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
373     /** Modify HLS in RGB565 */
374     M4VIFI_UInt8 M4VIFI_SetHLSinRGB565AdsArm9E(void *pUserData,
375         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
376     /** Modify HLS in BGR565 */
377     M4VIFI_UInt8 M4VIFI_SetHLSinBGR565AdsArm9E(void *pUserData,
378         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
379 
380     /** Resize YUV420toYUV420 from QCIF to QVGA*/
381     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoYUV420QVGAAdsArm9E(void *pUserData,
382         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
383     /**Resize YUV420toRGB565 from QCIF to QVGA*/
384     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGAAdsArm9E(void *pUserData,
385         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
386     /**Resize YUV420toRGB565 from QCIF to QVGA with rotation +90*/
387     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RRAdsArm9E(void *pUserData,
388         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
389     /**Resize YUV420toRGB565 from QCIF to QVGA with rotation -90*/
390     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RLAdsArm9E(void *pUserData,
391         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
392 /** Resizes YUV420 Planar Image and stores in YUV420 Linear format with/without +or-90 rotation*/
393     M4VIFI_UInt8 M4VIFI_YUV420PlanartoYUV420LinearAdsArm9E(void *pUserData,
394         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
395 
396 #define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420AdsArm9E
397 #define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420AdsArm9E
398 #define M4VIFI_UYVYtoYUV420                                    M4VIFI_UYVYtoYUV420AdsArm9E
399 #define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565AdsArm9E
400 #define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565AdsArm9E
401 #define M4VIFI_ResizeBilinearYUV420toRGB565 \
402                            M4VIFI_ResizeBilinearYUV420toRGB565AdsArm9E
403 #define M4VIFI_ResizeBilinearYUV420toBGR565 \
404                            M4VIFI_ResizeBilinearYUV420toBGR565AdsArm9E
405 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
406                            M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm9E
407 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
408                            M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm9E
409 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
410                            M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm9E
411 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft \
412                            M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm9E
413 #define M4VIFI_SetHLSinRGB565                            M4VIFI_SetHLSinRGB565AdsArm9E
414 #define M4VIFI_SetHLSinBGR565                            M4VIFI_SetHLSinBGR565AdsArm9E
415 #define M4VIFI_YUV420QCIFtoYUV420QVGA                    M4VIFI_YUV420QCIFtoYUV420QVGAAdsArm9E
416 #define M4VIFI_YUV420QCIFtoRGB565QVGA                    M4VIFI_YUV420QCIFtoRGB565QVGAAdsArm9E
417 #define M4VIFI_YUV420QCIFtoRGB565QVGA_RR                 M4VIFI_YUV420QCIFtoRGB565QVGA_RRAdsArm9E
418 #define M4VIFI_YUV420QCIFtoRGB565QVGA_RL                 M4VIFI_YUV420QCIFtoRGB565QVGA_RLAdsArm9E
419 #define M4VIFI_YUV420PlanartoYUV420Linear                M4VIFI_YUV420PlanartoYUV420LinearAdsArm9E
420 /*                GCC Compiler                */
421 /*        Generic ARM assembly functions        */
422 
423 #elif defined GCC_ARM
424 
425     /** Apply grayscale effect RGB565toRGB565 */
426 
427     M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
428         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
429 
430     /** Resize Bilinear YUV888toYUV888 */
431     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
432         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
433 
434     /** Resize Bilinear YUV565toYUV565 */
435     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
436         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
437 
438     /** Resize Bilinear YUV420toYUV420 */
439     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
440         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
441 
442     /** RGB565 to YUV420 */
443     M4VIFI_UInt8 M4VIFI_RGB565toYUV420GccArm(void *pUserData,
444         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
445     /** BGR565 to YUV420 */
446     M4VIFI_UInt8 M4VIFI_BGR565toYUV420GccArm(void *pUserData,
447         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
448 
449     /** YUV420 to RGB565 */
450     M4VIFI_UInt8 M4VIFI_YUV420toRGB565GccArm(void *pUserData,
451         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
452     /** YUV420 to BGR565 */
453     M4VIFI_UInt8 M4VIFI_YUV420toBGR565GccArm(void *pUserData,
454         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
455 
456     /** Resize Bilinear YUV420toRGB565 */
457     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565GccArm(void *pUserData,
458         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
459 
460     /** Resize Bilinear YUV420toBGR565 */
461     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565GccArm(void *pUserData,
462         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
463 
464     /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
465     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm(
466         void *pUserData,
467             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
468     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm(
469         void *pUserData,
470             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
471 
472     /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
473     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm(
474         void *pUserData,
475             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
476     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm(
477         void *pUserData,
478             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
479 
480     /** Modify HLS in RGB565 */
481     M4VIFI_UInt8 M4VIFI_SetHLSinRGB565GccArm(void *pUserData,
482         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
483 
484     /** Modify HLS in BGR565 */
485     M4VIFI_UInt8 M4VIFI_SetHLSinBGR565GccArm(void *pUserData,
486         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
487 
488 #define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420GccArm
489 #define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420GccArm
490 #define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565GccArm
491 #define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565GccArm
492 #define M4VIFI_ResizeBilinearYUV420toRGB565 \
493                                M4VIFI_ResizeBilinearYUV420toRGB565GccArm
494 #define M4VIFI_ResizeBilinearYUV420toBGR565 \
495                                M4VIFI_ResizeBilinearYUV420toBGR565GccArm
496 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
497                                M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm
498 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
499                                M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm
500 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
501                                M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm
502 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft \
503                                M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm
504 #define M4VIFI_SetHLSinRGB565                                M4VIFI_SetHLSinRGB565GccArm
505 #define M4VIFI_SetHLSinBGR565                                M4VIFI_SetHLSinBGR565GccArm
506 
507 /*        ARM9E assembly functions        */
508 #elif defined GCC_ARM9E
509 
510     /** Apply grayscale effect RGB565toRGB565 */
511 
512     M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
513         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
514 
515     /** Resize Bilinear YUV888toYUV888 */
516     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
517         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
518 
519     /** Resize Bilinear YUV565toYUV565 */
520     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
521         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
522 
523     /** Resize Bilinear YUV420toYUV420 */
524     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
525         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
526 
527     /** RGB565 to YUV420 */
528     M4VIFI_UInt8 M4VIFI_RGB565toYUV420GccArm9E(void *pUserData,
529         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
530     /** BGR565 to YUV420 */
531     M4VIFI_UInt8 M4VIFI_BGR565toYUV420GccArm9E(void *pUserData,
532         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
533 
534     /** YUV420 to RGB565 */
535     M4VIFI_UInt8 M4VIFI_YUV420toRGB565GccArm9E(void *pUserData,
536         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
537     /** YUV420 to BGR565 */
538     M4VIFI_UInt8 M4VIFI_YUV420toBGR565GccArm9E(void *pUserData,
539         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
540 
541     /** Resize Bilinear YUV420toRGB565 */
542     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565GccArm9E(void *pUserData,
543         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
544     /** Resize Bilinear YUV420toBGR565 */
545     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565GccArm9E(void *pUserData,
546         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
547 
548     /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
549     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm9E(
550         void *pUserData,
551             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
552     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm9E(
553         void *pUserData,
554             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
555 
556     /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
557     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm9E(
558         void *pUserData,
559             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
560     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm9E(
561         void *pUserData,
562             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
563     /** Modify HLS in RGB565 */
564     M4VIFI_UInt8 M4VIFI_SetHLSinRGB565GccArm9E(void *pUserData,
565         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
566     /** Modify HLS in BGR565 */
567     M4VIFI_UInt8 M4VIFI_SetHLSinBGR565GccArm9E(void *pUserData,
568         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
569 
570 #define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420GccArm9E
571 #define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420GccArm9E
572 #define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565GccArm9E
573 #define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565GccArm9E
574 #define M4VIFI_ResizeBilinearYUV420toRGB565 \
575                                    M4VIFI_ResizeBilinearYUV420toRGB565GccArm9E
576 #define M4VIFI_ResizeBilinearYUV420toBGR565 \
577                                    M4VIFI_ResizeBilinearYUV420toBGR565GccArm9E
578 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
579                                    M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm9E
580 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
581                                    M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm9E
582 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
583                                    M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm9E
584 #define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft \
585                                    M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm9E
586 #define M4VIFI_SetHLSinBGR565                                M4VIFI_SetHLSinBGR565GccArm9E
587 #define M4VIFI_SetHLSinRGB565                                M4VIFI_SetHLSinRGB565GccArm9E
588 
589 /* TI CCS assembly files */
590 #elif defined TI411_ARM9E
591 
592     /** Apply grayscale effect RGB565toRGB565 */
593 
594     M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
595         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
596 
597     /** Resize Bilinear YUV888toYUV888 */
598     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
599         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
600 
601     /** Resize Bilinear YUV565toYUV565 */
602     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
603         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
604 
605     /** Resize Bilinear YUV420toYUV420 */
606     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
607         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
608 
609     /** YUV420 (Planar) to RGB565 */
610     M4VIFI_UInt8 M4VIFI_YUV420toRGB565(void *pUserData,
611         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
612     /** YUV420 (Planar) to Resized RGB565 */
613     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565(void *pUserData,
614         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
615     /** YUV420 (Planar) to Resized RGB888 */
616     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB888(void *pUserData,
617         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
618     /** YUV420(Planar) to Resized and Rotated (-90) RGB565 */
619     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft(void *pUserData,
620         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
621 
622     /** YUV420(Planar) to Resized and Rotated (+90) RGB565 */
623     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight(
624         void *pUserData,
625             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
626 
627     /** YUV420(Planar) to Resized YUV420(Planar) */
628     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoYUV420QVGA(void *pUserData,
629         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
630 
631     /** Resize YUV420(Planar) of QCIF to RGB565 of QVGA resolution */
632     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA(void *pUserData,
633         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
634 
635 /** Resize YUV420(Planar) of QCIF to RGB565 of QVGA resolution with rotation(-90) */
636     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RL(void *pUserData,
637         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
638 
639 /** Resize YUV420(Planar) of QCIF to RGB565 of QVGA resolution with rotation(+90) */
640     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RR(void *pUserData,
641         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
642 
643 #define M4VIFI_YUV420toRGB565                             M4VIFI_YUV420toRGB565Ti411Arm9E
644 #define M4VIFI_ResizeBilinearYUV420toRGB565 \
645                                 M4VIFI_ResizeBilinearYUV420toRGB565Ti411Arm9E
646 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
647                                M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftTi411Arm9E
648 #define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
649                                M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightTi411Arm9E
650 
651 #define M4VIFI_YUV420QCIFtoYUV420QVGA       M4VIFI_YUV420QCIFtoYUV420QVGATi411Arm9E
652 #define M4VIFI_YUV420QCIFtoRGB565QVGA       M4VIFI_YUV420QCIFtoRGB565QVGATi411Arm9E
653 #define M4VIFI_YUV420QCIFtoRGB565QVGA_RL  M4VIFI_YUV420QCIFtoRGB565QVGA_RLTi411Arm9E
654 #define M4VIFI_YUV420QCIFtoRGB565QVGA_RR  M4VIFI_YUV420QCIFtoRGB565QVGA_RRTi411Arm9E
655 
656 /*        ANSI C Functions        */
657 #else
658 
659     /** Apply grayscale effect RGB565toRGB565 */
660 
661     M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
662         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
663 
664     /** Resize Bilinear YUV888toYUV888 */
665     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
666         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
667 
668     /** Resize Bilinear YUV565toYUV565 */
669     M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
670         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
671 
672     /** Resize Bilinear YUV420toYUV420 */
673     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
674         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
675 
676     /** RGB565 to YUV420 */
677     M4VIFI_UInt8 M4VIFI_RGB565toYUV420(void *pUserData,
678         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
679     /** BRG565 to YUV420 */
680     M4VIFI_UInt8 M4VIFI_BGR565toYUV420(void *pUserData,
681         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
682     /** BRG888 to YUV420 */
683     M4VIFI_UInt8 M4VIFI_BGR888toYUV420(void *pUserData,
684         M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane PlaneOut[3]);
685     /** RGB888 to YUV420 */
686     M4VIFI_UInt8 M4VIFI_RGB888toYUV420(void *pUserData,
687         M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane PlaneOut[3]);
688 
689     /** YUV422 to YUV420 */
690     M4VIFI_UInt8 M4VIFI_UYVYtoYUV420(void *pUserData,
691         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
692 
693     /** YUV420 to RGB565 */
694     M4VIFI_UInt8 M4VIFI_YUV420toRGB565(void *pUserData,
695         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
696     /** YUV420 to BGR565 */
697     M4VIFI_UInt8 M4VIFI_YUV420toBGR565(void *pUserData,
698         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
699     /** YUV420 to BGR565 */
700     M4VIFI_UInt8 M4VIFI_YUV420toBGR565RotatedLeft(void *pUserData,
701         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
702     /** YUV420 to BGR565 */
703     M4VIFI_UInt8 M4VIFI_YUV420toBGR565RotatedRight(void *pUserData,
704         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
705     /** YUV420 to BGR24 */
706     M4VIFI_UInt8 M4VIFI_YUV420toBGR24(void *pUserData,
707         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
708     /** YUV420 to RGB24 */
709     M4VIFI_UInt8 M4VIFI_YUV420toRGB24(void *pUserData,
710         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
711     /** Resize Bilinear YUV420toYUV420 */
712     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
713         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
714     /** Resize Bilinear YUV420toRGB565 */
715     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565(void *pUserData,
716         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
717     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB888(void *pUserData,
718         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
719     /** Resize Bilinear YUV420toBGR565 */
720     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565(void *pUserData,
721         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
722     /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
723     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight(
724         void *pUserData,
725             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
726     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft(void *pUserData,
727         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
728     /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
729     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight(
730         void *pUserData,
731             M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
732     M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft(void *pUserData,
733         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
734     /** Modify HLS in RGB565 */
735     M4VIFI_UInt8 M4VIFI_SetHLSinRGB565(void *pUserData,
736         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
737     /** Modify HLS in BGR565 */
738     M4VIFI_UInt8 M4VIFI_SetHLSinBGR565(void *pUserData,
739         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
740     /**Resize YUV420toYUV420 from QCIF to QVGA*/
741     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoYUV420QVGA(void *pUserData,
742         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
743     /**Resize YUV420toRGB565 from QCIF to QVGA*/
744     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA(void *pUserData,
745         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
746     /**Resize YUV420toRGB565 from QCIF to QVGA with rotation +90*/
747     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RR(void *pUserData,
748         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
749     /**Resize YUV420toRGB565 from QCIF to QVGA with rotation -90*/
750     M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RL(void *pUserData,
751         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
752 /** Resizes YUV420 Planar Image and stores in YUV420 Linear format with/without +or-90 rotation*/
753     M4VIFI_UInt8 M4VIFI_YUV420PlanartoYUV420Linear(void *pUserData,
754         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
755 
756 /** Resizes YUV420 Planar Image and stores in YUV422 Interleaved format
757      with/without +or-90 rotation*/
758     M4VIFI_UInt8 M4VIFI_YUV420PlanartoYUV422Interleaved(void *pUserData,
759         M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
760 #endif
761 
762     /** definition of the converter function types */
763 
764     typedef M4VIFI_UInt8 M4VIFI_PlanConverterFunctionType(void
765         *pContext, M4VIFI_ImagePlane* in, M4VIFI_ImagePlane* out);
766 
767     /** definition of the preprocessing function types */
768     typedef M4VIFI_UInt8 M4VIFI_PreprocessFunctionType(void
769         *pContext, M4VIFI_ImagePlane* in, M4VIFI_ImagePlane* out);
770 
771     M4VIFI_UInt8 M4VIFI_YUV420toYUV420(void *user_data,
772         M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane *PlaneOut);
773     M4VIFI_UInt8 M4VIFI_YUV420PlanarToYUV420Semiplanar(void *user_data,
774         M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane *PlaneOut);
775     M4VIFI_UInt8 M4VIFI_SemiplanarYUV420toYUV420(void *user_data,
776         M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane *PlaneOut);
777 #ifdef __cplusplus
778 
779 }
780 
781 #endif /* __cplusplus */
782 
783 #endif /* _M4VIFI_FILTERSAPI_H_ */
784 
785 /* End of file M4VIFI_FiltersAPI.h */
786