OMX_VideoDecoder.c revision d5cf09fb6e53cda5ce8796eb01230bfecdb917ff
1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details. 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ============================================================================= 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Texas Instruments OMAP (TM) Platform Software 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Use of this software is controlled by the terms and conditions found 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* in the license agreement under which this software has been supplied. 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ============================================================================*/ 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @file OMX_Video_Decoder.c 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* This file implements OMX Component for video decoder that 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* is fully compliant with the OMX specification 1.0 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @path $(CSLPATH)\ 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @rev 0.1 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ---------------------------------------------------------------------------- 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! Revision History 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! =================================== 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 24-July-2005 mf: Initial Version. Change required per OMAPSWxxxxxxxxx 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! to provide _________________. 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ============================================================================*/ 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ------compilation control switches ----------------------------------------*/ 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/******************************************************************************* 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* INCLUDE FILES 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*******************************************************************************/ 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ----- system and platform files -------------------------------------------*/ 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <windows.h> 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <oaf_osal.h> 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <omx_core.h> 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <wchar.h> 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <unistd.h> 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/time.h> 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/types.h> 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/ioctl.h> 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/select.h> 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <errno.h> 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h> 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <string.h> 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <fcntl.h> 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdlib.h> 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h> 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <dbapi.h> 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Component.h> 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_VideoDecoder.h" 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_VideoDec_Utils.h" 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_VideoDec_DSP.h" 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_VideoDec_Thread.h" 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_VidDec_CustomCmd.h" 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* For PPM fps measurements */ 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic int mDebugFps = 0; 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#ifndef UNDER_CE*/ 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <ResourceManagerProxyAPI.h> 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#endif*/ 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/******************************************************************************* 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* EXTERNAL REFERENCES NOTE : only use if not found in header file 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*******************************************************************************/ 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------data declarations --------------------------------------------------*/ 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------function prototypes ------------------------------------------------*/ 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern OMX_ERRORTYPE VIDDEC_Start_ComponentThread(OMX_HANDLETYPE pHandle); 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern OMX_ERRORTYPE VIDDEC_Stop_ComponentThread(OMX_HANDLETYPE pComponent); 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*extern OMX_ERRORTYPE VIDDEC_HandleCommandMarkBuffer(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1, OMX_PTR pCmdData); 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern OMX_ERRORTYPE VIDDEC_HandleCommandFlush(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1, OMX_PTR pCmdData);*/ 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern OMX_ERRORTYPE VIDDEC_Load_Defaults (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_S32 nPassing); 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/******************************************************************************* 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* PUBLIC DECLARATIONS Defined here, used elsewhere 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*******************************************************************************/ 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------data declarations --------------------------------------------------*/ 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_STRING cVideoDecodeName = "OMX.TI.Video.Decoder"; 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinVIDDEC_CUSTOM_PARAM sVideoDecCustomParams[] = {{VIDDEC_CUSTOMPARAM_PROCESSMODE, VideoDecodeCustomParamProcessMode}, 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMPARAM_H264BITSTREAMFORMAT, VideoDecodeCustomParamH264BitStreamFormat}, 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMPARAM_WMVPROFILE, VideoDecodeCustomParamWMVProfile}, 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMPARAM_WMVFILETYPE, VideoDecodeCustomParamWMVFileType}, 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMPARAM_PARSERENABLED, VideoDecodeCustomParamParserEnabled}, 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMCONFIG_DEBUG, VideoDecodeCustomConfigDebug}, 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMPARAM_ISNALBIGENDIAN, VideoDecodeCustomParamIsNALBigEndian}, 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMPARAM_ISSPARKINPUT, VideoDecodeCustomParamIsSparkInput}}; 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {VIDDEC_CUSTOMPARAM_ISNALBIGENDIAN, VideoDecodeCustomParamIsNALBigEndian}}; 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1192acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong/* H.263 Supported Levels & profiles */ 1202acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny WongVIDEO_PROFILE_LEVEL_TYPE SupportedH263ProfileLevels[] = { 1212acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level10}, 1222acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level20}, 1232acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level30}, 1242acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level40}, 1252acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level45}, 1262acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level50}, 1272acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level60}, 1282acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level70}, 1292acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {-1, -1}}; 1302acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 1312acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong/* MPEG4 Supported Levels & profiles */ 1322acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny WongVIDEO_PROFILE_LEVEL_TYPE SupportedMPEG4ProfileLevels[] ={ 1332acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level0}, 1342acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level0b}, 1352acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level1}, 1362acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level2}, 1372acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level3}, 1382acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level4}, 1392acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level4a}, 1402acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level5}, 1412acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level0}, 1422acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level0b}, 1432acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level1}, 1442acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level2}, 1452acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level3}, 1462acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level4}, 1472acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level5}, 1482acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {-1,-1}}; 1492acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 1502acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong/* AVC Supported Levels & profiles */ 1512acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny WongVIDEO_PROFILE_LEVEL_TYPE SupportedAVCProfileLevels[] ={ 1522acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1}, 1532acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1b}, 1542acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel11}, 1552acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel12}, 1562acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel13}, 1572acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel2}, 1582acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel21}, 1592acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel22}, 1602acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel3}, 1612acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel31}, 1622acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong {-1,-1}}; 1632acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------function prototypes ------------------------------------------------*/ 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/******************************************************************************* 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* PRIVATE DECLARATIONS Defined here, used only here 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*******************************************************************************/ 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------data declarations --------------------------------------------------*/ 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*SetConfig defines*/ 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define SET_CONFIG_MUTEX_BASE 0x0000FF00 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define SET_CONFIG_ONMUTEX 0x0000FF01 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define SET_CONFIG_OFFMUTEX 0x0000FF00 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------macro definitions --------------------------------------------------*/ 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------function prototypes -------------------------------------------------*/ 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SetCallbacks (OMX_HANDLETYPE hComp, 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pAppData); 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetComponentVersion (OMX_HANDLETYPE hComp, 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING pComponentName, 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pComponent, 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID); 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SendCommand (OMX_HANDLETYPE hComponent, 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMMANDTYPE Cmd, 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nParam1, 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pCmdData); 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetParameter (OMX_HANDLETYPE hComponent, 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentParamStruct); 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SetParameter (OMX_HANDLETYPE hComp, 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentParamStruct); 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetConfig (OMX_HANDLETYPE hComp, 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SetConfig (OMX_HANDLETYPE hComp, 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_EmptyThisBuffer (OMX_HANDLETYPE hComp, 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer); 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_FillThisBuffer (OMX_HANDLETYPE hComp, 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer); 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetState (OMX_HANDLETYPE hComp, OMX_STATETYPE* pState); 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_ComponentTunnelRequest (OMX_IN OMX_HANDLETYPE hComp, 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPort, 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hTunneledComp, 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nTunneledPort, 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup); 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_UseBuffer (OMX_IN OMX_HANDLETYPE hComponent, 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U8* pBuffer); 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes); 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_FreeBuffer (OMX_IN OMX_HANDLETYPE hComponent, 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_ComponentDeInit (OMX_HANDLETYPE hComponent); 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_VerifyTunnelConnection (VIDDEC_PORT_TYPE *pPort, 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE hTunneledComp, 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef); 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_Allocate_DSPResources (OMX_IN VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex); 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetExtensionIndex(OMX_IN OMX_HANDLETYPE hComponent, 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_STRING cParameterName, 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_INDEXTYPE* pIndexType); 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nIndex); 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_ComponentInit() Set the all the function pointers of component 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update the component function pointer to the handle 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param hComp handle for this instance of the component 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_ErrorInsufficientResources If the malloc fails 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComponent) 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = NULL; 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nMemUsage = 0; 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __ENV_CHANGE__ 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char EnvChangeValue[VIDDEC_MAX_NAMESIZE]; 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char* EnvChangeValueu = NULL; 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* print to logcat to verify that we are running a TI OMX codec*/ 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LOGI("TI Video Decoder \n"); 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, OMX_TRUE, OMX_TRUE); 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE *)hComponent; 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pHandle->pComponentPrivate, VIDDEC_COMPONENT_PRIVATE, nMemUsage); 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pHandle->pComponentPrivate == NULL) { 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0] += nMemUsage; 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPERF = PERF_Create(PERF_FOURS("VD "), 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleLLMM | PERF_ModuleVideoDecode); 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DBG_INIT(pComponentPrivate->dbg, "OMX_DBG_VIDDEC"); 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((VIDDEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->pHandle = pHandle; 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SetCallbacks = VIDDEC_SetCallbacks; 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetComponentVersion = VIDDEC_GetComponentVersion; 308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SendCommand = VIDDEC_SendCommand; 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetParameter = VIDDEC_GetParameter; 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SetParameter = VIDDEC_SetParameter; 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetConfig = VIDDEC_GetConfig; 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SetConfig = VIDDEC_SetConfig; 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetState = VIDDEC_GetState; 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->ComponentTunnelRequest = VIDDEC_ComponentTunnelRequest; 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->UseBuffer = VIDDEC_UseBuffer; 316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->AllocateBuffer = VIDDEC_AllocateBuffer; 317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->FreeBuffer = VIDDEC_FreeBuffer; 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->EmptyThisBuffer = VIDDEC_EmptyThisBuffer; 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->FillThisBuffer = VIDDEC_FillThisBuffer; 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->ComponentDeInit = VIDDEC_ComponentDeInit; 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetExtensionIndex = VIDDEC_GetExtensionIndex; 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->ComponentRoleEnum = ComponentRoleEnum; 324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pPortParamType, OMX_PORT_PARAM_TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __STD_COMPONENT__ 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pPortParamTypeAudio, OMX_PORT_PARAM_TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pPortParamTypeImage, OMX_PORT_PARAM_TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pPortParamTypeOthers, OMX_PORT_PARAM_TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT], VIDDEC_PORT_TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT], VIDDEC_PORT_TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pInPortDef, OMX_PARAM_PORTDEFINITIONTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pOutPortDef, OMX_PARAM_PORTDEFINITIONTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pInPortFormat, OMX_VIDEO_PARAM_PORTFORMATTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pOutPortFormat, OMX_VIDEO_PARAM_PORTFORMATTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pPriorityMgmt, OMX_PRIORITYMGMTTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pInBufSupplier, OMX_PARAM_BUFFERSUPPLIERTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pOutBufSupplier, OMX_PARAM_BUFFERSUPPLIERTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pMpeg4, OMX_VIDEO_PARAM_MPEG4TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pMpeg2, OMX_VIDEO_PARAM_MPEG2TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pH264, OMX_VIDEO_PARAM_AVCTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pH263, OMX_VIDEO_PARAM_H263TYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pWMV, OMX_VIDEO_PARAM_WMVTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pDeblockingParamType, OMX_PARAM_DEBLOCKINGTYPE, pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pComponentPrivate->pPVCapabilityFlags, PV_OMXComponentCapabilityFlagsType, pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pComponentPrivate->cComponentName, char, VIDDEC_MAX_NAMESIZE + 1,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0]); 350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->cComponentName == NULL) { 351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strncpy(pComponentPrivate->cComponentName, cVideoDecodeName, VIDDEC_MAX_NAMESIZE); 356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_INIT_STRUCT( &pComponentPrivate->componentRole, OMX_PARAM_COMPONENTROLETYPE, pComponentPrivate->dbg); 357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Load_Defaults( pComponentPrivate, VIDDEC_INIT_ALL); 358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __ENV_CHANGE__ 359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EnvChangeValueu = getenv(ENV_CHANGE_NAME_VALUE); 361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(EnvChangeValueu != NULL) { 362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy( EnvChangeValue, EnvChangeValueu); 363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_H263) == 0) { 364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H263); 365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, VIDDEC_COMPONENTROLES_H263); 369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_H264) == 0 || strcmp( EnvChangeValueu, ENV_CHANGE_SET_AVC) == 0) { 371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H264); 372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, VIDDEC_COMPONENTROLES_H264); 376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_MPEG2) == 0) { 378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG2); 379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, VIDDEC_COMPONENTROLES_MPEG2); 383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_WMV9) == 0) { 385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_WMV9); 386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, VIDDEC_COMPONENTROLES_MPEG4); 390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_SPARK) == 0) { 393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_SPARK); 394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, VIDDEC_COMPONENTROLES_H263); 398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG4); 402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, VIDDEC_COMPONENTROLES_WMV9); 406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, VIDDEC_COMPONENTROLES_MPEG4); 414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EnvChangeValueu = getenv(ENV_CHANGE_NAME_VALUE); 417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(EnvChangeValueu != NULL) { 418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy( EnvChangeValue, EnvChangeValueu); 419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_H263) == 0) { 420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H263); 421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_H264) == 0) { 423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H264); 424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_MPEG2) == 0) { 426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG2); 427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_WMV9) == 0) { 429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_WMV9); 430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if( strcmp( EnvChangeValueu, ENV_CHANGE_SET_SPARK) == 0) { 433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_SPARK); 434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG4); 438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#ifndef UNDER_CE*/ 448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* load the ResourceManagerProxy thread */ 449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewInitalizeEx(OMX_COMPONENTTYPE_VIDEO); 450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Unload; 452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from loading ResourceManagerProxy thread\n"); 453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else{ 456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Load; 457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#endif*/ 459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Start the component thread */ 462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Start_ComponentThread(pHandle); 463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error returned from the Component\n"); 465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_SetCallbacks() Sets application callbacks to the component 475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr pointer to the appdata structure 482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SetCallbacks (OMX_HANDLETYPE pComponent, 489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, 490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pAppData) 491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = NULL; 494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(pComponent, pCallBacks, OMX_TRUE); 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)pComponent; 499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Copy the callbacks of the application to the component private */ 502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy (&(pComponentPrivate->cbInfo), pCallBacks, sizeof(OMX_CALLBACKTYPE)); 503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* copy the application private data to component memory */ 505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate = pAppData; 506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eState = OMX_StateLoaded; 508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_GetComponentVersion() Sets application callbacks to the component 516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetComponentVersion (OMX_HANDLETYPE hComp, 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING pComponentName, 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pComponentVersion, 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID) 534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!hComp || !pComponentName || !pComponentVersion || !pSpecVersion) { 540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComp; 544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy(pComponentName, pComponentPrivate->cComponentName); 547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentVersion, &(pComponentPrivate->pComponentVersion.s), sizeof(pComponentPrivate->pComponentVersion.s)); 548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pSpecVersion, &(pComponentPrivate->pSpecVersion.s), sizeof(pComponentPrivate->pSpecVersion.s)); 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentUUID, (OMX_UUIDTYPE *)&STRING_H264VDSOCKET_TI_UUID, STRING_UUID_LENGHT); 552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) { 554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentUUID, (OMX_UUIDTYPE *)&STRING_WMVDSOCKET_TI_UUID, STRING_UUID_LENGHT); 555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ((pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) || 557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263)) { 558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentUUID, (OMX_UUIDTYPE *)&STRING_MP4DSOCKET_TI_UUID, STRING_UUID_LENGHT); 559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) { 561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentUUID, (OMX_UUIDTYPE *)&STRING_MP2DSOCKET_TI_UUID, STRING_UUID_LENGHT); 562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (VIDDEC_SPARKCHECK) { 565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentUUID, (OMX_UUIDTYPE *)&STRING_SPARKDSOCKET_TI_UUID, STRING_UUID_LENGHT); 566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentUUID, (OMX_UUIDTYPE *)&STRING_MP4DSOCKET_TI_UUID, STRING_UUID_LENGHT); 570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_SendCommand() Sets application callbacks to the component 578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SendCommand (OMX_HANDLETYPE hComponent, 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMMANDTYPE Cmd, 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nParam1, 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pCmdData) 594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nRet; 597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, OMX_TRUE, OMX_TRUE); 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComponent; 602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->eState == OMX_StateInvalid) { 605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingCommand(pComponentPrivate->pPERF, 611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Cmd, (Cmd == OMX_CommandMarkBuffer) ? (OMX_U32) pCmdData : nParam1, 612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleComponent); 613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (Cmd) { 616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_CommandStateSet: 6171348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 6181348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* Add a pending transition */ 6191348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(AddStateTransition(pComponentPrivate) != OMX_ErrorNone) { 6201348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 6211348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 6221348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eIdleToLoad = nParam1; 624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eExecuteToIdle = nParam1; 625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdPipe[VIDDEC_PIPE_WRITE], &Cmd, sizeof(Cmd)); 626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 6271348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_FALSE) != OMX_ErrorNone) { 6281348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 6291348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 6301348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE], &nParam1, sizeof(nParam1)); 633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 6341348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_FALSE) != OMX_ErrorNone) { 6351348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 6361348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 6371348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_CommandPortDisable: 641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nParam1 == VIDDEC_INPUT_PORT) { 642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->bEnabled = OMX_FALSE; 643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Disabling VIDDEC_INPUT_PORT 0x%x\n",pComponentPrivate->pInPortDef->bEnabled); 644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_HandleCommandFlush(pComponentPrivate, 0, OMX_FALSE); 645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nParam1 == VIDDEC_OUTPUT_PORT) { 647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->bEnabled = OMX_FALSE; 648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Disabling VIDDEC_OUTPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled); 649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_HandleCommandFlush(pComponentPrivate, 1, OMX_FALSE); 650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nParam1 == OMX_ALL) { 652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->bEnabled = OMX_FALSE; 653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->bEnabled = OMX_FALSE; 654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Disabling OMX_ALL IN 0x%x OUT 0x%x\n",pComponentPrivate->pInPortDef->bEnabled, 655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->bEnabled); 656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_HandleCommandFlush(pComponentPrivate, -1, OMX_FALSE); 657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdPipe[VIDDEC_PIPE_WRITE], &Cmd, sizeof(Cmd)); 663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE], &nParam1, sizeof(nParam1)); 668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Workaround version to handle pv app */ 674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*After ports is been flush*/ 675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nParam1 == VIDDEC_INPUT_PORT && 677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDynamicConfigurationInProgress == OMX_TRUE && 678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bInPortSettingsChanged == OMX_TRUE) { 679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_MUTEX_SIGNAL(pComponentPrivate->sDynConfigMutex); 680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_CommandPortEnable: 684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nParam1 == VIDDEC_INPUT_PORT) { 685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->bEnabled = OMX_TRUE; 686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Enabling VIDDEC_INPUT_PORT 0x%x\n",pComponentPrivate->pInPortDef->bEnabled); 687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nParam1 == VIDDEC_OUTPUT_PORT) { 689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->bEnabled = OMX_TRUE; 690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Enabling VIDDEC_OUTPUT_PORT 0x%x\n",pComponentPrivate->pOutPortDef->bEnabled); 691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nParam1 == OMX_ALL) { 693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->bEnabled = OMX_TRUE; 694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->bEnabled = OMX_TRUE; 695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Enabling VIDDEC_INPUT_PORT 0x%x\n",pComponentPrivate->pInPortDef->bEnabled); 696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdPipe[VIDDEC_PIPE_WRITE], &Cmd, sizeof(Cmd)); 698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE], &nParam1, sizeof(nParam1)); 703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_CommandFlush: 709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ( nParam1 > 1 && nParam1 != -1 ) { 710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdPipe[VIDDEC_PIPE_WRITE], &Cmd, sizeof(Cmd)); 714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE], &nParam1, sizeof(nParam1)); 719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_CommandMarkBuffer: 725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ( nParam1 > VIDDEC_OUTPUT_PORT ){ 726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdPipe[VIDDEC_PIPE_WRITE], &Cmd, sizeof(Cmd)); 730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE], &nParam1, sizeof(nParam1)); 735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE], &pCmdData, sizeof(pCmdData)); 740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_CommandMax: 746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_GetParameter() Sets application callbacks to the component 758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetParameter (OMX_IN OMX_HANDLETYPE hComponent, 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_INDEXTYPE nParamIndex, 773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_PTR ComponentParameterStructure) 774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pComp = NULL; 776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_COMPONENTROLETYPE *pRole = NULL; 780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, ComponentParameterStructure, OMX_TRUE); 782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComp = (OMX_COMPONENTTYPE*)hComponent; 784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pComp->pComponentPrivate; 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*add check if state != loaded or port not disabled*/ 787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->eState == OMX_StateInvalid) { 788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorIncorrectStateOperation); 789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (nParamIndex) { 792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoMBErrorReporting: /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */ 793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263 || 796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MBERRORREPORTINGTYPE* pMBErrorReportTo = ComponentParameterStructure; 798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pMBErrorReportTo, OMX_CONFIG_MBERRORREPORTINGTYPE, eError, pComponentPrivate->dbg);*/ 799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pMBErrorReportTo->bEnabled = pComponentPrivate->eMBErrorReport.bEnabled; 800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoInit: 807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPortParamType, sizeof(OMX_PORT_PARAM_TYPE)); 808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __STD_COMPONENT__ 810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioInit: 811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPortParamTypeAudio, sizeof(OMX_PORT_PARAM_TYPE)); 812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamImageInit: 814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPortParamTypeImage, sizeof(OMX_PORT_PARAM_TYPE)); 815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamOtherInit: 817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPortParamTypeOthers, sizeof(OMX_PORT_PARAM_TYPE)); 818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMacroblocksPerFrame:/**< reference: OMX_PARAM_MACROBLOCKSTYPE */ 821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_MACROBLOCKSTYPE* pMBBlocksTypeTo = ComponentParameterStructure; 823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pMBBlocksTypeTo, OMX_PARAM_MACROBLOCKSTYPE, eError, pComponentPrivate->dbg);*/ 824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pMBBlocksTypeTo->nMacroblocks = pComponentPrivate->pOutPortDef->format.video.nFrameWidth * 825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->format.video.nFrameHeight / 256; 826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelQuerySupported: 829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 8302acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong VIDEO_PROFILE_LEVEL_TYPE* pProfileLevel = NULL; 8312acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong OMX_U32 nNumberOfProfiles = 0; 8322acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong OMX_VIDEO_PARAM_PROFILELEVELTYPE *pParamProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)ComponentParameterStructure; 8332acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->nPortIndex = pComponentPrivate->pInPortDef->nPortIndex; 8342acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 8352acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong /* Choose table based on compression format */ 8362acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong switch(pComponentPrivate->pInPortDef->format.video.eCompressionFormat) 8372acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong { 8382acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingH263: 8392acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel = &SupportedH263ProfileLevels; 8402acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong nNumberOfProfiles = sizeof(SupportedH263ProfileLevels) / sizeof (VIDEO_PROFILE_LEVEL_TYPE); 8412acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 8422acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingMPEG4: 8432acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel = &SupportedMPEG4ProfileLevels; 8442acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong nNumberOfProfiles = sizeof(SupportedMPEG4ProfileLevels) / sizeof (VIDEO_PROFILE_LEVEL_TYPE); 8452acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 8462acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingAVC: 8472acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel = &SupportedAVCProfileLevels; 8482acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong nNumberOfProfiles = sizeof(SupportedAVCProfileLevels) / sizeof (VIDEO_PROFILE_LEVEL_TYPE); 8492acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 8502acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong default: 8512acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong return OMX_ErrorBadParameter; 8522acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8532acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 8542acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong if((pParamProfileLevel->nProfileIndex < 0) || (pParamProfileLevel->nProfileIndex >= (nNumberOfProfiles - 1))) 8552acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong return OMX_ErrorBadParameter; 8562acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 8572acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong /* Point to table entry based on index */ 8582acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel += pParamProfileLevel->nProfileIndex; 8592acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 8602acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong /* -1 indicates end of table */ 8612acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong if(pProfileLevel->nProfile != -1) { 8622acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eProfile = pProfileLevel->nProfile; 8632acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eLevel = pProfileLevel->nLevel; 8642acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong eError = OMX_ErrorNone; 8652acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8662acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong else { 8672acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong eError = OMX_ErrorNoMore; 8682acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8692acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 8702acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelCurrent: 8722acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong { 8732acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong OMX_VIDEO_PARAM_PROFILELEVELTYPE *pParamProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)ComponentParameterStructure; 8742acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 8752acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eProfile = pComponentPrivate->pH264->eProfile; 8762acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eLevel = pComponentPrivate->pH264->eLevel; 8772acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8782acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) { 8792acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eProfile = pComponentPrivate->pMpeg4->eProfile; 8802acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eLevel = pComponentPrivate->pMpeg4->eLevel; 8812acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8822acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) { 8832acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eProfile = pComponentPrivate->pH263->eProfile; 8842acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eLevel = pComponentPrivate->pH263->eLevel; 8852acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8862acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) { 8872acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eProfile = pComponentPrivate->pMpeg2->eProfile; 8882acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pParamProfileLevel->eLevel = pComponentPrivate->pMpeg2->eLevel; 8892acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8902acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong else { 8912acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong OMX_ERROR4(pComponentPrivate->dbg, "Error in Getparameter OMX_IndexParamVideoProfileLevelCurrent \n"); 8922acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong eError = OMX_ErrorBadParameter; 8932acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8942acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 8952acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamStandardComponentRole: 897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ComponentParameterStructure != NULL) { 898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pRole = (OMX_PARAM_COMPONENTROLETYPE *)ComponentParameterStructure; 899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pRole, OMX_PARAM_COMPONENTROLETYPE, eError, pComponentPrivate->dbg);*/ 900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy( pRole, &pComponentPrivate->componentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE)); 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPortDefinition: 909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (((OMX_PARAM_PORTDEFINITIONTYPE*)(ComponentParameterStructure))->nPortIndex == 911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->nPortIndex) { 912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = pComponentPrivate->pInPortDef; 913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDefParam = (OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure; 914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDefParam, pPortDef, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (((OMX_PARAM_PORTDEFINITIONTYPE*)(ComponentParameterStructure))->nPortIndex == 917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->nPortIndex) { 918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDefParam = (OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure; 919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = pComponentPrivate->pOutPortDef; 920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDefParam, pPortDef, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "CountActual 0x%x CountMin 0x%x Size %d bEnabled %x bPopulated %x compression %x %x-%x\n", 927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->nBufferCountActual, 928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->nBufferCountMin, 929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->nBufferSize, 930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->bEnabled, 931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->bPopulated, 932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->format.video.nFrameWidth, 933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->format.video.nFrameHeight, 934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )((OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure)->format.video.eCompressionFormat); 935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoPortFormat: 938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_PORTFORMATTYPE* pPortFormat = (OMX_VIDEO_PARAM_PORTFORMATTYPE*)ComponentParameterStructure; 940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortFormat->nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (pPortFormat->nIndex) { 942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_H263: 943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "eCompressionFormat = OMX_VIDEO_CodingH263\n"); 944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_H263; 945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingH263; 946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingH263; 947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_H264: 949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "eCompressionFormat = OMX_VIDEO_CodingAVC\n"); 950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_H264; 951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingAVC; 952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingAVC; 953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_MPEG2: 955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_MPEG2; 956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingMPEG2; 957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG2; 958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_MPEG4: 960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "eCompressionFormat = VIDDEC_DEFAULT_INPUT_INDEX_MPEG4\n"); 961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_MPEG4; 962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingMPEG4; 963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4; 964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_WMV9: 966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_WMV9; 967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingWMV; 968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingWMV; 969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_SPARK: 972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->nIndex = VIDDEC_DEFAULT_INPUT_INDEX_SPARK; 973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat->eCompressionFormat = OMX_VIDEO_CodingUnused; 974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingUnused; 975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Input Index= %lu; OMX_ErrorNoMore\n", pPortFormat->nIndex); 979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNoMore; 980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError == OMX_ErrorNone) { 983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pInPortFormat, 984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE)); 985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortFormat->nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError == OMX_ErrorNone) { 989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pOutPortFormat, 990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE)); 991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPriorityMgmt, sizeof(OMX_PRIORITYMGMTTYPE)); 1000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoWmv: 1002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (((OMX_VIDEO_PARAM_WMVTYPE*)(ComponentParameterStructure))->nPortIndex == 1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pWMV->nPortIndex) { 1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pWMV, sizeof(OMX_VIDEO_PARAM_WMVTYPE)); 1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoMpeg4: 1013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (((OMX_VIDEO_PARAM_MPEG4TYPE*)(ComponentParameterStructure))->nPortIndex == 1015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMpeg4->nPortIndex) { 1016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pMpeg4, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE)); 1017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoMpeg2: 1024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (((OMX_VIDEO_PARAM_MPEG2TYPE*)(ComponentParameterStructure))->nPortIndex == 1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMpeg2->nPortIndex) { 1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pMpeg2, sizeof(OMX_VIDEO_PARAM_MPEG2TYPE)); 1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoAvc: 1035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (((OMX_VIDEO_PARAM_AVCTYPE*)(ComponentParameterStructure))->nPortIndex == 1038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pH264->nPortIndex) { 1039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pH264, sizeof(OMX_VIDEO_PARAM_AVCTYPE)); 1040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoH263: 1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (((OMX_VIDEO_PARAM_H263TYPE*)(ComponentParameterStructure))->nPortIndex == 1050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pH263->nPortIndex) { 1051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pH263, sizeof(OMX_VIDEO_PARAM_H263TYPE)); 1052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: 1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_BUFFERSUPPLIERTYPE* pBuffSupplierParam = (OMX_PARAM_BUFFERSUPPLIERTYPE*)ComponentParameterStructure; 1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffSupplierParam->nPortIndex == 1) { 1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffSupplierParam->eBufferSupplier = pComponentPrivate->pCompPort[pBuffSupplierParam->nPortIndex]->eSupplierSetting; 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pBuffSupplierParam->nPortIndex == 0) { 1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffSupplierParam->eBufferSupplier = pComponentPrivate->pCompPort[pBuffSupplierParam->nPortIndex]->eSupplierSetting; 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamProcessMode: 1075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_U32 *)ComponentParameterStructure) = pComponentPrivate->ProcessMode; 1076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamParserEnabled: 1078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_BOOL *)ComponentParameterStructure) = pComponentPrivate->bParserEnabled; 1079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamH264BitStreamFormat: 1081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_U32 *)ComponentParameterStructure) = pComponentPrivate->H264BitStreamFormat; 1082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamWMVProfile: 1084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((VIDDEC_WMV_PROFILES *)ComponentParameterStructure) = pComponentPrivate->wmvProfile; 1086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamWMVFileType: 1089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_U32 *)ComponentParameterStructure) = pComponentPrivate->nWMVFileType; 1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamIsNALBigEndian: 1092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_BOOL *)ComponentParameterStructure) = pComponentPrivate->bIsNALBigEndian; 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 1096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamIsSparkInput: 1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_U32 *)ComponentParameterStructure) = pComponentPrivate->bIsSparkInput; 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonDeblocking: /**< reference: OMX_PARAM_DEBLOCKINGTYPE */ 1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pDeblockingParamType, sizeof(OMX_PARAM_DEBLOCKINGTYPE)); 1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 1107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Opencore specific */ 1108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case (OMX_INDEXTYPE) PV_OMX_COMPONENT_CAPABILITY_TYPE_INDEX: /** Obtain the capabilities of the OMX component **/ 1109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPVCapabilityFlags, 1110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sizeof(PV_OMXComponentCapabilityFlagsType)); 1111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNone; 1112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 1115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 1120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 1123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_SetParameter() Sets application callbacks to the component 1125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 1127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 1130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 1132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 1136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 1137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SetParameter (OMX_HANDLETYPE hComp, 1139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 1140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pCompParam) 1141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle= NULL; 1143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_COMPONENTROLETYPE *pRole = NULL; 1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComp, pCompParam, OMX_TRUE); 1150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle= (OMX_COMPONENTTYPE*)hComp; 1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = pHandle->pComponentPrivate; 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->eState != OMX_StateLoaded && pComponentPrivate->eState != OMX_StateWaitForResources) { 1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorIncorrectStateOperation); 1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (nParamIndex) { 1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoPortFormat: 1158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_PORTFORMATTYPE* pPortFormat = (OMX_VIDEO_PARAM_PORTFORMATTYPE*)pCompParam; 1160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortFormat->nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pPortFormat->eColorFormat == OMX_COLOR_FormatUnused) { 1162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (pPortFormat->eCompressionFormat) { 1163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_VIDEO_CodingH263: 1164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingH263; 1165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_VIDEO_CodingAVC: 1167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingAVC; 1168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "eCompressionFormat = OMX_VIDEO_CodingAVC\n"); 1169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_VIDEO_CodingMPEG2: 1171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG2; 1172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_VIDEO_CodingMPEG4: 1174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "eCompressionFormat = OMX_VIDEO_CodingMPEG4\n"); 1175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4; 1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_VIDEO_CodingWMV: 1178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "eCompressionFormat = OMX_VIDEO_CodingWMV\n"); 1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingWMV; 1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_VIDEO_CodingUnused: 1184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bIsSparkInput) { 1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat = OMX_VIDEO_CodingUnused; 1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNoMore; 1189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 1193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNoMore; 1194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError == OMX_ErrorNone) { 1201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pInPortFormat, pPortFormat, sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE)); 1202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortFormat->nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pPortFormat->eCompressionFormat == OMX_VIDEO_CodingUnused) { 1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (pPortFormat->eColorFormat) { 1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_COLOR_FormatYUV420Planar: 1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->format.video.eColorFormat = VIDDEC_COLORFORMAT420; 1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_COLOR_FormatCbYCrY: 1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->format.video.eColorFormat = VIDDEC_COLORFORMAT422; 1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNoMore; 1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError == OMX_ErrorNone) { 1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pOutPortFormat, pPortFormat, sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE)); 1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoInit: 1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pPortParamType, (OMX_PORT_PARAM_TYPE*)pCompParam, sizeof(OMX_PORT_PARAM_TYPE)); 1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __STD_COMPONENT__ 1234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioInit: 1235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pPortParamTypeAudio, (OMX_PORT_PARAM_TYPE*)pCompParam, sizeof(OMX_PORT_PARAM_TYPE)); 1236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamImageInit: 1238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pPortParamTypeImage, (OMX_PORT_PARAM_TYPE*)pCompParam, sizeof(OMX_PORT_PARAM_TYPE)); 1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamOtherInit: 1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pPortParamTypeOthers, (OMX_PORT_PARAM_TYPE*)pCompParam, sizeof(OMX_PORT_PARAM_TYPE)); 1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamPortDefinition: 1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pComponentParam = (OMX_PARAM_PORTDEFINITIONTYPE*)pCompParam; 1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentParam->nPortIndex == pComponentPrivate->pInPortDef->nPortIndex) { 1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDefParam = (OMX_PARAM_PORTDEFINITIONTYPE *)pComponentParam; 1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = pComponentPrivate->pInPortDef; 1250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDef, pPortDefParam, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->nBufferSize = pPortDef->format.video.nFrameWidth * 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->format.video.nFrameHeight; 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Set i/p size: %dx%d", pPortDefParam->format.video.nFrameWidth, pPortDefParam->format.video.nFrameHeight); 1255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentParam->nPortIndex == pComponentPrivate->pOutPortDef->nPortIndex) { 1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDefParam = (OMX_PARAM_PORTDEFINITIONTYPE *)pComponentParam; 1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = pComponentPrivate->pOutPortDef; 1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDef, pPortDefParam, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->nBufferSize = pPortDef->format.video.nFrameWidth * 1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->format.video.nFrameHeight * 1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((pComponentPrivate->pOutPortFormat->eColorFormat == VIDDEC_COLORFORMAT420) ? VIDDEC_FACTORFORMAT420 : VIDDEC_FACTORFORMAT422); 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Set OUT/p size: %dx%d", pPortDefParam->format.video.nFrameWidth, pPortDefParam->format.video.nFrameHeight); 1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "CountActual 0x%x CountMin 0x%x Size %d bEnabled %x bPopulated %x\n", 1270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )pComponentParam->nBufferCountActual, 1271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )pComponentParam->nBufferCountMin, 1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )pComponentParam->nBufferSize, 1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )pComponentParam->bEnabled, 1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )pComponentParam->bPopulated); 1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoWmv: 1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_WMVTYPE* pComponentParam = (OMX_VIDEO_PARAM_WMVTYPE*)pCompParam; 1280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentParam->nPortIndex == pComponentPrivate->pWMV->nPortIndex) { 1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pWMV, pCompParam, sizeof(OMX_VIDEO_PARAM_WMVTYPE)); 1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMpeg4: 1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_MPEG4TYPE* pComponentParam = (OMX_VIDEO_PARAM_MPEG4TYPE*)pCompParam; 1291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentParam->nPortIndex == pComponentPrivate->pMpeg4->nPortIndex) { 1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pMpeg4, pCompParam, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE)); 1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMpeg2: 1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_MPEG2TYPE* pComponentParam = (OMX_VIDEO_PARAM_MPEG2TYPE*)pCompParam; 1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentParam->nPortIndex == pComponentPrivate->pMpeg2->nPortIndex) { 1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pMpeg2, pCompParam, sizeof(OMX_VIDEO_PARAM_MPEG2TYPE)); 1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoAvc: 1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_AVCTYPE* pComponentParam = (OMX_VIDEO_PARAM_AVCTYPE *)pCompParam; 1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentParam->nPortIndex == pComponentPrivate->pH264->nPortIndex) { 1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pH264, pCompParam, sizeof(OMX_VIDEO_PARAM_AVCTYPE)); 1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoH263: 1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_H263TYPE* pComponentParam = (OMX_VIDEO_PARAM_H263TYPE *)pCompParam; 1324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentParam->nPortIndex == pComponentPrivate->pH263->nPortIndex) { 1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pH263, pCompParam, sizeof(OMX_VIDEO_PARAM_H263TYPE)); 1326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pComponentPrivate->pPriorityMgmt, (OMX_PRIORITYMGMTTYPE*)pCompParam, sizeof(OMX_PRIORITYMGMTTYPE)); 1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: 1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_BUFFERSUPPLIERTYPE* pBuffSupplierParam = (OMX_PARAM_BUFFERSUPPLIERTYPE*)pCompParam; 1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffSupplierParam->nPortIndex == 1) { 1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[pBuffSupplierParam->nPortIndex]->eSupplierSetting = pBuffSupplierParam->eBufferSupplier; 1341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pBuffSupplierParam->nPortIndex == 0) { 1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[pBuffSupplierParam->nPortIndex]->eSupplierSetting = pBuffSupplierParam->eBufferSupplier; 1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Video decode custom parameters */ 1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamProcessMode: 1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ProcessMode = (OMX_U32)(*((OMX_U32 *)pCompParam)); 1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamParserEnabled: 1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bParserEnabled = (OMX_BOOL)(*((OMX_BOOL *)pCompParam)); 1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamH264BitStreamFormat: 1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->H264BitStreamFormat = (OMX_U32)(*((OMX_U32 *)pCompParam)); 1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamWMVProfile: 1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->wmvProfile = *((VIDDEC_WMV_PROFILES *)pCompParam); 1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamStandardComponentRole: 1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompParam != NULL) { 1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* cTempRole = NULL; 1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cTempRole = (OMX_U8*)pComponentPrivate->componentRole.cRole; 1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pRole = (OMX_PARAM_COMPONENTROLETYPE *)pCompParam; 1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pRole, OMX_PARAM_COMPONENTROLETYPE, eError, pComponentPrivate->dbg);*/ 1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(strcmp( (char*)pRole->cRole, VIDDEC_COMPONENTROLES_H263) == 0) { 1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H263); 1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(strcmp( (char*)pRole->cRole, VIDDEC_COMPONENTROLES_H264) == 0) { 1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H264); 1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(strcmp( (char*)pRole->cRole, VIDDEC_COMPONENTROLES_MPEG2) == 0) { 1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG2); 1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(strcmp( (char*)pRole->cRole, VIDDEC_COMPONENTROLES_MPEG4) == 0) { 1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG4); 1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(strcmp( (char*)pRole->cRole, VIDDEC_COMPONENTROLES_WMV9) == 0) { 1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_WMV9); 1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(strcmp( (char*)pRole->cRole, VIDDEC_COMPONENTROLES_SPARK) == 0) { 1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_SPARK); 1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Set format according with hw accelerated rendering */ 1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT422) { 1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_INTERLEAVED422); 1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy( (void *)&pComponentPrivate->componentRole, (void *)pRole, sizeof(OMX_PARAM_COMPONENTROLETYPE)); 1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamWMVFileType: 1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nWMVFileType = (OMX_U32)(*((OMX_U32 *)pCompParam)); 1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamIsNALBigEndian: 1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsNALBigEndian = (OMX_BOOL)(*((OMX_BOOL *)pCompParam)); 1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomParamIsSparkInput: 1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsSparkInput = (OMX_BOOL)(*((OMX_BOOL *)pCompParam)); 1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoMBErrorReporting:/**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */ 1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263 || 1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MBERRORREPORTINGTYPE* pMBErrorReportFrom = pCompParam; 1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pMBErrorReportFrom, OMX_CONFIG_MBERRORREPORTINGTYPE, eError, pComponentPrivate->dbg);*/ 1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eMBErrorReport.bEnabled = pMBErrorReportFrom->bEnabled; 1432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonDeblocking: /**< reference: OMX_PARAM_DEBLOCKINGTYPE */ 1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char value[PROPERTY_VALUE_MAX]; 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin property_get("debug.video.showfps", value, "0"); 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin mDebugFps = atoi(value); 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LOGD_IF(mDebugFps, "Not setting deblocking to measure fps"); 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (mDebugFps == OMX_FALSE) { 1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263){ 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pDeblockingParamType->bDeblocking = 1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((OMX_PARAM_DEBLOCKINGTYPE*)pCompParam)->bDeblocking; 1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LOGD("Deblocking Enable"); 1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMacroblocksPerFrame: 1460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamNumAvailableStreams: 1461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamActiveStream: 1462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamSuspensionPolicy: 1463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamComponentSuspended: 1464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexAutoPauseAfterCapture: 1465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCustomContentPipe: 1466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamDisableResourceConcealment: 1467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_2 1468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetadataItemCount: 1469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigContainerNodeCount: 1470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetadataItem: 1471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCounterNodeID: 1472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamMetadataFilterType: 1473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonTransitionEffect: 1474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexKhronosExtensions: 1475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataSize: 1477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataAtIndex: 1478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataAtKey: 1479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataNodeCount: 1480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataNode: 1481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataItemCount: 1482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamMetadataKeyFilter: 1484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigPriorityMgmt: 1485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioChannelVolume: 1486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigFlashControl: 1487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelQuerySupported: 14882acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 1489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelCurrent: 14902acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong { 14912acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong VIDEO_PROFILE_LEVEL_TYPE* pProfileLevel = NULL; 14922acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong OMX_VIDEO_PARAM_PROFILELEVELTYPE *pParamProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pCompParam; 14932acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 14942acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong /* Choose table based on compression format */ 14952acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong switch(pComponentPrivate->pInPortDef->format.video.eCompressionFormat) 14962acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong { 14972acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingH263: 14982acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel = &SupportedH263ProfileLevels; 14992acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 15002acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingMPEG4: 15012acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel = &SupportedMPEG4ProfileLevels; 15022acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 15032acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingAVC: 15042acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel = &SupportedAVCProfileLevels; 15052acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 15062acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong default: 15072acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong return OMX_ErrorBadParameter; 15082acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 15092acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 15102acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong /* Check validity of profile & level parameters */ 15112acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong while((pProfileLevel->nProfile != (OMX_S32)pParamProfileLevel->eProfile) || 15122acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong (pProfileLevel->nLevel != (OMX_S32)pParamProfileLevel->eLevel)) { 15132acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pProfileLevel++; 15142acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong if(pProfileLevel->nProfile == -1) break; 15152acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 15162acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 15172acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong if(pProfileLevel->nProfile != -1) { 15182acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong /* Update profile & level values in the compression format specific structure */ 15192acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong switch(pComponentPrivate->pInPortDef->format.video.eCompressionFormat) { 15202acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingH263: 15212acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pComponentPrivate->pH263->eProfile = pParamProfileLevel->eProfile; 15222acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pComponentPrivate->pH263->eLevel = pParamProfileLevel->eLevel; 15232acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 15242acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingMPEG4: 15252acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pComponentPrivate->pMpeg4->eProfile = pParamProfileLevel->eProfile; 15262acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pComponentPrivate->pMpeg4->eLevel = pParamProfileLevel->eLevel; 15272acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 15282acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong case OMX_VIDEO_CodingAVC: 15292acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pComponentPrivate->pH264->eProfile = pParamProfileLevel->eProfile; 15302acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong pComponentPrivate->pH264->eLevel = pParamProfileLevel->eLevel; 15312acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong default: 15322acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong return OMX_ErrorBadParameter; 15332acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 15342acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 15352acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong eError = OMX_ErrorNone; 15362acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 15372acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong else { 15382acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong eError = OMX_ErrorBadParameter; 15392acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 15402acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong break; 15412acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong } 15422acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 1543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoBitrate: 1544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoFramerate: 1545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoIntraVOPRefresh: 1546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoIntraMBRefresh: 1547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoMacroBlockErrorMap: 1548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoSliceFMO: 1549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoAVCIntraPeriod: 1550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoNalSize: 1551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonExposureValue: 1552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOutputSize: 1553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonExtraQuantData: 1554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFocusRegion: 1555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFocusStatus: 1556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamContentURI: 1557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCaptureMode: 1558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCapturing: 1559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 1561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 1565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 1569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_GetConfig() Sets application callbacks to the component 1571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 1573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 1574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 1576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 1577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 1578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 1582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 1583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetConfig (OMX_HANDLETYPE hComp, 1585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 1586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 1587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 1590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComp, ComponentConfigStructure, OMX_TRUE); 1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComp; 1595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->eState == OMX_StateInvalid) { 1598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorIncorrectStateOperation); 1599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch ((OMX_S32) nConfigIndex) 1602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamPortDefinition: 1604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDefParam = (OMX_PARAM_PORTDEFINITIONTYPE *)ComponentConfigStructure; 1606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (((OMX_PARAM_PORTDEFINITIONTYPE*)(ComponentConfigStructure))->nPortIndex == 1607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->nPortIndex) { 1608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = pComponentPrivate->pInPortDef; 1609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDefParam, pPortDef, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 1610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (((OMX_PARAM_PORTDEFINITIONTYPE*)(ComponentConfigStructure))->nPortIndex == 1612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->nPortIndex) { 1613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = pComponentPrivate->pOutPortDef; 1614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDefParam, pPortDef, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 1615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomConfigDebug:/**< reference: struct OMX_TI_Debug */ 1622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DBG_GETCONFIG(pComponentPrivate->dbg, ComponentConfigStructure); 1623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 1625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoMBErrorReporting:/**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */ 1626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 1628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263 || 1629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 1630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MBERRORREPORTINGTYPE* pMBErrorReportTo = ComponentConfigStructure; 1631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pMBErrorReportTo, OMX_CONFIG_MBERRORREPORTINGTYPE, eError, pComponentPrivate->dbg);*/ 1632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pMBErrorReportTo->bEnabled = pComponentPrivate->eMBErrorReport.bEnabled; 1633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoMacroBlockErrorMap: /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */ 1640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 1642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263 || 1643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 1644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MACROBLOCKERRORMAPTYPE_TI* pMBErrorMapTypeFrom = &pComponentPrivate->eMBErrorMapType[pComponentPrivate->cMBErrorIndexOut]; 1645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MACROBLOCKERRORMAPTYPE_TI* pMBErrorMapTypeTo = ComponentConfigStructure; 1646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* ErrMapFrom = pMBErrorMapTypeFrom->ErrMap; 1647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* ErrMapTo = pMBErrorMapTypeTo->ErrMap; 1648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pRole, OMX_CONFIG_MBERRORREPORTINGTYPE, eError, pComponentPrivate->dbg);*/ 1649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pMBErrorMapTypeTo->nErrMapSize = pMBErrorMapTypeFrom->nErrMapSize; 1650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ErrMapTo, ErrMapFrom, pMBErrorMapTypeFrom->nErrMapSize); 1651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cMBErrorIndexOut++; 1652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cMBErrorIndexOut %= pComponentPrivate->pOutPortDef->nBufferCountActual; 1653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMacroblocksPerFrame:/**< reference: OMX_PARAM_MACROBLOCKSTYPE */ 1660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 1662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263 || 1663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 1664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_MACROBLOCKSTYPE* pMBBlocksTypeTo = ComponentConfigStructure; 1665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pMBBlocksTypeTo, OMX_PARAM_MACROBLOCKSTYPE, eError, pComponentPrivate->dbg);*/ 1666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pMBBlocksTypeTo->nMacroblocks = pComponentPrivate->pOutPortDef->format.video.nFrameWidth * 1667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->format.video.nFrameHeight / 256; 1668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamNumAvailableStreams: 1675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamActiveStream: 1676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamSuspensionPolicy: 1677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamComponentSuspended: 1678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexAutoPauseAfterCapture: 1679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCustomContentPipe: 1680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamDisableResourceConcealment: 1681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_2 1682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetadataItemCount: 1683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigContainerNodeCount: 1684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetadataItem: 1685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCounterNodeID: 1686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamMetadataFilterType: 1687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonTransitionEffect: 1688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexKhronosExtensions: 1689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataSize: 1691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataAtIndex: 1692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataAtKey: 1693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataNodeCount: 1694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataNode: 1695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataItemCount: 1696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamMetadataKeyFilter: 1698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigPriorityMgmt: 1699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamStandardComponentRole: 1700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioChannelVolume: 1701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigFlashControl: 1702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelQuerySupported: 1703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelCurrent: 1704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoBitrate: 1705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoFramerate: 1706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoIntraVOPRefresh: 1707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoIntraMBRefresh: 1708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoSliceFMO: 1709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoAVCIntraPeriod: 1710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoNalSize: 1711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonExposureValue: 1712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOutputSize: 1713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonExtraQuantData: 1714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFocusRegion: 1715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFocusStatus: 1716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamContentURI: 1717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCaptureMode: 1718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCapturing: 1719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexComponentStartUnused: 1721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: /**< reference: OMX_PRIORITYMGMTTYPE */ 1722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioInit: /**< reference: OMX_PORT_PARAM_TYPE */ 1723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamImageInit: /**< reference: OMX_PORT_PARAM_TYPE */ 1724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoInit: /**< reference: OMX_PORT_PARAM_TYPE */ 1725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamOtherInit: /**< reference: OMX_PORT_PARAM_TYPE */ 1726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexPortStartUnused: 1728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE (*/ 1729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexReservedStartUnused: 1730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Audio parameters and configurations */ 1732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexAudioStartUnused: 1733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */ 1734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPcm: /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */ 1735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioAac: /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */ 1736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioRa: /**< reference: OMX_AUDIO_PARAM_RATYPE */ 1737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioMp3: /**< reference: OMX_AUDIO_PARAM_MP3TYPE */ 1738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioAdpcm: /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */ 1739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioG723: /**< reference: OMX_AUDIO_PARAM_G723TYPE */ 1740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioG729: /**< reference: OMX_AUDIO_PARAM_G729TYPE */ 1741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioAmr: /**< reference: OMX_AUDIO_PARAM_AMRTYPE */ 1742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioWma: /**< reference: OMX_AUDIO_PARAM_WMATYPE */ 1743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioSbc: /**< reference: OMX_AUDIO_PARAM_SBCTYPE */ 1744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioMidi: /**< reference: OMX_AUDIO_PARAM_MIDITYPE */ 1745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioGsm_FR: /**< reference: OMX_AUDIO_PARAM__GSMFRTYPE */ 1746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioMidiLoadUserSound: /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */ 1747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioG726: /**< reference: OMX_AUDIO_PARAM_G726TYPE */ 1748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioGsm_EFR: /**< reference: OMX_AUDIO_PARAM__GSMEFRTYPE */ 1749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioGsm_HR: /**< reference: OMX_AUDIO_PARAM__GSMHRTYPE */ 1750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPdc_FR: /**< reference: OMX_AUDIO_PARAM__PDCFRTYPE */ 1751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPdc_EFR: /**< reference: OMX_AUDIO_PARAM__PDCEFRTYPE */ 1752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPdc_HR: /**< reference: OMX_AUDIO_PARAM__PDCHRTYPE */ 1753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioTdma_FR: /**< reference: OMX_AUDIO_PARAM__TDMAFRTYPE */ 1754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioTdma_EFR: /**< reference: OMX_AUDIO_PARAM__TDMAEFRTYPE */ 1755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioQcelp8: /**< reference: OMX_AUDIO_PARAM__QCELP8TYPE */ 1756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioQcelp13: /**< reference: OMX_AUDIO_PARAM__QCELP13TYPE */ 1757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioEvrc: /**< reference: OMX_AUDIO_PARAM__EVRCTYPE */ 1758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioSmv: /**< reference: OMX_AUDIO_PARAM__SMVTYPE */ 1759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioVorbis: /**< reference: OMX_AUDIO_PARAM__VORBISTYPE */ 1760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiImmediateEvent: /**< OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */ 1762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiControl: /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */ 1763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiSoundBankProgram: /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */ 1764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiStatus: /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */ 1765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiMetaEvent: /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */ 1766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiMetaEventData: /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */ 1767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioVolume: /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */ 1768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioBalance: /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */ 1769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioChannelMute: /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */ 1770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMute: /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */ 1771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioLoudness: /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */ 1772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioEchoCancelation: /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */ 1773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioNoiseReduction: /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */ 1774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioBass: /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */ 1775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioTreble: /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */ 1776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioStereoWidening: /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */ 1777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioChorus: /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */ 1778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioEqualizer: /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */ 1779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioReverberation: /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */ 1780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Image specific parameters and configurations */ 1782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexImageStartUnused: 1783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamImagePortFormat: /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */ 1784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamFlashControl: /**< refer to OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ 1785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigFocusControl: /**< refer to OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */ 1786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamQFactor: /**< refer to OMX_IMAGE_PARAM_QFACTORTYPE */ 1787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamQuantizationTable: /**< refer to OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */ 1788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamHuffmanTable: /**< For jpeg, refer to OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */ 1789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Video specific parameters and configurations */ 1791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexVideoStartUnused: 1792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoPortFormat: /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */ 1793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoQuantization: /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONPARAMTYPE */ 1794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoFastUpdate: /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */ 1795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoBitrate: /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */ 1796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMotionVector: /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */ 1797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoIntraRefresh: /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */ 1798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoErrorCorrection: /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */ 1799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoVBSMC: /**< reference:OMX_VIDEO_PARAM_VBSMCTYPE */ 1800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMpeg2: /**< reference:OMX_VIDEO_PARAM_MPEG2TYPE */ 1801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMpeg4: /**< reference: OMX_VIDEO_CONFIG_MPEG4TYPE */ 1802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoWmv: /**< reference:OMX_VIDEO_PARAM_WMVTYPE */ 1803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoRv: /**< reference:OMX_VIDEO_PARAM_RVTYPE */ 1804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoAvc: /**< reference:OMX_VIDEO_PARAM_AVCTYPE */ 1805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoH263: /**< reference:OMX_VIDEO_PARAM_H263TYPE */ 1806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Image & Video common Configurations */ 1808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexCommonStartUnused: 1809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonDeblocking: /**< reference: OMX_PARAM_DEBLOCKINGTYPE */ 1810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonSensorMode: /**< reference: OMX_PARAM_SENSORMODETYPE */ 1811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonInterleave: /** reference: OMX_PARAM_INTERLEAVETYPE */ 1812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorFormatConversion: /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */ 1813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonScale: /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ 1814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonImageFilter: /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */ 1815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorEnhancement: /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */ 1816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorKey: /**< reference: OMX_CONFIG_COLORKEYTYPE */ 1817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorBlend: /**< reference: OMX_CONFIG_COLORBLENDTYPE */ 1818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFrameStabilisation: /**< reference: OMX_CONFIG_FRAMESTABTYPE */ 1819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonRotate: /**< reference: OMX_CONFIG_ROTATIONTYPE */ 1820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonMirror: /**< reference: OMX_CONFIG_MIRRORTYPE */ 1821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOutputPosition: /**< reference: OMX_CONFIG_POINTTYPE */ 1822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonInputCrop: /**< reference: OMX_CONFIG_RECTTYPE */ 1823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOutputCrop: /**< reference: OMX_CONFIG_RECTTYPE */ 1824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonDigitalZoom: /**< reference: OMX_SCALEFACTORTYPE */ 1825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOpticalZoom: /**< reference: OMX_SCALEFACTORTYPE*/ 1826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonWhiteBalance: /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */ 1827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonExposure: /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */ 1828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonContrast: /**< reference to OMX_CONFIG_CONTRASTTYPE */ 1829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonBrightness: /**< reference to OMX_CONFIG_BRIGHTNESSTYPE */ 1830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonBacklight: /**< reference to OMX_CONFIG_BACKLIGHTTYPE */ 1831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonGamma: /**< reference to OMX_CONFIG_GAMMATYPE */ 1832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonSaturation: /**< reference to OMX_CONFIG_SATURATIONTYPE */ 1833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonLightness: /**< reference to OMX_CONFIG_LIGHTNESSTYPE */ 1834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonExclusionRect: /** reference: OMX_CONFIG_RECTTYPE */ 1835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonDithering: /**< reference: OMX_TIME_CONFIG_DITHERTYPE */ 1836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonPlaneBlend: /** reference: OMX_CONFIG_PLANEBLENDTYPE */ 1837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Reserved Configuration range */ 1839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexOtherStartUnused: 1840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamOtherPortFormat: /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */ 1841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigOtherPower: /**< reference: OMX_OTHER_CONFIG_POWERTYPE */ 1842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigOtherStats: /**< reference: OMX_OTHER_CONFIG_STATSTYPE */ 1843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Reserved Time range */ 1845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexTimeStartUnused: 1846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeScale: /**< reference: OMX_TIME_CONFIG_SCALETYPE */ 1847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeClockState: /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */ 1848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeActiveRefClock: /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */ 1849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentMediaTime: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only)*/ 1850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentWallTime: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only)*/ 1851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentAudioReference: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ 1852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentVideoReference: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ 1853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeMediaTimeRequest: /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */ 1854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeClientStartTime: /**<reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ 1855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimePosition: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE */ 1856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeSeekMode: /**< reference: OMX_TIME_CONFIG_SEEKMODETYPE */ 1857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Vendor specific area */ 1859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_2 1860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexVendorStartUnused: 1861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexIndexVendorStartUnused: 1863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Vendor specific structures should be in the range of 0xFF000000 1865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to 0xFFFFFFFF. This range is not broken out by vendor, so 1866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin private indexes are not guaranteed unique and therefore should 1867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin only be sent to the appropriate component. */ 1868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexMax: 1870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 1875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 1878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_SetConfig() Sets application callbacks to the component 1880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 1882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 1883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 1885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 1886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 1887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 1891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 1892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_SetConfig (OMX_HANDLETYPE hComp, 1894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 1895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 1896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pComponentConfig = NULL; 1899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 1900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 1901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nConfigIndexTemp = 0; 1902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComp, ComponentConfigStructure, OMX_TRUE); 1904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentConfig = (OMX_PARAM_PORTDEFINITIONTYPE*)ComponentConfigStructure; 1906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComp; 1907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->eState == OMX_StateInvalid) { 1910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 1911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRSTATE4(pComponentPrivate->dbg, "state invalid for SetConfig...............\n"); 1912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nConfigIndexTemp = nConfigIndex; 1916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (nConfigIndexTemp) { 1917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamPortDefinition: 1918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef = NULL; 1920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentConfig->nPortIndex == VIDDEC_INPUT_PORT) { 1921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pPortDef, OMX_PARAM_PORTDEFINITIONTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]); 1922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDef == NULL) { 1923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "malloc failed\n"); 1924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 1925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate)->pPortDef[VIDDEC_INPUT_PORT] = pPortDef; 1928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDef, pComponentConfig, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 1929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pPortDef); 1930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentConfig->nPortIndex == VIDDEC_OUTPUT_PORT) { 1932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pPortDef, OMX_PARAM_PORTDEFINITIONTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]); 1933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDef == NULL) { 1934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "malloc failed\n"); 1935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 1936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate)->pPortDef[VIDDEC_OUTPUT_PORT] = pPortDef; 1939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pPortDef, pComponentConfig, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 1940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pPortDef); 1941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VideoDecodeCustomConfigDebug:/**< reference: struct OMX_TI_Debug */ 1945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DBG_SETCONFIG(pComponentPrivate->dbg, ComponentConfigStructure); 1946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 1948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoMBErrorReporting:/**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */ 1949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 1951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263 || 1952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 1953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MBERRORREPORTINGTYPE* pMBErrorReportFrom = ComponentConfigStructure; 1954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_CONF_CHK_VERSION( pMBErrorReportFrom, OMX_CONFIG_MBERRORREPORTINGTYPE, eError, pComponentPrivate->dbg);*/ 1955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eMBErrorReport.bEnabled = pMBErrorReportFrom->bEnabled; 1956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMacroblocksPerFrame: 1963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamNumAvailableStreams: 1964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamActiveStream: 1965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamSuspensionPolicy: 1966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamComponentSuspended: 1967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexAutoPauseAfterCapture: 1968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCustomContentPipe: 1969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamDisableResourceConcealment: 1970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_2 1971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetadataItemCount: 1972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigContainerNodeCount: 1973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetadataItem: 1974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCounterNodeID: 1975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamMetadataFilterType: 1976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonTransitionEffect: 1977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexKhronosExtensions: 1978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataSize: 1980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataAtIndex: 1981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataAtKey: 1982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataNodeCount: 1983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataNode: 1984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigMetaDataItemCount: 1985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamMetadataKeyFilter: 1987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigPriorityMgmt: 1988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamStandardComponentRole: 1989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioChannelVolume: 1990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigFlashControl: 1991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelQuerySupported: 1992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoProfileLevelCurrent: 1993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoBitrate: 1994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoFramerate: 1995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoIntraVOPRefresh: 1996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoIntraMBRefresh: 1997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoSliceFMO: 1998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoAVCIntraPeriod: 1999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoNalSize: 2000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigVideoMacroBlockErrorMap: 2001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonExposureValue: 2002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOutputSize: 2003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonExtraQuantData: 2004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFocusRegion: 2005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFocusStatus: 2006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamContentURI: 2007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCaptureMode: 2008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCapturing: 2009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexComponentStartUnused: 2011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: /**< reference: OMX_PRIORITYMGMTTYPE */ 2012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioInit: /**< reference: OMX_PORT_PARAM_TYPE */ 2013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamImageInit: /**< reference: OMX_PORT_PARAM_TYPE */ 2014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoInit: /**< reference: OMX_PORT_PARAM_TYPE */ 2015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamOtherInit: /**< reference: OMX_PORT_PARAM_TYPE */ 2016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexPortStartUnused: 2018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE (*/ 2019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexReservedStartUnused: 2020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Audio parameters and configurations */ 2022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexAudioStartUnused: 2023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */ 2024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPcm: /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */ 2025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioAac: /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */ 2026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioRa: /**< reference: OMX_AUDIO_PARAM_RATYPE */ 2027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioMp3: /**< reference: OMX_AUDIO_PARAM_MP3TYPE */ 2028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioAdpcm: /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */ 2029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioG723: /**< reference: OMX_AUDIO_PARAM_G723TYPE */ 2030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioG729: /**< reference: OMX_AUDIO_PARAM_G729TYPE */ 2031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioAmr: /**< reference: OMX_AUDIO_PARAM_AMRTYPE */ 2032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioWma: /**< reference: OMX_AUDIO_PARAM_WMATYPE */ 2033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioSbc: /**< reference: OMX_AUDIO_PARAM_SBCTYPE */ 2034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioMidi: /**< reference: OMX_AUDIO_PARAM_MIDITYPE */ 2035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioGsm_FR: /**< reference: OMX_AUDIO_PARAM__GSMFRTYPE */ 2036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioMidiLoadUserSound: /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */ 2037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioG726: /**< reference: OMX_AUDIO_PARAM_G726TYPE */ 2038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioGsm_EFR: /**< reference: OMX_AUDIO_PARAM__GSMEFRTYPE */ 2039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioGsm_HR: /**< reference: OMX_AUDIO_PARAM__GSMHRTYPE */ 2040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPdc_FR: /**< reference: OMX_AUDIO_PARAM__PDCFRTYPE */ 2041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPdc_EFR: /**< reference: OMX_AUDIO_PARAM__PDCEFRTYPE */ 2042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioPdc_HR: /**< reference: OMX_AUDIO_PARAM__PDCHRTYPE */ 2043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioTdma_FR: /**< reference: OMX_AUDIO_PARAM__TDMAFRTYPE */ 2044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioTdma_EFR: /**< reference: OMX_AUDIO_PARAM__TDMAEFRTYPE */ 2045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioQcelp8: /**< reference: OMX_AUDIO_PARAM__QCELP8TYPE */ 2046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioQcelp13: /**< reference: OMX_AUDIO_PARAM__QCELP13TYPE */ 2047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioEvrc: /**< reference: OMX_AUDIO_PARAM__EVRCTYPE */ 2048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioSmv: /**< reference: OMX_AUDIO_PARAM__SMVTYPE */ 2049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamAudioVorbis: /**< reference: OMX_AUDIO_PARAM__VORBISTYPE */ 2050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiImmediateEvent: /**< OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */ 2052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiControl: /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */ 2053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiSoundBankProgram: /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */ 2054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiStatus: /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */ 2055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiMetaEvent: /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */ 2056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMidiMetaEventData: /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */ 2057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioVolume: /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */ 2058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioBalance: /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */ 2059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioChannelMute: /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */ 2060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioMute: /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */ 2061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioLoudness: /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */ 2062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioEchoCancelation: /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */ 2063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioNoiseReduction: /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */ 2064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioBass: /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */ 2065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioTreble: /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */ 2066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioStereoWidening: /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */ 2067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioChorus: /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */ 2068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioEqualizer: /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */ 2069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigAudioReverberation: /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */ 2070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Image specific parameters and configurations */ 2072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexImageStartUnused: 2073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamImagePortFormat: /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */ 2074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamFlashControl: /**< refer to OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ 2075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigFocusControl: /**< refer to OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */ 2076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamQFactor: /**< refer to OMX_IMAGE_PARAM_QFACTORTYPE */ 2077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamQuantizationTable: /**< refer to OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */ 2078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamHuffmanTable: /**< For jpeg, refer to OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */ 2079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Video specific parameters and configurations */ 2081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexVideoStartUnused: 2082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoPortFormat: /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */ 2083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoQuantization: /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONPARAMTYPE */ 2084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoFastUpdate: /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */ 2085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoBitrate: /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */ 2086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMotionVector: /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */ 2087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoIntraRefresh: /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */ 2088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoErrorCorrection: /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */ 2089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoVBSMC: /**< reference:OMX_VIDEO_PARAM_VBSMCTYPE */ 2090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMpeg2: /**< reference:OMX_VIDEO_PARAM_MPEG2TYPE */ 2091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoMpeg4: /**< reference: OMX_VIDEO_CONFIG_MPEG4TYPE */ 2092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoWmv: /**< reference:OMX_VIDEO_PARAM_WMVTYPE */ 2093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoRv: /**< reference:OMX_VIDEO_PARAM_RVTYPE */ 2094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoAvc: /**< reference:OMX_VIDEO_PARAM_AVCTYPE */ 2095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamVideoH263: /**< reference:OMX_VIDEO_PARAM_H263TYPE */ 2096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Image & Video common Configurations */ 2098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexCommonStartUnused: 2099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonDeblocking: /**< reference: OMX_PARAM_DEBLOCKINGTYPE */ 2100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonSensorMode: /**< reference: OMX_PARAM_SENSORMODETYPE */ 2101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamCommonInterleave: /** reference: OMX_PARAM_INTERLEAVETYPE */ 2102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorFormatConversion: /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */ 2103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonScale: /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ 2104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonImageFilter: /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */ 2105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorEnhancement: /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */ 2106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorKey: /**< reference: OMX_CONFIG_COLORKEYTYPE */ 2107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonColorBlend: /**< reference: OMX_CONFIG_COLORBLENDTYPE */ 2108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonFrameStabilisation: /**< reference: OMX_CONFIG_FRAMESTABTYPE */ 2109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonRotate: /**< reference: OMX_CONFIG_ROTATIONTYPE */ 2110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonMirror: /**< reference: OMX_CONFIG_MIRRORTYPE */ 2111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOutputPosition: /**< reference: OMX_CONFIG_POINTTYPE */ 2112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonInputCrop: /**< reference: OMX_CONFIG_RECTTYPE */ 2113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOutputCrop: /**< reference: OMX_CONFIG_RECTTYPE */ 2114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonDigitalZoom: /**< reference: OMX_SCALEFACTORTYPE */ 2115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonOpticalZoom: /**< reference: OMX_SCALEFACTORTYPE*/ 2116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonWhiteBalance: /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */ 2117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonExposure: /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */ 2118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonContrast: /**< reference to OMX_CONFIG_CONTRASTTYPE */ 2119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonBrightness: /**< reference to OMX_CONFIG_BRIGHTNESSTYPE */ 2120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonBacklight: /**< reference to OMX_CONFIG_BACKLIGHTTYPE */ 2121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonGamma: /**< reference to OMX_CONFIG_GAMMATYPE */ 2122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonSaturation: /**< reference to OMX_CONFIG_SATURATIONTYPE */ 2123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonLightness: /**< reference to OMX_CONFIG_LIGHTNESSTYPE */ 2124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonExclusionRect: /** reference: OMX_CONFIG_RECTTYPE */ 2125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonDithering: /**< reference: OMX_TIME_CONFIG_DITHERTYPE */ 2126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigCommonPlaneBlend: /** reference: OMX_CONFIG_PLANEBLENDTYPE */ 2127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Reserved Configuration range */ 2129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexOtherStartUnused: 2130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexParamOtherPortFormat: /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */ 2131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigOtherPower: /**< reference: OMX_OTHER_CONFIG_POWERTYPE */ 2132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigOtherStats: /**< reference: OMX_OTHER_CONFIG_STATSTYPE */ 2133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Reserved Time range */ 2135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexTimeStartUnused: 2136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeScale: /**< reference: OMX_TIME_CONFIG_SCALETYPE */ 2137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeClockState: /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */ 2138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeActiveRefClock: /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */ 2139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentMediaTime: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only)*/ 2140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentWallTime: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only)*/ 2141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentAudioReference: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ 2142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeCurrentVideoReference: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ 2143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeMediaTimeRequest: /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */ 2144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeClientStartTime: /**<reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ 2145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimePosition: /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE */ 2146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexConfigTimeSeekMode: /**< reference: OMX_TIME_CONFIG_SEEKMODETYPE */ 2147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Vendor specific area */ 2149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_2 2150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexVendorStartUnused: 2151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 2152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexIndexVendorStartUnused: 2153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* Vendor specific structures should be in the range of 0xFF000000 2154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to 0xFFFFFFFF. This range is not broken out by vendor, so 2155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin private indexes are not guaranteed unique and therefore should 2156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin only be sent to the appropriate component. */ 2157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_IndexMax: 2159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 2160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_GetState() Sets application callbacks to the component 2171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 2173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 2174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 2176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 2177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 2178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 21841348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wongstatic OMX_ERRORTYPE VIDDEC_GetState (OMX_HANDLETYPE hComponent, 2185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE* pState) 2186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 21871348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong OMX_ERRORTYPE eError = OMX_ErrorNone; 2188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 21891348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 21901348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong struct timespec abs_time = {0,0}; 21911348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong int nPendingStateChangeRequests = 0; 21921348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong int ret = 0; 21931348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* Set to sufficiently high value */ 21941348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong int mutex_timeout = 3; 2195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 21961348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(hComponent == NULL || pState == NULL) { 21971348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorBadParameter; 21981348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 2199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 22001348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong pHandle = (OMX_COMPONENTTYPE*)hComponent; 22011348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 2202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Retrieve current state */ 2204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pHandle && pHandle->pComponentPrivate) { 22051348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* Check for any pending state transition requests */ 22061348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(pthread_mutex_lock(&pComponentPrivate->mutexStateChangeRequest)) { 22071348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 22081348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22091348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong nPendingStateChangeRequests = pComponentPrivate->nPendingStateChangeRequests; 22101348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(!nPendingStateChangeRequests) { 22111348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) { 22121348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 22131348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22141348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 22151348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* No pending state transitions */ 22161348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong *pState = ((VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate)->eState; 22171348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong eError = OMX_ErrorNone; 22181348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22191348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong else { 22201348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* Wait for component to complete state transition */ 22211348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong clock_gettime(CLOCK_REALTIME, &abs_time); 22221348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong abs_time.tv_sec += mutex_timeout; 22231348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong abs_time.tv_nsec = 0; 22241348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong ret = pthread_cond_timedwait(&(pComponentPrivate->StateChangeCondition), &(pComponentPrivate->mutexStateChangeRequest), &abs_time); 22251348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if (!ret) { 22261348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* Component has completed state transitions*/ 22271348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong *pState = ((VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate)->eState; 22281348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) { 22291348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorUndefined; 22301348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22311348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong eError = OMX_ErrorNone; 22321348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22331348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong else if(ret == ETIMEDOUT) { 22341348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* Unlock mutex in case of timeout */ 22351348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest); 22361348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong return OMX_ErrorTimeout; 22371348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22381348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22391348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong } 22401348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong else { 22411348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong eError = OMX_ErrorInvalidComponent; 22421348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong *pState = OMX_StateInvalid; 2243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 22441348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 2245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_EmptyThisBuffer() Sets application callbacks to the component 2251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 2253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 2254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 2256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 2257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 2258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_EmptyThisBuffer (OMX_HANDLETYPE pComponent, 2265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffHead) 2266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = NULL; 2269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 2270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_PRIVATE* pBufferPrivate = NULL; 2271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 ret = 0; 2272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(pComponent, OMX_TRUE, OMX_TRUE); 2274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE *)pComponent; 2276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 2277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "+++Entering pHandle 0x%p pBuffer 0x%p Index %lu\n",pComponent, 2279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead, pBuffHead->nInputPortIndex); 2280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERF, 2283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->pBuffer, 2284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->nFilledLen, 2285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate->pInPortDef->bEnabled %d\n", 2289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->bEnabled); 2290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pComponentPrivate->pInPortDef->bEnabled) 2291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorIncorrectStateOperation); 2292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBuffHead->nInputPortIndex != VIDDEC_INPUT_PORT) 2294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorBadPortIndex); 2295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->eState != OMX_StateExecuting && 2297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eState != OMX_StatePause && 2298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eState != OMX_StateIdle) 2299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorIncorrectStateOperation); 2300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHK_VERSION(pBuffHead, OMX_BUFFERHEADERTYPE, eError, pComponentPrivate->dbg); 2302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((pComponentPrivate->bParserEnabled == OMX_FALSE) && 2304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->bFirstHeader == OMX_FALSE) && 2305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pBuffHead->nFilledLen > pBuffHead->nAllocLen)) { 2306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->nFilledLen = pBuffHead->nAllocLen; 2307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate = (VIDDEC_BUFFER_PRIVATE* )pBuffHead->pInputPortPrivate; 2310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = pBufferPrivate->eBufferOwner; 2311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->eBufferOwner = VIDDEC_BUFFER_WITH_COMPONENT; 2312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nInputBCountApp++; 2313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "Writing pBuffer 0x%p OldeBufferOwner %ld nAllocLen %lu nFilledLen %lu eBufferOwner %d\n", 2315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead, ret,pBuffHead->nAllocLen,pBuffHead->nFilledLen,pBufferPrivate->eBufferOwner); 2316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = write (pComponentPrivate->filled_inpBuf_Q[VIDDEC_PIPE_WRITE], &(pBuffHead), sizeof(pBuffHead)); 2318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ret == -1) { 2319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRCOMM4(pComponentPrivate->dbg, "Error in Writing to the Data pipe\n"); 2320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 2321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "---Exiting 0x%x\n",eError); 2326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_FillThisBuffer() Sets application callbacks to the component 2332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 2334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 2335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 2337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 2338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 2339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_FillThisBuffer (OMX_HANDLETYPE pComponent, 2346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffHead) 2347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = NULL; 2350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 2351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_PRIVATE* pBufferPrivate = NULL; 2352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int ret = 0; 2353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(pComponent, pBuffHead, OMX_TRUE); 2354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE *)pComponent; 2356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 2357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "+++Entering pHandle 0x%p pBuffer 0x%p Index %lu\n",pComponent, 2359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead, pBuffHead->nOutputPortIndex); 2360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERF, 2363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->pBuffer, 2364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 2365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate->pOutPortDef->bEnabled %d\n", 2369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef->bEnabled); 2370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pComponentPrivate->pOutPortDef->bEnabled) 2371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorIncorrectStateOperation); 2372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBuffHead->nOutputPortIndex != 0x1) 2374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorBadPortIndex); 2375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->eState != OMX_StateExecuting && 2377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eState != OMX_StatePause && 2378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eState != OMX_StateIdle) 2379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_SET_ERROR_BAIL(eError, OMX_ErrorIncorrectStateOperation); 2380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHK_VERSION(pBuffHead, OMX_BUFFERHEADERTYPE, eError, pComponentPrivate->dbg); 2382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((pComponentPrivate->bParserEnabled == OMX_FALSE) && 2384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->bFirstHeader == OMX_FALSE) && 2385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pBuffHead->nFilledLen > pBuffHead->nAllocLen)) { 2386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "bFirstHeader: nFilledLen= %lu <- nAllocLen= %lu\n", pBuffHead->nFilledLen, pBuffHead->nAllocLen); 2387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->nFilledLen = pBuffHead->nAllocLen; 2389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate = (VIDDEC_BUFFER_PRIVATE* )pBuffHead->pOutputPortPrivate; 2392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = pBufferPrivate->eBufferOwner; 2393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->eBufferOwner = VIDDEC_BUFFER_WITH_COMPONENT; 2394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutputBCountApp++; 2395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->nFilledLen = 0; 2396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pBuffHead->nFlags = 0;*/ 2397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "Writing pBuffer 0x%p OldeBufferOwner %d eBufferOwner %d nFilledLen %lu\n", 2398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead, ret,pBufferPrivate->eBufferOwner,pBuffHead->nFilledLen); 2399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = write (pComponentPrivate->free_outBuf_Q[1], &(pBuffHead), sizeof (pBuffHead)); 2400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ret == -1) { 2401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRCOMM4(pComponentPrivate->dbg, "Error in Writing to the Data pipe\n"); 2402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 2403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "---Exiting 0x%x\n",eError); 2408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_ComponentDeinit() Sets application callbacks to the component 2414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 2416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 2417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 2419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 2420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 2421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_ComponentDeInit(OMX_HANDLETYPE hComponent) 2428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 2431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 2432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMMANDTYPE Cmd = OMX_CommandStateSet; 2433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nParam1 = -1; 2434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 buffcount = 0; 2435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 i = 0; 2436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iCount = 0; 2437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, OMX_TRUE, OMX_TRUE); 2439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComponent; 2441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 2442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERF, 2445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_BoundaryStart | PERF_BoundaryCleanup); 2446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingCommand(pComponentPrivate->pPERF, 2447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Cmd, nParam1, PERF_ModuleComponent); 2448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload && 2450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pModLCML != NULL && 2451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pLCML != NULL){ 2452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_DSP_INTERFACE *pLcmlHandle = NULL; 2453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLCML; 2454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, EMMCodecControlDestroy, NULL); 2455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eLCMLState = VidDec_LCML_State_Destroy; 2456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->eLCMLState != VidDec_LCML_State_Unload && 2458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pModLCML != NULL){ 2459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pModLCML != NULL){ 2460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin dlclose(pComponentPrivate->pModLCML); 2461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pModLCML = NULL; 2462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pLCML = NULL; 2463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eLCMLState = VidDec_LCML_State_Unload; 2464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = write(pComponentPrivate->cmdPipe[VIDDEC_PIPE_WRITE], &Cmd, sizeof(Cmd)); 2467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError == -1) { 2468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 2469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = write(pComponentPrivate->cmdDataPipe[VIDDEC_PIPE_WRITE], &nParam1, sizeof(nParam1)); 2472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError == -1) { 2473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 2474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Stop_ComponentThread(pHandle); 2478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error returned from the Component\n"); 2480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2482d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato if (pComponentPrivate->pInternalConfigBufferAVC != NULL) 2483d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato free(pComponentPrivate->pInternalConfigBufferAVC); 2484d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato 2485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (iCount = 0; iCount < MAX_PRIVATE_BUFFERS; iCount++) { 2486d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato if(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr != NULL) { 2487d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_BUFFERHEADERTYPE* pBuffHead = NULL; 2488d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato pBuffHead = pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr; 2489d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato if(pBuffHead != NULL){ 2490d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato if(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->bAllocByComponent == OMX_TRUE){ 2491d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBuffHead->pBuffer,OMX_U8); 2492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2493d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato free(pBuffHead); 2494d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato pBuffHead = NULL; 2495d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr = NULL; 2496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2500d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato 2501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (iCount = 0; iCount < MAX_PRIVATE_BUFFERS; iCount++) { 2502d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato if(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr != NULL) { 2503d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_BUFFERHEADERTYPE* pBuffHead = NULL; 2504d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_U8* pTemp = NULL; 2505d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato pBuffHead = pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr; 2506d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato if(pBuffHead != NULL){ 2507d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato if(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->bAllocByComponent == OMX_TRUE){ 2508d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBuffHead->pBuffer,OMX_U8); 2509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2510d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato free(pBuffHead); 2511d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato pBuffHead = NULL; 2512d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[iCount]->pBufferHdr = NULL; 2513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 2518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->eRMProxyState == VidDec_RMPROXY_State_Registered){ 2519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR2(pComponentPrivate->dbg, "memory usage 0 %d : %d bytes\n",(unsigned int)pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0],(unsigned int)VIDDEC_MEMUSAGE); 2520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 2521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_H264_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL); 2522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n"); 2524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) { 2527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_WMV_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL); 2528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n"); 2530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4) { 2533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG4_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL); 2534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n"); 2536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) { 2539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_H263_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL); 2540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n"); 2542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) { 2545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG2_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL); 2546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n"); 2548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 2551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (VIDDEC_SPARKCHECK) { 2552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewSendCommand(pComponentPrivate->pHandle, RMProxy_FreeResource, OMX_MPEG4_Decode_COMPONENT, 0, VIDDEC_MEMUSAGE, NULL); 2553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n"); 2555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedSetting; 2560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Load; 2563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->eRMProxyState != VidDec_RMPROXY_State_Unload){ 2565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_DeinitalizeEx(OMX_COMPONENTTYPE_VIDEO); 2566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRMGR4(pComponentPrivate->dbg, "Error returned from destroy ResourceManagerProxy thread\n"); 2568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eRMProxyState = VidDec_RMPROXY_State_Unload; 2570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_CircBuf_DeInit(pComponentPrivate, VIDDEC_CBUFFER_TIMESTAMP, VIDDEC_INPUT_PORT); 2574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Queue_Free(&pComponentPrivate->qBuffMark); 2575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Queue_Free(&pComponentPrivate->qCmdMarkData); 2576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Queue_Free(&pComponentPrivate->qBytesSent); 2577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Free Resources */ 2578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pPortParamType) { 2579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pPortParamType); 2580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortParamType = NULL; 2581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __STD_COMPONENT__ 2583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pPortParamTypeAudio) { 2584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pPortParamTypeAudio); 2585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortParamTypeAudio = NULL; 2586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pPortParamTypeImage) { 2588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pPortParamTypeImage); 2589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortParamTypeImage = NULL; 2590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pPortParamTypeOthers) { 2592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pPortParamTypeOthers); 2593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortParamTypeOthers = NULL; 2594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffcount = MAX_PRIVATE_BUFFERS; 2598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i = 0; i < buffcount; i++) { 2599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]) { 2600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "BufferPrivate cleared 0x%p\n", 2601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]); 2602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i]); 2603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]->pBufferPrivate[i] = NULL; 2604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffcount = MAX_PRIVATE_BUFFERS; 2608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i = 0; i < buffcount; i++) { 2609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]) { 2610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "BufferPrivate cleared 0x%p\n", 2611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]); 2612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i]); 2613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->pBufferPrivate[i] = NULL; 2614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]) { 2617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]); 2618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT] = NULL; 2619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]) { 2622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]); 2623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT] = NULL; 2624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pInPortDef) { 2627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pInPortDef); 2628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef = NULL; 2629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pOutPortDef) { 2631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pOutPortDef); 2632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortDef = NULL; 2633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pInPortFormat) { 2635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pInPortFormat); 2636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortFormat = NULL; 2637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pOutPortFormat) { 2639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pOutPortFormat); 2640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutPortFormat = NULL; 2641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pPriorityMgmt) { 2643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pPriorityMgmt); 2644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPriorityMgmt = NULL; 2645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pInBufSupplier) { 2647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pInBufSupplier); 2648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInBufSupplier = NULL; 2649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pOutBufSupplier) { 2651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pOutBufSupplier); 2652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutBufSupplier = NULL; 2653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pMpeg4 != NULL) { 2655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pMpeg4); 2656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMpeg4 = NULL; 2657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pMpeg2 != NULL) { 2659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pMpeg2); 2660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMpeg2 = NULL; 2661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pH264 != NULL) { 2663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pH264); 2664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pH264 = NULL; 2665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pH263 != NULL) { 2667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pH263); 2668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pH263 = NULL; 2669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pWMV != NULL) { 2671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pWMV); 2672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pWMV = NULL; 2673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pDeblockingParamType != NULL) { 2675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pDeblockingParamType); 2676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pDeblockingParamType = NULL; 2677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 2679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pPVCapabilityFlags != NULL) { 2680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pPVCapabilityFlags); 2681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPVCapabilityFlags = NULL; 2682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->cComponentName != NULL) { 2685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->cComponentName); 2686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cComponentName = NULL; 2687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0] = 0; 2690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1] = 0; 2691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel2] = 0; 2692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel3] = 0; 2693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4] = 0; 2694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERF, 2697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_BoundaryComplete | PERF_BoundaryCleanup); 2698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Done(pComponentPrivate->pPERF); 2699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DBG_CLOSE(pComponentPrivate->dbg); 2702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 2704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->eFirstBuffer.pFirstBufferSaved){ 2705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->eFirstBuffer.pFirstBufferSaved); 2706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eFirstBuffer.pFirstBufferSaved = NULL; 2707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eFirstBuffer.bSaveFirstBuffer = OMX_FALSE; 2708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->eFirstBuffer.nFilledLen = 0; 2709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pCodecData){ 2711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentPrivate->pCodecData); 2712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCodecData = NULL; 2713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nCodecDataSize = 0; 2714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_MUTEX_DESTROY(pComponentPrivate->sMutex); 2716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_DESTROY(pComponentPrivate->sInSemaphore); 2717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_DESTROY(pComponentPrivate->sOutSemaphore); 2718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 27191348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 27201348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong pthread_mutex_destroy(&pComponentPrivate->mutexStateChangeRequest); 27211348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong pthread_cond_destroy(&pComponentPrivate->StateChangeCondition); 27221348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 2723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pUalgParams != NULL){ 2724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pTemp = NULL; 2725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = (OMX_U8*)(pComponentPrivate->pUalgParams); 2726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp -= VIDDEC_PADDING_HALF; 2727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pUalgParams = (OMX_PTR*)pTemp; 2728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->pUalgParams); 2729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pUalgParams = NULL; 2730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pHandle->pComponentPrivate != NULL) { 2732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pHandle->pComponentPrivate); 2733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pComponentPrivate = NULL; 2734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = NULL; 2735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_UseBuffer() 2743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 2748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 2749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 2750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_UseBuffer(OMX_IN OMX_HANDLETYPE hComponent, 2757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 2758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 2759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 2760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 2761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U8* pBuffer) 2762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 2765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 2766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef = NULL; 2767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PORT_TYPE* pCompPort = NULL; 2768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 pBufferCnt = 0; 2769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, pBuffer, OMX_TRUE); 2771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComponent; 2773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 2774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "+++Entering pHandle 0x%p ppBufferHdr 0x%p pBuffer 0x%p nPortIndex 0x%lx nSizeBytes 0x%lx\n", 2776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, *ppBufferHdr, pBuffer, nPortIndex, nSizeBytes); 2777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERF, 2780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer, 2781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nSizeBytes, 2782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 2786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort = pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]; 2787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferCnt = pCompPort->nBufferCnt; 2788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pInPortDef; 2789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 2791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort = pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]; 2792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferCnt = pCompPort->nBufferCnt; 2793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pOutPortDef; 2794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 2797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pPortDef->bEnabled){ 2801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error: port disabled\n"); 2802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 2803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pPortDef->nBufferSize %d nSizeBytes %d %d\n", (int )pPortDef->nBufferSize, 2807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (int )nSizeBytes,(int )(pPortDef->nBufferSize > nSizeBytes)); 2808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->nBufferSize = nSizeBytes; 2809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(nSizeBytes != pPortDef->nBufferSize || pPortDef->bPopulated){ 2810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER4(pComponentPrivate->dbg, "Error: badparameter\n"); 2811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 2812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr, OMX_BUFFERHEADERTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 2816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr) { 2817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 2818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 2819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 2820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 2821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 2822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError, 2823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMajor, 2824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *ppBufferHdr = pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr; 2829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset(*ppBufferHdr, 0, sizeof(OMX_BUFFERHEADERTYPE)); 2830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_INIT_STRUCT(pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr, OMX_BUFFERHEADERTYPE, pComponentPrivate->dbg); 2831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->pBuffer = pBuffer; 2833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nAllocLen = nSizeBytes; 2834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->pAppPrivate = pAppPrivate; 2835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->pMarkData = NULL; 2836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef VIDDEC_WMVPOINTERFIXED 2837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM && 2838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV && 2839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->ProcessMode == 0 && 2840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex == VIDDEC_INPUT_PORT) { 2841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* vc-1 fix */ 2842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nOffset = VIDDEC_WMV_BUFFER_OFFSET; 2843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPort->hTunnelComponent != NULL) { 2846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDef->eDir == OMX_DirInput) { 2847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (*ppBufferHdr)->nInputPortIndex = nPortIndex; 2848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nOutputPortIndex = pComponentPrivate->pCompPort[nPortIndex]->nTunnelPort; 2849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nInputPortIndex = pComponentPrivate->pCompPort[nPortIndex]->nTunnelPort; 2852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (*ppBufferHdr)->nOutputPortIndex = nPortIndex; 2853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 2857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nInputPortIndex = VIDDEC_INPUT_PORT; 2858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nOutputPortIndex = VIDDEC_NOPORT; 2859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nInputPortIndex = VIDDEC_NOPORT; 2862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->nOutputPortIndex = VIDDEC_OUTPUT_PORT; 2863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 2867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->pInputPortPrivate = pComponentPrivate->pCompPort[nPortIndex]->pBufferPrivate[pBufferCnt]; 2868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*ppBufferHdr)->pOutputPortPrivate = pComponentPrivate->pCompPort[nPortIndex]->pBufferPrivate[pBufferCnt]; 2871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[nPortIndex]->pBufferPrivate[pBufferCnt]->bAllocByComponent = OMX_FALSE; 2873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPort->hTunnelComponent != NULL) { 2875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[nPortIndex]->pBufferPrivate[pBufferCnt]->eBufferOwner = VIDDEC_BUFFER_WITH_TUNNELEDCOMP; 2876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pCompPort[nPortIndex]->pBufferPrivate[pBufferCnt]->eBufferOwner = VIDDEC_BUFFER_WITH_CLIENT; 2879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "ppBufferHdr 0x%p pBuffer 0x%p nAllocLen %lu eBufferOwner %d\n", 2882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *ppBufferHdr, pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr->pBuffer, (*ppBufferHdr)->nAllocLen, 2883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->eBufferOwner); 2884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Allocate_DSPResources(pComponentPrivate, nPortIndex); 2886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 2888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 2889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 2890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 2891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError, 2892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMajor, 2893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->nBufferCnt++; 2898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPort->nBufferCnt == pPortDef->nBufferCountActual) { 2900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 2901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 2902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 2903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sInSemaphore); 2904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sOutSemaphore); 2907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "---Exiting eError 0x%x\n", eError); 2912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_FreeBuffer() 2918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 2923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 2924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 2925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 2930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_FreeBuffer (OMX_IN OMX_HANDLETYPE hComponent, 2932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 2933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffHead) 2934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 2937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 2938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_PRIVATE* pBufferPrivate = NULL; 2939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDefIn = NULL; 2940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDefOut = NULL; 2941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PORT_TYPE* pCompPort = NULL; 2942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef = NULL; 2943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pTemp = NULL; 2944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 i = 0; 2945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PORT_TYPE* pInCompPort = NULL; 2946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 pInBufferCnt = 0; 2947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PORT_TYPE* pOutCompPort = NULL; 2948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 pOutBufferCnt = 0; 2949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 buffcount = 0; 2950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE TunnelState = OMX_StateInvalid; 2951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bTransIdle = OMX_FALSE; 2952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, pBuffHead, OMX_TRUE); 2954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComponent; 2956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 2957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "+++Entering pHandle 0x%p pBuffHead 0x%p nPortIndex %lu nFilledLen %lx nAllocLen %lx\n", 2959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, pBuffHead, nPortIndex,pBuffHead->nFilledLen,pBuffHead->nAllocLen); 2960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefIn = pComponentPrivate->pInPortDef; 2962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefOut = pComponentPrivate->pOutPortDef; 2963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInCompPort = pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]; 2965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInBufferCnt = pInCompPort->nBufferCnt; 2966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutCompPort = pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]; 2967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutBufferCnt = pOutCompPort->nBufferCnt; 2968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 2970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pInPortDef; 2971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort = pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]; 2972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate = pBuffHead->pInputPortPrivate; 2973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 2975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pOutPortDef; 2976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort = pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]; 2977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate = pBuffHead->pOutputPortPrivate; 2978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 2981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*if(pPortDef->bEnabled && pComponentPrivate->eState != OMX_StateIdle){ 2985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error: port disabled\n"); 2986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 2987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }*/ 2989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 2991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) { 2992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 2993d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 2994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 2995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 2997d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 2998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 2999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 3002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 3006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (VIDDEC_SPARKCHECK) { 3007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 3008d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 3012d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 3017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) { 3022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 3023d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 3027d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 3032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 3036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 3037d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 3041d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 3046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) { 3050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 3051d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 3054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 3055d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato OMX_MEMFREE_STRUCT_DSPALIGN(pBufferPrivate->pUalgParam,OMX_PTR); 3056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = 0; 3057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 3060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error: Invalid Compression Type\n"); 3065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "bAllocByComponent 0x%x pBuffer 0x%p\n", (int )pBufferPrivate->bAllocByComponent, 3068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->pBuffer); 3069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufferPrivate->bAllocByComponent == OMX_TRUE) { 3070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBuffHead->pBuffer != NULL){ 3071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 3072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate->pPERFcomp, 3073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->pBuffer, 3074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->nAllocLen, 3075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleMemory); 3076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)(pBuffHead->pBuffer); 3079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_WMVPOINTERFIXED 3080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV && 3081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nPortIndex == VIDDEC_INPUT_PORT && 3082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ProcessMode == 0) { 3083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp -= VIDDEC_WMV_BUFFER_OFFSET; 3084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "Removing extra wmv padding %d pBuffer 0x%p\n", VIDDEC_WMV_BUFFER_OFFSET, 3085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp); 3086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp -= VIDDEC_PADDING_HALF; 3089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->pBuffer = (OMX_U8*)pTemp; 3090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pBuffHead->pBuffer); 3091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead->pBuffer = NULL; 3092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffcount = pPortDef->nBufferCountActual; 3096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i = 0; i < buffcount; i++){ 3097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPort->pBufferPrivate[i]->pBufferHdr == pBuffHead){ 3098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "buffcount %lu eBufferOwner 0x%x\n", i, pCompPort->pBufferPrivate[i]->eBufferOwner); 3099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pCompPort->pBufferPrivate[i]->pBufferHdr); 3100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[i]->pBufferHdr = NULL; 3101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffHead = NULL; 3102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->hTunnelComponent != NULL){ 3105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_GetState(pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->hTunnelComponent,&TunnelState); 3106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) { 3107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "GetState Invalid return\n"); 3108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "TunnelState %d\n", TunnelState); 3111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((pComponentPrivate->eState == OMX_StateIdle) && (pComponentPrivate->eIdleToLoad == OMX_StateLoaded)){ 3113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bTransIdle = OMX_TRUE; 3114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bTransIdle = OMX_FALSE; 3117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 3119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInBufferCnt--; 3120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInCompPort->nBufferCnt--; 3121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pInBufferCnt == 0) { 3122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefIn->bPopulated = OMX_FALSE; 3123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 3124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 3125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sInSemaphore); 3126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sOutSemaphore); 3129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (bTransIdle) { 3132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin i = 0; 3133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ((!pPortDef->bEnabled && (pComponentPrivate->eState == OMX_StateIdle || 3135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->eState == OMX_StateExecuting 3136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin || pComponentPrivate->eState == OMX_StatePause))) { 3137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin i = 0; 3138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->eState != OMX_StateInvalid) { 3141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle, 3142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 3143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 3144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorPortUnpopulated, 3145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 3146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "Input Port Unpopulated"); 3147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 3153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutBufferCnt--; 3154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutCompPort->nBufferCnt--; 3155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pOutBufferCnt == 0) { 3156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefOut->bPopulated = OMX_FALSE; 3157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 3158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 3159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sInSemaphore); 3160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sOutSemaphore); 3163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->hTunnelComponent == NULL) && bTransIdle) { 3166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin i = 0; 3167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if ((pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]->hTunnelComponent != NULL) && (TunnelState == OMX_StateIdle)) { 3169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin i = 0; 3170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ((!pPortDef->bEnabled && (pComponentPrivate->eState == OMX_StateIdle || 3172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->eState == OMX_StateExecuting 3173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin || pComponentPrivate->eState == OMX_StatePause))) { 3174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin i = 0; 3175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->eState != OMX_StateInvalid) { 3178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle, 3179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 3180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 3181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorPortUnpopulated, 3182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 3183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "Output Port Unpopulated"); 3184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 3190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "---Exiting eError 0x%x\n", eError); 3191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_AllocateBuffer() 3197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 3206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 3207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 3208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 3211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffHead, 3212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 3213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 3214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes) 3215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 3218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 3219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef = NULL; 3220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PORT_TYPE* pCompPort = NULL; 3221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pTemp = NULL; 3222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 pBufferCnt = 0; 3223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTempSizeBytes = 0; 3224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nTempSizeBytes = nSizeBytes; 3225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, OMX_TRUE, OMX_TRUE); 3227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComponent; 3229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 3230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "+++Entering pHandle 0x%p pBuffHead 0x%p nPortIndex 0x%lx nSizeBytes 0x%lx\n", 3232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, *pBuffHead, nPortIndex, nSizeBytes); 3233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_WMVPOINTERFIXED 3235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV && 3236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex == VIDDEC_INPUT_PORT && 3237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ProcessMode == 0) { 3238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nTempSizeBytes += VIDDEC_WMV_BUFFER_OFFSET; 3239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "Adding extra wmv buffer add %d size %lu\n", VIDDEC_WMV_BUFFER_OFFSET, nTempSizeBytes); 3240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 3243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort = pComponentPrivate->pCompPort[VIDDEC_INPUT_PORT]; 3244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferCnt = pCompPort->nBufferCnt; 3245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pInPortDef; 3246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 3248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort = pComponentPrivate->pCompPort[VIDDEC_OUTPUT_PORT]; 3249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferCnt = pCompPort->nBufferCnt; 3250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pOutPortDef; 3251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 3254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT(pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr, OMX_BUFFERHEADERTYPE,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr) { 3259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 3261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 3262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 3263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError, 3264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMajor, 3265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 3266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pBuffHead = pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr; 3270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset(*pBuffHead, 0, sizeof(OMX_BUFFERHEADERTYPE)); 3271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_INIT_STRUCT(pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr, OMX_BUFFERHEADERTYPE, pComponentPrivate->dbg); 3272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr->pBuffer, OMX_U8, nSizeBytes + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr->pBuffer) { 3274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 3276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 3277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 3278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError, 3279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMajor, 3280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 3281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr->pBuffer; 3284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_WMVPOINTERFIXED 3286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV && 3287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex == VIDDEC_INPUT_PORT && 3288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ProcessMode == 0) { 3289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_WMV_BUFFER_OFFSET; 3290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->pTempBuffer = (OMX_U8*)pTemp; 3291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nOffset = 0; 3292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "Adding extra wmv padding %d pBuffer 0x%p\n", VIDDEC_WMV_BUFFER_OFFSET, 3293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp); 3294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr->pBuffer = (OMX_U8*)pTemp; 3297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pBuffer = (pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr->pBuffer); 3298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nAllocLen = nTempSizeBytes; 3299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pAppPrivate = pAppPrivate; 3300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pPlatformPrivate = NULL; 3301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pInputPortPrivate = NULL; 3302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pOutputPortPrivate = NULL; 3303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nFlags = VIDDEC_CLEARFLAGS; 3304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pMarkData = NULL; 3305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef VIDDEC_WMVPOINTERFIXED 3306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nWMVFileType == VIDDEC_WMV_ELEMSTREAM && 3307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV && 3308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->ProcessMode == 0 && 3309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex == VIDDEC_INPUT_PORT) { 3310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* vc-1 fix */ 3311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nOffset = VIDDEC_WMV_BUFFER_OFFSET; 3312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 3315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERFcomp, 3316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pBuffer, 3317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nAllocLen, 3318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleMemory); 3319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPort->hTunnelComponent != NULL) { 3323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDef->eDir == OMX_DirInput) { 3324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (*pBuffHead)->nInputPortIndex = nPortIndex; 3325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (*pBuffHead)->nOutputPortIndex = pCompPort->nTunnelPort; 3326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nInputPortIndex = pCompPort->nTunnelPort; 3329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (*pBuffHead)->nOutputPortIndex = nPortIndex; 3330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 3334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nInputPortIndex = VIDDEC_INPUT_PORT; 3335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nOutputPortIndex = VIDDEC_NOPORT; 3336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nInputPortIndex = VIDDEC_NOPORT; 3339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->nOutputPortIndex = VIDDEC_OUTPUT_PORT; 3340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 3344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pInputPortPrivate = pCompPort->pBufferPrivate[pBufferCnt]; 3345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pOutputPortPrivate = NULL; 3346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pOutputPortPrivate = pCompPort->pBufferPrivate[pBufferCnt]; 3349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffHead)->pInputPortPrivate = NULL; 3350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->bAllocByComponent = OMX_TRUE; 3352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPort->hTunnelComponent != NULL) { 3354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->eBufferOwner = VIDDEC_BUFFER_WITH_TUNNELEDCOMP; 3355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->eBufferOwner = VIDDEC_BUFFER_WITH_CLIENT; 3358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->nBufferSize = nTempSizeBytes; 3361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pBuffHead 0x%p nAllocLen 0x%lx pBuffer %p eBufferOwner %d\n", 3362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pBuffHead, (*pBuffHead)->nAllocLen, pCompPort->pBufferPrivate[pBufferCnt]->pBufferHdr->pBuffer, 3363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->eBufferOwner); 3364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Allocate_DSPResources(pComponentPrivate, nPortIndex); 3366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 3367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRDSP4(pComponentPrivate->dbg, "Error: Allocating DSP resources\n"); 3368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 3370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 3371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 3372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError, 3373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMajor, 3374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 3375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->nBufferCnt++; 3379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->nNumber = pCompPort->nBufferCnt; 3380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "eBufferOwner 0x%x nBufferCountActual %lu nBufferCnt %u nnumber %lu\n", 3382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->pBufferPrivate[pBufferCnt]->eBufferOwner, pPortDef->nBufferCountActual, 3383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPort->nBufferCnt,pCompPort->pBufferPrivate[pBufferCnt]->nNumber); 3384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPort->nBufferCnt == pPortDef->nBufferCountActual) { 3385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 3386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 3387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == VIDDEC_INPUT_PORT) { 3388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sInSemaphore); 3389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_POST(pComponentPrivate->sOutSemaphore); 3392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 3397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "---Exiting eError 0x%x\n", eError); 3398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 3402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 3403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * IsTIOMXComponent() 3405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Check if the component is TI component. 3407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param hTunneledComp Component Tunnel Pipe 3409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_TRUE Input is a TI component. 3411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_FALSE Input is a not a TI component. 3412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 3414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 3415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_BOOL IsTIOMXComponent(OMX_HANDLETYPE hComp, struct OMX_TI_Debug *dbg) 3416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_PARAM_BUFFERSUPPLIERTYPE sBufferSupplier;*/ 3419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STRING pTunnelcComponentName = NULL; 3420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE* pTunnelComponentVersion = NULL; 3421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion = NULL; 3422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID = NULL; 3423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char *pSubstring = NULL; 3424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bResult = OMX_TRUE; 3425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTunnelcComponentName = malloc(128); 3427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pTunnelcComponentName == NULL) { 3428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(*dbg, "Error in Video Decoder OMX_ErrorInsufficientResources\n"); 3430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 3431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTunnelComponentVersion = malloc(sizeof(OMX_VERSIONTYPE)); 3434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pTunnelComponentVersion == NULL) { 3435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(*dbg, "Error in Video Decoder OMX_ErrorInsufficientResources\n"); 3436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 3438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pSpecVersion = malloc(sizeof(OMX_VERSIONTYPE)); 3441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pSpecVersion == NULL) { 3442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(*dbg, "Error in Video Decoder OMX_ErrorInsufficientResources\n"); 3443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 3445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentUUID = malloc(sizeof(OMX_UUIDTYPE)); 3448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentUUID == NULL) { 3449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(*dbg, "Error in Video Decoder OMX_ErrorInsufficientResources\n"); 3450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 3452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_GetComponentVersion (hComp, pTunnelcComponentName, pTunnelComponentVersion, pSpecVersion, pComponentUUID); 3455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Check if tunneled component is a TI component */ 3457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pSubstring = strstr(pTunnelcComponentName, "OMX.TI."); 3458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pSubstring == NULL) { 3459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bResult = OMX_FALSE; 3460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 3463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pTunnelcComponentName); 3464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pTunnelComponentVersion); 3465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pSpecVersion); 3466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(pComponentUUID); 3467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return bResult; 3469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} /* End of IsTIOMXComponent */ 3470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_VerifyTunnelConnection() 3475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 3484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 3485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 3486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_VerifyTunnelConnection (VIDDEC_PORT_TYPE *pPort, 3489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE hTunneledComp, 3490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef) 3491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE sPortDef; 3493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sPortDef.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); 3496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sPortDef.nVersion.s.nVersionMajor = VERSION_MAJOR; 3497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sPortDef.nVersion.s.nVersionMinor = VERSION_MINOR; 3498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sPortDef.nVersion.s.nRevision = VERSION_REVISION; 3499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sPortDef.nVersion.s.nStep = VERSION_STEP; 3500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sPortDef.nPortIndex = pPort->nTunnelPort; 3501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_GetParameter(hTunneledComp, OMX_IndexParamPortDefinition, &sPortDef); 3503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 3504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (pPortDef->eDomain) { 3508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_PortDomainOther: 3509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (sPortDef.format.other.eFormat != pPortDef->format.other.eFormat) { 3510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPort->hTunnelComponent = 0; 3511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->nTunnelPort = 0; 3512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorPortsNotCompatible; 3513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_PortDomainAudio: 3516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (sPortDef.format.audio.eEncoding != pPortDef->format.audio.eEncoding) { 3517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPort->hTunnelComponent = 0; 3518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->nTunnelPort = 0; 3519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorPortsNotCompatible; 3520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_PortDomainVideo: 3523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (sPortDef.format.video.eCompressionFormat != pPortDef->format.video.eCompressionFormat) { 3524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPort->hTunnelComponent = 0; 3525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->nTunnelPort = 0; 3526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorPortsNotCompatible; 3527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_PortDomainImage: 3530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (sPortDef.format.image.eCompressionFormat != pPortDef->format.image.eCompressionFormat) { 3531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPort->hTunnelComponent = 0; 3532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->nTunnelPort = 0; 3533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorPortsNotCompatible; 3534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 3537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->hTunnelComponent = 0; 3538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->nTunnelPort = 0; 3539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorPortsNotCompatible; /* Our current port is not set up correctly */ 3540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_ComponentTunnelRequest() Sets application callbacks to the component 3547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This method will update application callbacks 3549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application. 3550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pComp handle for this instance of the component 3552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param pCallBacks application callbacks 3553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param ptr 3554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 3556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 3557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 3558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_ComponentTunnelRequest (OMX_IN OMX_HANDLETYPE hComponent, 3561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPort, 3562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hTunneledComp, 3563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nTunneledPort, 3564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup) 3565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = NULL; 3568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE* pComponentPrivate = NULL; 3569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_BUFFERSUPPLIERTYPE sBufferSupplier; 3570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PORT_TYPE *pPort = NULL; 3571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef = NULL; 3572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, OMX_TRUE, OMX_TRUE); 3574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE*)hComponent; 3576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE*)pHandle->pComponentPrivate; 3577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort = pComponentPrivate->pCompPort[nPort]; 3579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pInPortDef; 3580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPort == pComponentPrivate->pInPortFormat->nPortIndex) { 3582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pInPortDef; 3583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 3584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPort == pComponentPrivate->pOutPortFormat->nPortIndex) { 3585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = pComponentPrivate->pOutPortDef; 3586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pTunnelSetup == NULL || hTunneledComp == 0) { 3589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->hTunnelComponent = NULL; 3590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->nTunnelPort = 0; 3591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->eSupplierSetting = OMX_BufferSupplyUnspecified; 3592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDef->eDir != OMX_DirInput && pPortDef->eDir != OMX_DirOutput) { 3595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorBadParameter; 3596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 3599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Check if the other component is developed by TI */ 3600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(IsTIOMXComponent(hTunneledComp, &pComponentPrivate->dbg) != OMX_TRUE) { 3601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorTunnelingUnsupported; 3602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->hTunnelComponent = hTunneledComp; 3606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->nTunnelPort = nTunneledPort; 3607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDef->eDir == OMX_DirOutput) { 3609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTunnelSetup->eSupplier = pPort->eSupplierSetting; 3610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 3611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Component is the input (sink of data) */ 3613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_VerifyTunnelConnection(pPort, hTunneledComp, pPortDef); 3614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (OMX_ErrorNone != eError) { 3615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error: PP VerifyTunnelConnection failed\n"); 3616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Invalid connection formats. Return eError */ 3617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorPortsNotCompatible; 3618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* If specified, obey output port's preferences. Otherwise choose output */ 3621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->eSupplierSetting = pTunnelSetup->eSupplier; 3622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (OMX_BufferSupplyUnspecified == pPort->eSupplierSetting) { 3623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPort->eSupplierSetting = pTunnelSetup->eSupplier = OMX_BufferSupplyOutput; 3624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Tell the output port who the supplier is */ 3627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sBufferSupplier.nSize = sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE); 3628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sBufferSupplier.nVersion.s.nVersionMajor = VERSION_MAJOR; 3629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sBufferSupplier.nVersion.s.nVersionMinor = VERSION_MAJOR; 3630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sBufferSupplier.nVersion.s.nRevision = VERSION_REVISION; 3631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sBufferSupplier.nVersion.s.nStep = VERSION_STEP; 3632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sBufferSupplier.nPortIndex = nTunneledPort; 3633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sBufferSupplier.eBufferSupplier = pPort->eSupplierSetting; 3634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_SetParameter(hTunneledComp, OMX_IndexParamCompBufferSupplier, &sBufferSupplier); 3636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_GetParameter(hTunneledComp, OMX_IndexParamCompBufferSupplier, &sBufferSupplier); 3638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (sBufferSupplier.eBufferSupplier != pPort->eSupplierSetting) { 3640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "SetParameter: OMX_IndexParamCompBufferSupplier failed to change setting\n" ); 3641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return OMX_ErrorUndefined; 3642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 3647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_Allocate_DSPResources() 3653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param 3660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 3662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 3663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 3664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*----------------------------------------------------------------------------*/ 3665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_Allocate_DSPResources(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_IN OMX_U32 nPortIndex) 3667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*todo remove array, fix it to variable, 3670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin it means just one variable for both index*/ 3671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void *pUalgOutParams[1]; 3672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void *pUalgInpParams[1]; 3673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pTemp = NULL; 3674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nBufferCnt = pComponentPrivate->pCompPort[nPortIndex]->nBufferCnt; 3675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDefIn = pComponentPrivate->pInPortDef; 3676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_PRIVATE* pBufferPrivate = NULL; 3677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferPrivate = 3679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (VIDDEC_BUFFER_PRIVATE*)(pComponentPrivate->pCompPort[nPortIndex]->pBufferPrivate[nBufferCnt]); 3680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == pComponentPrivate->pInPortFormat->nPortIndex) { 3682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 3683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) { 3684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgInpParams[0], MP4VD_GPP_SN_UALGInputParams, sizeof(MP4VD_GPP_SN_UALGInputParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgInpParams[0] = (MP4VD_GPP_SN_UALGInputParams*)malloc(sizeof(MP4VD_GPP_SN_UALGInputParams) + VIDDEC_PADDING_FULL);*/ 3686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((MP4VD_GPP_SN_UALGInputParams*)(!pUalgInpParams[0])) { 3687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgInpParams[0]; 3692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgInpParams[0] = pTemp; 3694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (MP4VD_GPP_SN_UALGInputParams*)(pUalgInpParams[0]); 3695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(MP4VD_GPP_SN_UALGInputParams); 3696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 3698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (VIDDEC_SPARKCHECK) { 3699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgInpParams[0], SPARKVD_GPP_SN_UALGInputParams, sizeof(SPARKVD_GPP_SN_UALGInputParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgInpParams[0] = (SPARKVD_GPP_SN_UALGInputParams*)malloc(sizeof(SPARKVD_GPP_SN_UALGInputParams) + VIDDEC_PADDING_FULL);*/ 3701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((SPARKVD_GPP_SN_UALGInputParams*)(!pUalgInpParams[0])) { 3702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgInpParams[0]; 3707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgInpParams[0] = pTemp; 3709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (SPARKVD_GPP_SN_UALGInputParams*)(pUalgInpParams[0]); 3710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(SPARKVD_GPP_SN_UALGInputParams); 3711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) { 3714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgInpParams[0], MP2VDEC_UALGInputParam, sizeof(MP2VDEC_UALGInputParam) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgInpParams[0] = (MP2VDEC_UALGInputParam*)malloc(sizeof(MP2VDEC_UALGInputParam) + VIDDEC_PADDING_FULL);*/ 3716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((MP2VDEC_UALGInputParam*)(!pUalgInpParams[0])) { 3717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgInpParams[0]; 3722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgInpParams[0] = pTemp; 3724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (MP2VDEC_UALGInputParam*)(pUalgInpParams[0]); 3725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(MP2VDEC_UALGInputParam); 3726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 3728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgInpParams[0], H264VDEC_UALGInputParam, sizeof(H264VDEC_UALGInputParam) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgInpParams[0] = (H264VDEC_UALGInputParam*)malloc(sizeof(H264VDEC_UALGInputParam) + VIDDEC_PADDING_FULL);*/ 3730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((H264VDEC_UALGInputParam*)(!pUalgInpParams[0])) { 3731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgInpParams[0]; 3736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgInpParams[0] = pTemp; 3738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (H264VDEC_UALGInputParam*)(pUalgInpParams[0]); 3739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(H264VDEC_UALGInputParam); 3740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) { 3742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgInpParams[0], WMV9DEC_UALGInputParam, sizeof(WMV9DEC_UALGInputParam) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgInpParams[0] = (WMV9DEC_UALGInputParam*)malloc(sizeof(WMV9DEC_UALGInputParam) + VIDDEC_PADDING_FULL);*/ 3744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((WMV9DEC_UALGInputParam*)(!pUalgInpParams[0])) { 3745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgInpParams[0]; 3750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgInpParams[0] = pTemp; 3752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (WMV9DEC_UALGInputParam*)(pUalgInpParams[0]); 3753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(WMV9DEC_UALGInputParam); 3754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error: Invalid Compression Type\n"); 3757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == pComponentPrivate->pOutPortFormat->nPortIndex) { 3761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG4 || 3762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingH263) { 3763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgOutParams[0], MP4VD_GPP_SN_UALGOutputParams, sizeof(MP4VD_GPP_SN_UALGOutputParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgOutParams[0] = (MP4VD_GPP_SN_UALGOutputParams*)malloc(sizeof(MP4VD_GPP_SN_UALGOutputParams) + VIDDEC_PADDING_FULL);*/ 3765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((MP4VD_GPP_SN_UALGOutputParams*)(!pUalgOutParams[0])) { 3766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgOutParams[0]; 3771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgOutParams[0] = pTemp; 3773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (MP4VD_GPP_SN_UALGOutputParams*)(pUalgOutParams[0]); 3774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(MP4VD_GPP_SN_UALGOutputParams); 3775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 3777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (VIDDEC_SPARKCHECK) { 3778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgOutParams[0], SPARKVD_GPP_SN_UALGOutputParams, sizeof(SPARKVD_GPP_SN_UALGOutputParams) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgOutParams[0] = (SPARKVD_GPP_SN_UALGOutputParams*)malloc(sizeof(SPARKVD_GPP_SN_UALGOutputParams) + VIDDEC_PADDING_FULL);*/ 3780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((SPARKVD_GPP_SN_UALGOutputParams*)(!pUalgOutParams[0])) { 3781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgOutParams[0]; 3786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgOutParams[0] = pTemp; 3788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (SPARKVD_GPP_SN_UALGOutputParams*)(pUalgOutParams[0]); 3789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(SPARKVD_GPP_SN_UALGOutputParams); 3790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingMPEG2) { 3793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgOutParams[0], MP2VDEC_UALGOutputParam, sizeof(MP2VDEC_UALGOutputParam) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgOutParams[0] = (MP2VDEC_UALGOutputParam*)malloc(sizeof(MP2VDEC_UALGOutputParam) + VIDDEC_PADDING_FULL);*/ 3795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((MP2VDEC_UALGOutputParam*)(!pUalgOutParams[0])) { 3796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgOutParams[0]; 3801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgOutParams[0] = pTemp; 3803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (MP2VDEC_UALGOutputParam*)(pUalgOutParams[0]); 3804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(MP2VDEC_UALGOutputParam); 3805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingAVC) { 3807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgOutParams[0], H264VDEC_UALGOutputParam, sizeof(H264VDEC_UALGOutputParam) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgOutParams[0] = (H264VDEC_UALGOutputParam*)malloc(sizeof(H264VDEC_UALGOutputParam) + VIDDEC_PADDING_FULL);*/ 3809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((H264VDEC_UALGOutputParam*)(!pUalgOutParams[0])) { 3810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgOutParams[0]; 3815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgOutParams[0] = pTemp; 3817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (H264VDEC_UALGOutputParam*)(pUalgOutParams[0]); 3818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(H264VDEC_UALGOutputParam); 3819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pPortDefIn->format.video.eCompressionFormat == OMX_VIDEO_CodingWMV) { 3821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MALLOC_STRUCT_SIZED(pUalgOutParams[0], WMV9DEC_UALGOutputParam, sizeof(WMV9DEC_UALGOutputParam) + VIDDEC_PADDING_FULL,pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); 3822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pUalgOutParams[0] = (WMV9DEC_UALGOutputParam*)malloc(sizeof(WMV9DEC_UALGOutputParam) + VIDDEC_PADDING_FULL);*/ 3823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((WMV9DEC_UALGOutputParam*)(!pUalgOutParams[0])) { 3824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "Error: Malloc failed\n"); 3825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 3826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = (OMX_U8*)pUalgOutParams[0]; 3829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp += VIDDEC_PADDING_HALF; 3830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pUalgOutParams[0] = pTemp; 3831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->pUalgParam = (WMV9DEC_UALGOutputParam*)(pUalgOutParams[0]); 3832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferPrivate->nUalgParamSize = sizeof(WMV9DEC_UALGOutputParam); 3833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error: Invalid Compression Type\n"); 3836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUnsupportedSetting; 3837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 3842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 3846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 3850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * VIDDEC_GetExtensionIndex() 3852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_ErrorNone Successful operation. 3856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_ErrorBadParameter Invalid operation. 3857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_ErrorIncorrectStateOperation If called when port is disabled. 3858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 3859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 3860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE VIDDEC_GetExtensionIndex(OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_STRING cParameterName, OMX_OUT OMX_INDEXTYPE* pIndexType) 3861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int nIndex; 3863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorUndefined; 3864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONF_CHECK_CMD(hComponent, OMX_TRUE, OMX_TRUE); 3866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(nIndex = 0; nIndex < sizeof(sVideoDecCustomParams)/sizeof(VIDDEC_CUSTOM_PARAM); nIndex++) { 3867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(strcmp((char *)cParameterName, (char *)&(sVideoDecCustomParams[nIndex].cCustomParamName)) == 0) { 3868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pIndexType = sVideoDecCustomParams[nIndex].nCustomParamIndex; 3869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNone; 3870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 3874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 3878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 3879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * ComponentRoleEnum() 3881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 3884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_ErrorNone Successful operation. 3885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_ErrorBadParameter Invalid operation. 3886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_ErrorIncorrectStateOperation If called when port is disabled. 3887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 3888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 3889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 3891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 3892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 3893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nIndex) 3894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_COMPONENT_PRIVATE *pComponentPrivate; 3896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (VIDDEC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 3899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset(cRole, 0x0, OMX_MAX_STRINGNAME_SIZE); 3901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (nIndex) { 3902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_H263: 3903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H263); 3904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 3905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 3906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)cRole, VIDDEC_COMPONENTROLES_H263); 3908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_H264: 3910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_H264); 3911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 3912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 3913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)cRole, VIDDEC_COMPONENTROLES_H264); 3915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_MPEG2: 3917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG2); 3918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 3919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 3920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)cRole, VIDDEC_COMPONENTROLES_MPEG2); 3922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_MPEG4: 3924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_MPEG4); 3925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 3926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 3927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)cRole, VIDDEC_COMPONENTROLES_MPEG4); 3929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case VIDDEC_DEFAULT_INPUT_INDEX_WMV9: 3931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_WMV9); 3932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( pComponentPrivate->pOutPortFormat->eColorFormat != VIDDEC_COLORFORMAT420) { 3933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = VIDDEC_Load_Defaults(pComponentPrivate, VIDDEC_INIT_PLANAR420); 3934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)cRole, VIDDEC_COMPONENTROLES_WMV9); 3936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*todo add spark, it was not added because it is not in khronos spec, yet*/ 3938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 3939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNoMore; 3940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) { 3943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 3944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 3946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 3947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 3950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3951