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