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   M4AIR_API.h
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief  Area of Interest Resizer  API
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*************************************************************************
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4AIR_API_H
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4AIR_API_H
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/******************************* INCLUDES *******************************/
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h"
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Error.h"
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CoreID.h"
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Mutex.h"
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Memory.h"
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VIFI_FiltersAPI.h"
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4Common_types.h"
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/************************ M4AIR TYPES DEFINITIONS ***********************/
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4AIR_InputFormatType
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief     The following enumeration lists the different accepted format for the AIR.
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * To be available, the associated compilation flag must be defined, else,
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * the AIR will return an error (compilation flag : M4AIR_XXXXXX_FORMAT_SUPPORTED).
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AIR_kYUV420P,
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AIR_kYUV420AP,
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AIR_kJPG
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}M4AIR_InputFormatType ;
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct         M4AIR_Coordinates
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief     The following structure is used to retrieve X and Y coordinates in a given picture.
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    m_x;    /**< X coordinate */
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    m_y;    /**< Y coordinate */
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}M4AIR_Coordinates;
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct         M4AIR_Size
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief     The following structure is used to retrieve the dimension of a given picture area.
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    m_width;    /**< Width */
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    m_height;    /**< Height */
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}M4AIR_Size;
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct         M4AIR_Params
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief     The following structure is used to retrieve the parameters needed to get a resized ROI (Region of interest).
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AIR_Coordinates        m_inputCoord;            /**< X and Y positionning in the input of the first interesting pixel (top-left) */
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AIR_Size                m_inputSize;            /**< Size of the interesting area inside input (width and height)*/
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4AIR_Size                m_outputSize;            /**< Size of the output */
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                m_bOutputStripe;            /**< Flag to know if we will have to provide output per stripe or not */
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4COMMON_Orientation        m_outputOrientation;    /**< Desired orientation of the AIR output */
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}M4AIR_Params;
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*********************** M4AIR ERRORS DEFINITIONS **********************/
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* This error means that the requested video format is not supported. */
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_AIR_FORMAT_NOT_SUPPORTED    M4OSA_ERR_CREATE(M4_ERR,M4AIR,0x000001)
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* This error means that the input or output size is incorrect */
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_AIR_ILLEGAL_FRAME_SIZE    M4OSA_ERR_CREATE(M4_ERR,M4AIR,0x000002)
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/********************** M4AIR PUBLIC API DEFINITIONS ********************/
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4AIR_create(M4OSA_Context* pContext,M4AIR_InputFormatType inputFormat);
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function initialize an instance of the AIR.
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext:    (IN/OUT) Address of the context to create
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    inputFormat:    (IN) input format type.
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR: there is no error
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only). Invalid formatType
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC: No more memory is available
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4AIR_create(M4OSA_Context* pContext,M4AIR_InputFormatType inputFormat);
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4AIR_cleanUp(M4OSA_Context pContext)
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function destroys an instance of the AIR component
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext:    (IN) Context identifying the instance to destroy
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR: there is no error
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only).
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE: Internal state is incompatible with this function call.
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4AIR_cleanUp(M4OSA_Context pContext);
1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4AIR_configure(M4OSA_Context pContext, M4AIR_Params* pParams)
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This function will configure the AIR.
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    It will set the input and output coordinates and sizes,
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            and indicates if we will proceed in stripe or not.
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            In case a M4AIR_get in stripe mode was on going, it will cancel this previous
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            processing and reset the get process.
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext:                (IN) Context identifying the instance
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pParams->m_bOutputStripe:(IN) Stripe mode.
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pParams->m_inputCoord:    (IN) X,Y coordinates of the first valid pixel in input.
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pParams->m_inputSize:    (IN) input ROI size.
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pParams->m_outputSize:    (IN) output size.
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR: there is no error
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC: No more memory space to add a new effect.
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only).
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_AIR_FORMAT_NOT_SUPPORTED: the requested input format is not supported.
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4AIR_configure(M4OSA_Context pContext, M4AIR_Params* pParams);
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4AIR_get(M4OSA_Context pContext, M4VIFI_ImagePlane* pIn, M4VIFI_ImagePlane* pOut)
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This function will provide the requested resized area of interest according to
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            settings provided in M4AIR_configure.
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    In case the input format type is JPEG, input plane(s)
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            in pIn is not used. In normal mode, dimension specified in output plane(s) structure
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            must be the same than the one specified in M4AIR_configure. In stripe mode, only
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            the width will be the same, height will be taken as the stripe height (typically 16).
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            In normal mode, this function is call once to get the full output picture. In stripe
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            mode, it is called for each stripe till the whole picture has been retrieved,and
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            the position of the output stripe in the output picture is internally incremented
1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            at each step.
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            Any call to M4AIR_configure during stripe process will reset this one to the
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *              beginning of the output picture.
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext:    (IN) Context identifying the instance
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pIn:            (IN) Plane structure containing input Plane(s).
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pOut:        (IN/OUT)  Plane structure containing output Plane(s).
1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR: there is no error
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC: No more memory space to add a new effect.
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only).
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4AIR_get(M4OSA_Context pContext, M4VIFI_ImagePlane* pIn, M4VIFI_ImagePlane* pOut);
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4AIR_API_H */
185