M4VIFI_FiltersAPI.h revision b5c7784c96a606890eb8a8b560153ef4a5d1a0d9
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
34extern "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