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 M4VPP_API.h 197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Video preprocessing API public functions prototypes. 207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note 217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef M4VPP_API_H 257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VPP_API_H 267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h" /**< Include for common OSAL types */ 287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Error.h" /**< Include for common OSAL errors */ 297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Include Video filters interface definition (for the M4VIFI_ImagePlane type) */ 327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VIFI_FiltersAPI.h" 337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus 357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" { 367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */ 377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Public type of the Video Preprocessing execution context 427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_Void* M4VPP_Context; 457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum 477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIYUV420=0, /**< YUV 4:2:0 planar (standard input for mpeg-4 video) */ 497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIYUV422, /**< YUV422 planar */ 507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIYUYV, /**< YUV422 interlaced, luma first */ 517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIUYVY, /**< YUV422 interlaced, chroma first */ 527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIJPEG, /**< JPEG compressed frames */ 537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIRGB444, /**< RGB 12 bits 4:4:4 */ 547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIRGB555, /**< RGB 15 bits 5:5:5 */ 557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIRGB565, /**< RGB 16 bits 5:6:5 */ 567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIRGB24, /**< RGB 24 bits 8:8:8 */ 577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIRGB32, /**< RGB 32 bits */ 587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIBGR444, /**< BGR 12 bits 4:4:4 */ 597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIBGR555, /**< BGR 15 bits 5:5:5 */ 607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIBGR565, /**< BGR 16 bits 5:6:5 */ 617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIBGR24, /**< BGR 24 bits 8:8:8 */ 627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VPP_kIBGR32 /**< BGR 32 bits */ 637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4VPP_InputVideoFormat; 647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Prototype of the main video preprocessing function 697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note Preprocess one frame 707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pContext: (IN) Execution context of the VPP. 717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pPlaneIn: (INOUT) Input Image 727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pPlaneOut: (INOUT) Output Image 737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4VPP_apply_fct) (M4VPP_Context pContext, M4VIFI_ImagePlane* pPlaneIn, 767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VIFI_ImagePlane* pPlaneOut); 777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4VPP_initVideoPreprocessing(M4VPP_Context* pContext) 837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief This function allocates a new execution context for the Video Preprocessing component. 847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note 857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pContext: (OUT) Execution context allocated by the function. 867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4NO_ERROR: there is no error. 877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4ERR_ALLOC: there is no more available memory. 887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4ERR_PARAMETER: pContext is NULL (debug only). 897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4VPP_initVideoPreprocessing(M4VPP_Context* pContext); 927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4VPP_applyVideoPreprocessing(M4VPP_Context pContext, M4VIFI_ImagePlane* pPlaneIn, 967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4VIFI_ImagePlane* pPlaneOut) 977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Preprocess one frame. 987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note 997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pContext: (IN) Execution context. 1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pPlaneIn: (INOUT) Input Image 1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pPlaneOut: (INOUT) Output Image 1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4NO_ERROR: there is no error. 1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4ERR_PARAMETER: pContext or pPlaneIn or pPlaneOut is NULL (debug only). 1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4ERR_STATE: Video Preprocessing is not in an appropriate state for this function 1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * to be called 1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4VPP_applyVideoPreprocessing(M4VPP_Context pContext, M4VIFI_ImagePlane* pPlaneIn, 1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VIFI_ImagePlane* pPlaneOut); 1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4VPP_cleanUpVideoPreprocessing(M4VPP_Context pContext) 1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief This method frees the execution context for the Video Preprocessing component. 1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Any further usage of the context will lead to unpredictable result. 1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note 1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pContext: (IN) Execution context. 1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4NO_ERROR: there is no error. 1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4ERR_PARAMETER: pContext is NULL (debug only). 1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4VPP_cleanUpVideoPreprocessing(M4VPP_Context pContext); 1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4VPP_setVideoPreprocessingMode(M4VPP_Context pContext, M4VES_InputVideoFormat format) 1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief This method apply the video preprocessing to the input plane. Result is put into the 1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * output plan. 1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pContext: (IN) Execution context. 1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param format : (IN) Format of input plane (rgb, yuv, ...) 1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4NO_ERROR: there is no error 1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4VPP_setVideoPreprocessingMode(M4VPP_Context pContext, M4VPP_InputVideoFormat format); 1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Definition of the errors specific to this module. 1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**< Input and output planes have incompatible properties */ 1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VPP_ERR_IMCOMPATIBLE_IN_AND_OUT_PLANES M4OSA_ERR_CREATE( M4_ERR,\ 1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4PREPROCESS_VIDEO, 0x000001); 1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus 1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */ 1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* M4VPP_API_H */ 1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 152