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