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