17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*
27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License.
67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at
77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and
147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License.
157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file        M4VIFI_FiltersAPI.h
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        External API and Data definitions for the video filter library
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This file defines and declares data common to the video filter library:
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    -# data types
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    -# error codes
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    -# external API's
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    -# API level structure definition
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef _M4VIFI_FILTERSAPI_H_
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define _M4VIFI_FILTERSAPI_H_
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" {
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     ***********************************************************
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     *                    Data types definition
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     ***********************************************************
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    */
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef unsigned char M4VIFI_UInt8;
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef char M4VIFI_Int8;
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef unsigned short M4VIFI_UInt16;
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef unsigned long M4VIFI_UInt32;
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef short M4VIFI_Int16;
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef long M4VIFI_Int32;
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef float M4VIFI_Float;
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef double M4VIFI_Double;
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef unsigned char M4VIFI_ErrorCode;
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    Error codes definition
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_OK                        0
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_INVALID_PARAM            7
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ILLEGAL_FRAME_HEIGHT        8
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ILLEGAL_FRAME_WIDTH        9
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    Other basic definitions
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define CNST    const
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define EXTERN    extern
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef NULL
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define NULL    0
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef FALSE
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define FALSE    0
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define TRUE    !FALSE
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    Structures definition
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4VIFI_ImagePlane
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        Texture (YUV) planes structure
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This structure details the image planes for the output textures:
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                sizes (in pixels) are luma plane sizes, the 3 pointers point
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                to the Y, U and V buffers which store data in planar format.
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef struct
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_UInt32 u_width;   /**< Width of luma in pixel unit */
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_UInt32 u_height;  /**< Height of luma in pixel unit */
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_UInt32 u_topleft; /**< Pointer to first texture active pixel */
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_UInt32 u_stride;  /**< Stride value */
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_UInt8 *pac_data;  /**< Pointer to the data */
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        } M4VIFI_ImagePlane;
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4VIFI_FramingData
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        Data necessary to add an overlay on an image
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This structure details the position and the data of the overlay
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef struct
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_UInt32
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            m_xPosStep; /**< X positioning of the overlay vs main picture.
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                  X positioning is expressed in percentage vs the main
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   picture width.
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                  m_xPosStep must be expressed by step of 1% and between
1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                  -50/+50%.
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                  0% means overlay is centered vs main picture on
1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   X abscissa. */
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_UInt32
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            m_yPosStep; /**< Y positioning of the overlay vs main picture.
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                  Y positioning is expressed in percentage vs the main
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   picture width.
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                  m_xPosStep must be expressed by step of 1% and between
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   -50/+50%.
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                  0% means overlay is centered vs main picture on
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   Y abscissa. */
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane
1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            *
1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                m_imagePlane; /**< Pointer to the framing image with alpha channel */
1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        } M4VIFI_FramingData;
1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4VIFI_HLSoffset
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        HLS offset structure
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This structure have the hue, saturation and lightness value
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                for quality enhancement. Range of values neccessarily be
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                hue = -360 to 360, sat = 0 to 100 and light = 0 t0 100
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef struct
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_Int16 hue;   /**< Hue offset */
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_Int16 sat;   /**< Saturation offset */
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_Int16 light; /**< Light offset */
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        } M4VIFI_HLSoffset;
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4VIFI_Tranformation
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        Image Tranformation Structure
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        Image Tranformation Request
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                rotation : 1 -> +90deg Rotation
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                          -1 -> -90deg Rotation
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                           0 ->  No Rotation
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef struct
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_Int32 i32_rotation; /**< Rotation Flag        */
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        } M4VIFI_Tranformation;
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4VIFI_pContext
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        New Structures
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        -# Structure of M4VIFI_HLSoffset
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef struct
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_HLSoffset hlsOffset; /**< HLS offset structure */
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        } M4VIFI_pContext;
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     *****************************************************
1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     *                    External API functions
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     *****************************************************
1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    */
1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Effect filters */
1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SepiaYUV420toYUV420(void *pUserData,
1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_GrayscaleYUV420toYUV420(void *pUserData,
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ContrastYUV420toYUV420(void *pUserData,
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_NegativeYUV420toYUV420(void *pUserData,
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_FlipYUV420toYUV420(void *pUserData,
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_MirrorYUV420toYUV420(void *pUserData,
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_Rotate180YUV420toYUV420(void *pUserData,
2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_Rotate90RightYUV420toYUV420(void *pUserData,
2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_Rotate90LeftYUV420toYUV420(void *pUserData,
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ColorRYUV420toYUV420(void *pUserData,
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ColorGYUV420toYUV420(void *pUserData,
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ColorBYUV420toYUV420(void *pUserData,
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_FramingRGB565toYUV420(void *pUserData,
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_FramingYUV420(void *pUserData,
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHueInYUV420(void *pUserData,
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ColdYUV420toYUV420(void *pUserData,
2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_WarmYUV420toYUV420(void *pUserData,
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*                ADS Compiler                */
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*        Generic ARM assembly functions        */
2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#if defined ADS_ARM
2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Apply grayscale effect RGB565toRGB565 */
2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear RGB888toRGB888 */
2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear RGB565toRGB565 */
2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toYUV420 */
2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** RGB565 to YUV420 */
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_RGB565toYUV420AdsArm(void *pUserData,
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** BGR565 to YUV420 */
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_BGR565toYUV420AdsArm(void *pUserData,
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV422 to YUV420 */
2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_UYVYtoYUV420AdsArm(void *pUserData,
2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to RGB565 */
2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toRGB565AdsArm(void *pUserData,
2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR565 */
2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR565AdsArm(void *pUserData,
2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 */
2647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565AdsArm(void *pUserData,
2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 */
2677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565AdsArm(void *pUserData,
2687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
2707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm(
2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm(
2747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm(
2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm(
2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in RGB565 */
2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinRGB565AdsArm(void *pUserData,
2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in BGR565 */
2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinBGR565AdsArm(void *pUserData,
2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420AdsArm
2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420AdsArm
2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_UYVYtoYUV420                                    M4VIFI_UYVYtoYUV420AdsArm
2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565AdsArm
2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565AdsArm
2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565             \
2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toRGB565AdsArm
2977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565             \
2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toBGR565AdsArm
3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm
3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft  \
3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm
3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm
3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft  \
3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm
3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinRGB565                                M4VIFI_SetHLSinRGB565AdsArm
3147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinBGR565                                M4VIFI_SetHLSinBGR565AdsArm
3157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*        ARM9E assembly functions        */
3177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#elif defined ADS_ARM9E
3187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Apply grayscale effect RGB565toRGB565 */
3207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
3227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV888toYUV888 */
3257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
3267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV565toYUV565 */
3297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
3307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toYUV420 */
3327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
3337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** RGB565 to YUV420 */
3367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_RGB565toYUV420AdsArm9E(void *pUserData,
3377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** BGR565 to YUV420 */
3397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_BGR565toYUV420AdsArm9E(void *pUserData,
3407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV422 to YUV420 */
3437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_UYVYtoYUV420AdsArm9E(void *pUserData,
3447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to RGB565 */
3477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toRGB565AdsArm9E(void *pUserData,
3487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR565 */
3507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR565AdsArm9E(void *pUserData,
3517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 */
3547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565AdsArm9E(void *pUserData,
3557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 */
3577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565AdsArm9E(void *pUserData,
3587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
3607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm9E(
3617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
3627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm9E(
3647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
3657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
3677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm9E(
3687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
3697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm9E(
3717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
3727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in RGB565 */
3747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinRGB565AdsArm9E(void *pUserData,
3757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in BGR565 */
3777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinBGR565AdsArm9E(void *pUserData,
3787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize YUV420toYUV420 from QCIF to QVGA*/
3817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoYUV420QVGAAdsArm9E(void *pUserData,
3827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
3837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**Resize YUV420toRGB565 from QCIF to QVGA*/
3847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGAAdsArm9E(void *pUserData,
3857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**Resize YUV420toRGB565 from QCIF to QVGA with rotation +90*/
3877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RRAdsArm9E(void *pUserData,
3887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**Resize YUV420toRGB565 from QCIF to QVGA with rotation -90*/
3907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RLAdsArm9E(void *pUserData,
3917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** Resizes YUV420 Planar Image and stores in YUV420 Linear format with/without +or-90 rotation*/
3937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420PlanartoYUV420LinearAdsArm9E(void *pUserData,
3947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
3957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420AdsArm9E
3977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420AdsArm9E
3987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_UYVYtoYUV420                                    M4VIFI_UYVYtoYUV420AdsArm9E
3997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565AdsArm9E
4007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565AdsArm9E
4017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565 \
4027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toRGB565AdsArm9E
4037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565 \
4047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toBGR565AdsArm9E
4057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
4067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightAdsArm9E
4077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
4087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftAdsArm9E
4097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
4107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightAdsArm9E
4117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft \
4127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftAdsArm9E
4137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinRGB565                            M4VIFI_SetHLSinRGB565AdsArm9E
4147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinBGR565                            M4VIFI_SetHLSinBGR565AdsArm9E
4157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoYUV420QVGA                    M4VIFI_YUV420QCIFtoYUV420QVGAAdsArm9E
4167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoRGB565QVGA                    M4VIFI_YUV420QCIFtoRGB565QVGAAdsArm9E
4177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoRGB565QVGA_RR                 M4VIFI_YUV420QCIFtoRGB565QVGA_RRAdsArm9E
4187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoRGB565QVGA_RL                 M4VIFI_YUV420QCIFtoRGB565QVGA_RLAdsArm9E
4197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420PlanartoYUV420Linear                M4VIFI_YUV420PlanartoYUV420LinearAdsArm9E
4207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*                GCC Compiler                */
4217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*        Generic ARM assembly functions        */
4227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#elif defined GCC_ARM
4247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Apply grayscale effect RGB565toRGB565 */
4267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
4287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
4297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV888toYUV888 */
4317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
4327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
4337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV565toYUV565 */
4357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
4367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
4377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toYUV420 */
4397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
4407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
4417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** RGB565 to YUV420 */
4437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_RGB565toYUV420GccArm(void *pUserData,
4447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** BGR565 to YUV420 */
4467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_BGR565toYUV420GccArm(void *pUserData,
4477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to RGB565 */
4507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toRGB565GccArm(void *pUserData,
4517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR565 */
4537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR565GccArm(void *pUserData,
4547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 */
4577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565GccArm(void *pUserData,
4587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 */
4617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565GccArm(void *pUserData,
4627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
4657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm(
4667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
4677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm(
4697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
4707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
4737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm(
4747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
4757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm(
4777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
4787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in RGB565 */
4817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinRGB565GccArm(void *pUserData,
4827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in BGR565 */
4857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinBGR565GccArm(void *pUserData,
4867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
4877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420GccArm
4897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420GccArm
4907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565GccArm
4917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565GccArm
4927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565 \
4937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toRGB565GccArm
4947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565 \
4957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toBGR565GccArm
4967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
4977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm
4987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
4997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm
5007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
5017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm
5027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft \
5037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm
5047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinRGB565                                M4VIFI_SetHLSinRGB565GccArm
5057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinBGR565                                M4VIFI_SetHLSinBGR565GccArm
5067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*        ARM9E assembly functions        */
5087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#elif defined GCC_ARM9E
5097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Apply grayscale effect RGB565toRGB565 */
5117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
5137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
5147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV888toYUV888 */
5167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
5177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
5187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV565toYUV565 */
5207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
5217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
5227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toYUV420 */
5247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
5257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
5267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** RGB565 to YUV420 */
5287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_RGB565toYUV420GccArm9E(void *pUserData,
5297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** BGR565 to YUV420 */
5317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_BGR565toYUV420GccArm9E(void *pUserData,
5327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to RGB565 */
5357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toRGB565GccArm9E(void *pUserData,
5367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR565 */
5387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR565GccArm9E(void *pUserData,
5397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 */
5427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565GccArm9E(void *pUserData,
5437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 */
5457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565GccArm9E(void *pUserData,
5467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
5497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm9E(
5507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
5517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm9E(
5537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
5547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
5577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm9E(
5587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
5597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm9E(
5617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
5627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in RGB565 */
5647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinRGB565GccArm9E(void *pUserData,
5657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in BGR565 */
5677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinBGR565GccArm9E(void *pUserData,
5687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
5697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_RGB565toYUV420                                M4VIFI_RGB565toYUV420GccArm9E
5717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_BGR565toYUV420                                M4VIFI_BGR565toYUV420GccArm9E
5727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toRGB565                                M4VIFI_YUV420toRGB565GccArm9E
5737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toBGR565                                M4VIFI_YUV420toBGR565GccArm9E
5747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565 \
5757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4VIFI_ResizeBilinearYUV420toRGB565GccArm9E
5767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565 \
5777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4VIFI_ResizeBilinearYUV420toBGR565GccArm9E
5787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
5797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightGccArm9E
5807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
5817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftGccArm9E
5827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight \
5837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4VIFI_ResizeBilinearYUV420toBGR565RotatedRightGccArm9E
5847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft \
5857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeftGccArm9E
5867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinBGR565                                M4VIFI_SetHLSinBGR565GccArm9E
5877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_SetHLSinRGB565                                M4VIFI_SetHLSinRGB565GccArm9E
5887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* TI CCS assembly files */
5907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#elif defined TI411_ARM9E
5917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Apply grayscale effect RGB565toRGB565 */
5937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
5957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
5967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV888toYUV888 */
5987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
5997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV565toYUV565 */
6027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
6037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toYUV420 */
6067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
6077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 (Planar) to RGB565 */
6107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toRGB565(void *pUserData,
6117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 (Planar) to Resized RGB565 */
6137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565(void *pUserData,
6147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 (Planar) to Resized RGB888 */
6167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB888(void *pUserData,
6177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420(Planar) to Resized and Rotated (-90) RGB565 */
6197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft(void *pUserData,
6207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420(Planar) to Resized and Rotated (+90) RGB565 */
6237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight(
6247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
6257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420(Planar) to Resized YUV420(Planar) */
6287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoYUV420QVGA(void *pUserData,
6297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize YUV420(Planar) of QCIF to RGB565 of QVGA resolution */
6327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA(void *pUserData,
6337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** Resize YUV420(Planar) of QCIF to RGB565 of QVGA resolution with rotation(-90) */
6367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RL(void *pUserData,
6377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** Resize YUV420(Planar) of QCIF to RGB565 of QVGA resolution with rotation(+90) */
6407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RR(void *pUserData,
6417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420toRGB565                             M4VIFI_YUV420toRGB565Ti411Arm9E
6447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565 \
6457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4VIFI_ResizeBilinearYUV420toRGB565Ti411Arm9E
6467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft \
6477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeftTi411Arm9E
6487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight \
6497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4VIFI_ResizeBilinearYUV420toRGB565RotatedRightTi411Arm9E
6507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoYUV420QVGA       M4VIFI_YUV420QCIFtoYUV420QVGATi411Arm9E
6527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoRGB565QVGA       M4VIFI_YUV420QCIFtoRGB565QVGATi411Arm9E
6537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoRGB565QVGA_RL  M4VIFI_YUV420QCIFtoRGB565QVGA_RLTi411Arm9E
6547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_YUV420QCIFtoRGB565QVGA_RR  M4VIFI_YUV420QCIFtoRGB565QVGA_RRTi411Arm9E
6557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*        ANSI C Functions        */
6577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
6587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Apply grayscale effect RGB565toRGB565 */
6607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_GrayscaleRGB565toRGB565(void *pUserData,
6627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV888toYUV888 */
6657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB888toRGB888(void *pUserData,
6667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV565toYUV565 */
6697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearRGB565toRGB565(void *pUserData,
6707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toYUV420 */
6737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
6747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** RGB565 to YUV420 */
6777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_RGB565toYUV420(void *pUserData,
6787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** BRG565 to YUV420 */
6807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_BGR565toYUV420(void *pUserData,
6817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** BRG888 to YUV420 */
6837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_BGR888toYUV420(void *pUserData,
6847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane PlaneOut[3]);
6857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** RGB888 to YUV420 */
6867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_RGB888toYUV420(void *pUserData,
6877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane PlaneOut[3]);
6887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV422 to YUV420 */
6907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_UYVYtoYUV420(void *pUserData,
6917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to RGB565 */
6947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toRGB565(void *pUserData,
6957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
6967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR565 */
6977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR565(void *pUserData,
6987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
6997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR565 */
7007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR565RotatedLeft(void *pUserData,
7017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR565 */
7037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR565RotatedRight(void *pUserData,
7047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to BGR24 */
7067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toBGR24(void *pUserData,
7077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** YUV420 to RGB24 */
7097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toRGB24(void *pUserData,
7107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toYUV420 */
7127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toYUV420(void *pUserData,
7137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 */
7157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565(void *pUserData,
7167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB888(void *pUserData,
7187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 */
7207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565(void *pUserData,
7217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toRGB565 with rotation +90 or -90 */
7237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedRight(
7247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
7257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toRGB565RotatedLeft(void *pUserData,
7277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Resize Bilinear YUV420toBGR565 with rotation +90 or -90 */
7297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedRight(
7307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        void *pUserData,
7317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_ResizeBilinearYUV420toBGR565RotatedLeft(void *pUserData,
7337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in RGB565 */
7357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinRGB565(void *pUserData,
7367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Modify HLS in BGR565 */
7387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SetHLSinBGR565(void *pUserData,
7397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *PlaneOut);
7407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**Resize YUV420toYUV420 from QCIF to QVGA*/
7417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoYUV420QVGA(void *pUserData,
7427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**Resize YUV420toRGB565 from QCIF to QVGA*/
7447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA(void *pUserData,
7457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**Resize YUV420toRGB565 from QCIF to QVGA with rotation +90*/
7477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RR(void *pUserData,
7487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**Resize YUV420toRGB565 from QCIF to QVGA with rotation -90*/
7507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420QCIFtoRGB565QVGA_RL(void *pUserData,
7517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** Resizes YUV420 Planar Image and stores in YUV420 Linear format with/without +or-90 rotation*/
7537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420PlanartoYUV420Linear(void *pUserData,
7547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** Resizes YUV420 Planar Image and stores in YUV422 Interleaved format
7577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     with/without +or-90 rotation*/
7587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420PlanartoYUV422Interleaved(void *pUserData,
7597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *pPlaneIn, M4VIFI_ImagePlane *pPlaneOut);
7607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
7617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** definition of the converter function types */
7637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef M4VIFI_UInt8 M4VIFI_PlanConverterFunctionType(void
7657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        *pContext, M4VIFI_ImagePlane* in, M4VIFI_ImagePlane* out);
7667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** definition of the preprocessing function types */
7687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    typedef M4VIFI_UInt8 M4VIFI_PreprocessFunctionType(void
7697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        *pContext, M4VIFI_ImagePlane* in, M4VIFI_ImagePlane* out);
7707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420toYUV420(void *user_data,
7727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane *PlaneOut);
7737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_YUV420PlanarToYUV420Semiplanar(void *user_data,
7747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane *PlaneOut);
7757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIFI_UInt8 M4VIFI_SemiplanarYUV420toYUV420(void *user_data,
7767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane *PlaneIn, M4VIFI_ImagePlane *PlaneOut);
7777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
7787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
7807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
7827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* _M4VIFI_FILTERSAPI_H_ */
7847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* End of file M4VIFI_FiltersAPI.h */
786