1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License as published by the Free Software Foundation; either 8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Lesser General Public License for more details. 15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================= 22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Texas Instruments OMAP (TM) Platform Software 23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Use of this software is controlled by the terms and conditions found 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in the license agreement under which this software has been supplied. 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * =========================================================================== */ 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @file OMX_G729Decoder.c 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file implements OMX Component for G729 decoder that 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * is fully compliant with the OMX Audio specification . 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(OMAPSW_MPU)\linux\audio\src\openmax_il\g729_dec\src 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 0.4 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------- 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! =================================== 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Date Author(s) Version Description 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! --------- ------------------- ------- --------------------------------- 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 03-Jan-2007 A.Donjon 0.1 Code update for G729 DECODER 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 01-Mar-2007 A.Donjon 0.2 RM, DVFS changes 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 08-Jun-2007 A.Donjon 0.3 Variable input buffer size 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 04-Jul-2007 A.Donjon 0.4 Init params 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ================================================================================= */ 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * INCLUDE FILES 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <oaf_osal.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <omx_core.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/time.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h> 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dbapi.h> 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------program files ----------------------------------------*/ 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "perf.h" 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h> 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <TIDspOmx.h> 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G729Decoder.h" 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G729Dec_Utils.h" 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EXTERNAL REFERENCES NOTE : only use if not found in header file 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * PUBLIC DECLARATIONS Defined here, used elsewhere 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * PRIVATE DECLARATIONS Defined here, used only here 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetCallbacks (OMX_HANDLETYPE hComp, 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, OMX_PTR pAppData); 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetComponentVersion (OMX_HANDLETYPE hComp, 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING pComponentName, 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pComponentVersion, 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID); 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SendCommand (OMX_HANDLETYPE hComp, OMX_COMMANDTYPE nCommand, 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nParam, OMX_PTR pCmdData); 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetParameter(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nParamIndex, 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentParamStruct); 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetParameter (OMX_HANDLETYPE hComp, 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentParamStruct); 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetConfig (OMX_HANDLETYPE hComp, 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetConfig (OMX_HANDLETYPE hComp, 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE EmptyThisBuffer (OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuffer); 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FillThisBuffer (OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuffer); 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetState (OMX_HANDLETYPE hComp, OMX_STATETYPE* pState); 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentTunnelRequest (OMX_HANDLETYPE hComp, 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nPort, OMX_HANDLETYPE hTunneledComp, 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nTunneledPort, 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TUNNELSETUPTYPE* pTunnelSetup); 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentDeInit(OMX_HANDLETYPE pHandle); 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes); 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FreeBuffer( 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE UseBuffer ( 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U8* pBuffer); 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetExtensionIndex( 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_STRING cParameterName, 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_INDEXTYPE *pIndexType); 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nIndex); 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def FIFO1, FIFO2 Define Fifo Path 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1 "/dev/fifo.1" 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2 "/dev/fifo.2" 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def PERMS Define Read and Write Permisions. 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define PERMS 0666 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinAM_COMMANDDATATYPE cmd_data; 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------macros ----------------------------------------------*/ 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentInit() Set the all the function pointers of component 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update the component function pointer to the handle 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources If the malloc fails 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp) 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef_ip = NULL; 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef_op = NULL; 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PORTFORMATTYPE *pInPortFormat = NULL; 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PORTFORMATTYPE *pOutPortFormat = NULL; 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_G729TYPE *g729_ip = NULL; 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PCMMODETYPE *g729_op = NULL; 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*) hComp; 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 i=0; 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::OMX_ComponentInit\n", __LINE__); 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Set the all component function pointer to the handle */ 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SetCallbacks = SetCallbacks; 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetComponentVersion = GetComponentVersion; 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SendCommand = SendCommand; 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetParameter = GetParameter; 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SetParameter = SetParameter; 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetConfig = GetConfig; 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SetConfig = SetConfig; 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetState = GetState; 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->EmptyThisBuffer = EmptyThisBuffer; 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->FillThisBuffer = FillThisBuffer; 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->ComponentTunnelRequest = ComponentTunnelRequest; 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->ComponentDeInit = ComponentDeInit; 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->AllocateBuffer = AllocateBuffer; 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->FreeBuffer = FreeBuffer; 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->UseBuffer = UseBuffer; 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetExtensionIndex = GetExtensionIndex; 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->ComponentRoleEnum = ComponentRoleEnum; 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Allocate the memory for Component private data area */ 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pHandle->pComponentPrivate,G729DEC_COMPONENT_PRIVATE); 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pHandle->pComponentPrivate == NULL) { 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorInsufficientResources; 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G729DEC_COMPONENT_PRIVATE *) 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->pHandle = pHandle; 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = pHandle->pComponentPrivate; 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPERF = PERF_Create(PERF_FOURCC('7','2','9',' '), 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleLLMM | 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleAudioDecode); 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Initialize component data structures to default values */ 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPortParam.nPorts = 0x2; 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPortParam.nStartPortNumber = 0x0; 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorNone; 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(g729_ip, OMX_AUDIO_PARAM_G729TYPE); 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(g729_op, OMX_AUDIO_PARAM_PCMMODETYPE); 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G729DEC_COMPONENT_PRIVATE *) 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->g729Params = g729_ip; 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G729DEC_COMPONENT_PRIVATE *) 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->pcmParams = g729_op; 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d Malloced g729Params = 0x%p\n",__LINE__,((G729DEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->g729Params); 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d Malloced pcmParams = 0x%p\n",__LINE__,((G729DEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->pcmParams); 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pComponentPrivate->pInputBufferList, G729DEC_BUFFERLIST); 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->numBuffers = 0; /* initialize number of buffers */ 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pComponentPrivate->pOutputBufferList, G729DEC_BUFFERLIST); 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers = 0; /* initialize number of buffers */ 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPlayCompleteFlag = 0; 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) { 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[i] = NULL; 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[i] = NULL; 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->arrTickCount[i] = 0; 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->arrTimestamp[i] = 0; 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Setting dasfmode to 0\n"); 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->rtmx = 0; 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfmode = 0; 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 1; 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bCompThreadStarted = 0; 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nHoldLength = 0; 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHoldBuffer = NULL; 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bInitParamsInitialized = 0; 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkBuf = NULL; 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkData = NULL; 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nEmptyBufferDoneCount = 0; 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nEmptyThisBufferCount = 0; 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nFillBufferDoneCount = 0; 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nFillThisBufferCount = 0; 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->strmAttr = NULL; 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nDataWritesWhilePaused = 0; 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIdleCommandPending = 0; 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = 0; 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) { 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i] = NULL; 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i] = NULL; 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bJustReenabled = 0; 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nInvalidFrameCount = 0; 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nNumInputBufPending = 0; 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending = 0; 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nOutStandingFillDones = 0; 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bStopSent=0; 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bBypassDSP = OMX_FALSE; 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bNoIdleOnStop = OMX_FALSE; 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams = NULL; 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sDeviceString = malloc(100*sizeof(OMX_STRING)); 325b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sDeviceString == NULL) { 326b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G729DEC_DPRINT("%d ::malloc failed\n", __LINE__); 327b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 328b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,"/eteedn:i0:o0/codec\0"); 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->IpBufindex = 0; 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->OpBufindex = 0; 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nUnhandledFillThisBuffers=0; 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nUnhandledEmptyThisBuffers = 0; 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bFlushOutputPortCommandPending = OMX_FALSE; 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bFlushInputPortCommandPending = OMX_FALSE; 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bFlushEventPending = 0; 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPreempted = OMX_FALSE; 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* G729 format defaults */ 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin g729_ip->nPortIndex = 0; 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* PCM format defaults */ 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin g729_op->nPortIndex = 1; 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin g729_op->nChannels = 2; 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin g729_op->eNumData= OMX_NumericalDataSigned; 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin g729_op->nBitPerSample = 16; 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin g729_op->nSamplingRate = 44100; 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin g729_op->ePCMMode = OMX_AUDIO_PCMModeLinear; 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Malloc and Set pPriorityMgmt defaults */ 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pComponentPrivate->sPriorityMgmt, OMX_PRIORITYMGMTTYPE); 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729CONF_INIT_STRUCT(pComponentPrivate->sPriorityMgmt, OMX_PRIORITYMGMTTYPE); 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Initialize sPriorityMgmt data structures to default values */ 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPriorityMgmt->nGroupPriority = -1; 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPriorityMgmt->nGroupID = -1; 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set input port defaults */ 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pPortDef_ip, OMX_PARAM_PORTDEFINITIONTYPE); 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729CONF_INIT_STRUCT(pPortDef_ip, OMX_PARAM_PORTDEFINITIONTYPE); 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_INPUT_PORT] = pPortDef_ip; 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_MEMPRINT("%d:[ALLOC] %p\n",__LINE__,pPortDef_ip); 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(pPortDef_ip,0,sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set input port defaults */ 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pPortDef_op, OMX_PARAM_PORTDEFINITIONTYPE); 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729CONF_INIT_STRUCT(pPortDef_op, OMX_PARAM_PORTDEFINITIONTYPE); 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT] = pPortDef_op; 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_MEMPRINT("%d:[ALLOC] %p\n",__LINE__,pPortDef_op); 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(pPortDef_op,0,sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::pPortDef_ip = 0x%x\n", __LINE__,pPortDef_ip); 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::pPortDef_op = 0x%x\n", __LINE__,pPortDef_op); 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nPortIndex = 0x0; 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nBufferCountActual = NUM_G729DEC_INPUT_BUFFERS; 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nBufferCountMin = NUM_G729DEC_INPUT_BUFFERS; 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->eDir = OMX_DirInput; 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->bEnabled = OMX_TRUE; 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nBufferSize = INPUT_G729DEC_BUFFER_SIZE_MIN; 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->bPopulated = 0; 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->eDomain = OMX_PortDomainAudio; 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->format.audio.eEncoding = OMX_AUDIO_CodingG729; 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nPortIndex = 0x1; 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nBufferCountActual = NUM_G729DEC_OUTPUT_BUFFERS; 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nBufferCountMin = NUM_G729DEC_OUTPUT_BUFFERS; 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->eDir = OMX_DirOutput; 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->bEnabled = OMX_TRUE; 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nBufferSize = OUTPUT_G729DEC_BUFFER_SIZE_MIN; 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->bPopulated = 0; 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->eDomain = OMX_PortDomainAudio; 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->format.audio.eEncoding = OMX_AUDIO_CodingPCM; 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pComponentPrivate->pInPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729CONF_INIT_STRUCT(pComponentPrivate->pInPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set input port format defaults */ 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortFormat = pComponentPrivate->pInPortFormat; 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729CONF_INIT_STRUCT(pInPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortFormat->nPortIndex = G729DEC_INPUT_PORT; 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortFormat->nIndex = OMX_IndexParamAudioG729; 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortFormat->eEncoding = OMX_AUDIO_CodingG729; 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set output port format defaults */ 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pComponentPrivate->pOutPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729CONF_INIT_STRUCT(pComponentPrivate->pOutPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortFormat = (OMX_AUDIO_PARAM_PORTFORMATTYPE*) pComponentPrivate->pOutPortFormat; 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729CONF_INIT_STRUCT(pOutPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortFormat->nPortIndex = G729DEC_OUTPUT_PORT; 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortFormat->nIndex = OMX_IndexParamAudioPcm; 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortFormat->eEncoding = OMX_AUDIO_CodingPCM; 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->AlloBuf_mutex, NULL); 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->AlloBuf_threshold, NULL); 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->InLoaded_mutex, NULL); 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->InLoaded_threshold, NULL); 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->InIdle_mutex, NULL); 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->InIdle_threshold, NULL); 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CreateEvent(&(pComponentPrivate->AlloBuf_event)); 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CreateEvent(&(pComponentPrivate->InLoaded_event)); 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CreateEvent(&(pComponentPrivate->InIdle_event)); 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = RMProxy_NewInitalize(); 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::Error returned from loading ResourceManagerProxy thread\n", 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = G729DEC_StartComponentThread(pHandle); 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::Error returned from the Component\n", 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((pComponentPrivate->fdwrite=open(FIFO1,O_WRONLY))<0) { 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("[G729 Dec Component] - failure to open WRITE pipe\n"); 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::OMX_ComponentInit\n", __LINE__); 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((pComponentPrivate->fdread=open(FIFO2,O_RDONLY))<0) { 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("[G729 Dec Component] - failure to open READ pipe\n"); 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::OMX_ComponentInit - returning %d\n", __LINE__,error); 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetCallbacks() Sets application callbacks to the component 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update application callbacks 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * to the component. So that component can make use of those call back 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * while sending buffers to the application. And also it will copy the 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * application private data to component memory 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pAppData Application private data 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetCallbacks (OMX_HANDLETYPE pComponent, 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pAppData) 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*)pComponent; 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G729DEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pCallBacks == NULL) { 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Received the empty callbacks from the \ 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin application\n",__LINE__); 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Copy the callbacks of the application to the component private */ 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy (&(pComponentPrivate->cbInfo), pCallBacks, sizeof(OMX_CALLBACKTYPE)); 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*copy the application private data to component memory */ 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate = pAppData; 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetComponentVersion() This will return the component version 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will retrun the component version 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentName Name of the component 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentVersion handle for this instance of the component 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pSpecVersion application callbacks 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentUUID 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetComponentVersion (OMX_HANDLETYPE hComp, 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING pComponentName, 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pComponentVersion, 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID) 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNotImplemented; 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Exiting. Returning = 0x%x\n", eError); 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SendCommand() used to send the commands to the component 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will be used by the application. 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param phandle handle for this instance of the component 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param Cmd Command to be sent to the component 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParam indicates commmad is sent using this method 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SendCommand (OMX_HANDLETYPE phandle, 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMMANDTYPE Cmd, 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nParam,OMX_PTR pCmdData) 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ssize_t nRet = 0; 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)phandle; 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pCompPrivate = 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G729DEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_SendingCommand(pCompPrivate->pPERF, 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Cmd, 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (Cmd == OMX_CommandMarkBuffer) ? ((OMX_U32) pCmdData) : nParam, 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleComponent); 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("phandle = %p\n",phandle); 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pCompPrivate = %p\n",pCompPrivate); 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->pHandle = phandle; 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivate->curState == OMX_StateInvalid){ 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInvalidState; 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: G729DEC: Error Notofication \ 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Sent to App\n",__LINE__); 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorInvalidState,0, 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid State"); 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(Cmd) { 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandStateSet: 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::pCompPrivate->curState = %d\n",__LINE__,pCompPrivate->curState); 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nParam == OMX_StateLoaded) { 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->bLoadedCommandPending = OMX_TRUE; 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivate->curState == OMX_StateLoaded) { 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nParam == OMX_StateExecuting) || (nParam == OMX_StatePause)) { 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nParam == OMX_StateInvalid) { 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->curState = OMX_StateInvalid; 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorInvalidState, 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandFlush: 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nParam > 1 && nParam != -1) { 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandPortDisable: 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandPortEnable: 655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandMarkBuffer: 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nParam > 0) { 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: G729DEC: Command Received Default \ 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error\n",__LINE__); 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorUndefined,0, 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid Command"); 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = write (pCompPrivate->cmdPipe[1], &Cmd, sizeof(Cmd)); 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == -1) { 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (Cmd == OMX_CommandMarkBuffer) { 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = write(pCompPrivate->cmdDataPipe[1], &pCmdData, 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PTR)); 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = write(pCompPrivate->cmdDataPipe[1], &nParam, 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_U32)); 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::nRet = %d\n",__LINE__,nRet); 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == -1) { 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d:::Inside SendCommand\n",__LINE__); 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(Cmd == OMX_CommandStateSet && nParam == OMX_StateExecuting) { 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* enable Tee device command*/ 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.hComponent = pHandle; 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandTDNDownlinkMode; 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param1 = 0; 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param2 = 0; 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.streamID = 0; 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(pCompPrivate->fdwrite, &cmd_data, sizeof(cmd_data)))<0) { 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetParameter() Gets the current configurations of the component 723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParamIndex 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentParameterStructure 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetParameter (OMX_HANDLETYPE hComp, 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentParameterStructure) 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pParameterStructure = NULL; 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* OMX_PARAM_BUFFERSUPPLIERTYPE *pBufferSupplier = NULL; */ 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: Inside the GetParameter:: %x\n",__LINE__,nParamIndex); 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G729DEC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pParameterStructure = (OMX_PARAM_PORTDEFINITIONTYPE*)ComponentParameterStructure; 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pParameterStructure == NULL) { 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pParameterStructure = %p\n",pParameterStructure); 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->curState == OMX_StateInvalid) { 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin hComp, 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((OMX_COMPONENTTYPE *)hComp)->pApplicationPrivate, 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorIncorrectStateOperation, 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(nParamIndex){ 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioInit: 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("OMX_IndexParamAudioInit\n"); 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, &pComponentPrivate->sPortParam, sizeof(OMX_PORT_PARAM_TYPE)); 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPortDefinition: 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("pParameterStructure->nPortIndex = %d\n",pParameterStructure->nPortIndex); 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->nPortIndex = %d\n",pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->nPortIndex); 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(ComponentParameterStructure))->nPortIndex == 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->nPortIndex) { 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_INPUT_PORT], 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(ComponentParameterStructure))->nPortIndex == 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->nPortIndex) { 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT], 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex = %d\n",((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex); 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("pComponentPrivate->pInPortFormat.nPortIndex= %d\n",pComponentPrivate->pInPortFormat->nPortIndex); 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("pComponentPrivate->pOutPortFormat.nPortIndex= %d\n",pComponentPrivate->pOutPortFormat->nPortIndex); 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex == 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInPortFormat->nPortIndex) { 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex > 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInPortFormat->nPortIndex){ 817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNoMore; 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pInPortFormat, 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex == 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutPortFormat->nPortIndex){ 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex > 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInPortFormat->nPortIndex){ 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNoMore; 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pOutPortFormat, 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Inside the GetParameter Line %d\n",__LINE__); 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioG729: 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: GetParameter OMX_IndexParamAudioG729 \n",__LINE__); 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_G729TYPE *)(ComponentParameterStructure))->nPortIndex == 844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->g729Params->nPortIndex) { 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, 846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->g729Params, 847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_AUDIO_PARAM_G729TYPE)); 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: OMX_ErrorBadPortIndex from GetParameter \n",__LINE__); 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPcm: 856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PCMMODETYPE *)(ComponentParameterStructure))->nPortIndex == 857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pcmParams->nPortIndex) { 858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, 860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pcmParams, 861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_AUDIO_PARAM_PCMMODETYPE)); 862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: OMX_ErrorBadPortIndex from GetParameter \n",__LINE__); 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 870b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sPriorityMgmt == NULL) { 871b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 872b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 873b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->sPriorityMgmt, sizeof(OMX_PRIORITYMGMTTYPE)); 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_BUFFERSUPPLIERTYPE *)(ComponentParameterStructure))->nPortIndex == OMX_DirInput) { 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT(":: GetParameter OMX_IndexParamCompBufferSupplier \n"); 880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* memcpy(ComponentParameterStructure, pBufferSupplier, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); */ 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_BUFFERSUPPLIERTYPE *)(ComponentParameterStructure))->nPortIndex == OMX_DirOutput) { 884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT(":: GetParameter OMX_IndexParamCompBufferSupplier \n"); 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*memcpy(ComponentParameterStructure, pBufferSupplier, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); */ 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT(":: OMX_ErrorBadPortIndex from GetParameter"); 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoInit: 894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamImageInit: 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamOtherInit: 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: Exiting GetParameter:: %x\n",__LINE__,nParamIndex); 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetParameter() Sets configuration paramets to the component 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParamIndex 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompParam 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetParameter (OMX_HANDLETYPE hComp, 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pCompParam) 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle= (OMX_COMPONENTTYPE*)hComp; 930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PCMMODETYPE* pPcmPort = NULL; 932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_BUFFERSUPPLIERTYPE *pBufferSupplier = NULL; 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G729DEC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pCompParam == NULL) { 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(nParamIndex) { 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* 0 means Input port */ 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pInPortFormat->nPortIndex == ((OMX_AUDIO_PARAM_PORTFORMATTYPE*)pCompParam)->nPortIndex) { 946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pInPortFormat, pCompParam, sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentPrivate->pOutPortFormat->nPortIndex == ((OMX_AUDIO_PARAM_PORTFORMATTYPE*)pCompParam)->nPortIndex) { 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* 1 means Output port */ 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pOutPortFormat, pCompParam, sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Wrong Port Index Parameter\n", __LINE__); 954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioG729: 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_G729TYPE *pCompG729Param = 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_AUDIO_PARAM_G729TYPE *)pCompParam; 964b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (((G729DEC_COMPONENT_PRIVATE*) 965b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pComponentPrivate)->g729Params == NULL) { 966b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 967b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 968eaaadaf5ebb5e352e2ed4a12714f5d2363da0dcdJames Dong } 969b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* 0 means Input port */ 970b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if(pCompG729Param->nPortIndex == 0) { 971b65f253fdc60f6208a54911bee793d225f23cdf8James Dong memcpy(((G729DEC_COMPONENT_PRIVATE*) 972b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pComponentPrivate)->g729Params, 973b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pCompG729Param, sizeof(OMX_AUDIO_PARAM_G729TYPE)); 974b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPortDefinition: 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->nPortIndex) { 983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pPortDef[G729DEC_INPUT_PORT], 985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompParam, 986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->nPortIndex) { 992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT], 994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompParam, 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateLoaded) { 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1009b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sPriorityMgmt == NULL) { 1010b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 1011b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 1012b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1013b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->sPriorityMgmt, (OMX_PRIORITYMGMTTYPE*)pCompParam, sizeof(OMX_PRIORITYMGMTTYPE)); 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamStandardComponentRole: 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* if (pCompParam) { 1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pRole = (OMX_PARAM_COMPONENTROLETYPE *)pCompParam; 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(&(pComponentPrivate->componentRole), (void *)pRole, sizeof(OMX_PARAM_COMPONENTROLETYPE)); 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }*/ 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPcm: 1030b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->pcmParams == NULL) { 1031b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 1032b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 1033b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompParam){ 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPcmPort= (OMX_AUDIO_PARAM_PCMMODETYPE *)pCompParam; 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pcmParams, pPcmPort, sizeof(OMX_AUDIO_PARAM_PCMMODETYPE)); 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pBufferSupplier, OMX_PARAM_BUFFERSUPPLIERTYPE); 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OMX_DirInput]->nPortIndex) { 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT(":: SetParameter OMX_IndexParamCompBufferSupplier \n"); 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferSupplier->eBufferSupplier = OMX_BufferSupplyInput; 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pBufferSupplier, pCompParam, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OMX_DirOutput]->nPortIndex) { 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT(":: SetParameter OMX_IndexParamCompBufferSupplier \n"); 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferSupplier->eBufferSupplier = OMX_BufferSupplyOutput; 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pBufferSupplier, pCompParam, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT(":: OMX_ErrorBadPortIndex from SetParameter"); 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetConfig() Gets the current configuration of to the component 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nConfigIndex 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentConfigStructure 1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetConfig (OMX_HANDLETYPE hComp, 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G729DEC_COMPONENT_PRIVATE *) 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 1094b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1095b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate == NULL) 1096b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 1097b65f253fdc60f6208a54911bee793d225f23cdf8James Dong else 1098b65f253fdc60f6208a54911bee793d225f23cdf8James Dong memcpy(ComponentConfigStructure,pComponentPrivate,sizeof(G729DEC_COMPONENT_PRIVATE)); 1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetConfig() Sets the configraiton to the component 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nConfigIndex 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentConfigStructure 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetConfig (OMX_HANDLETYPE hComp, 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = (OMX_COMPONENTTYPE*)hComp; 1121b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G729DEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 *customFlag = NULL; 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DSP_DEFINITION *configData = NULL; 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_CONFIG_MUTETYPE *pMuteStructure = NULL; 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_CONFIG_VOLUMETYPE *pVolumeStructure = NULL; 1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DATAPATH dataPath; 1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: Entering SetConfig\n", __LINE__); 1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pHandle == NULL) { 1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Invalid HANDLE OMX_ErrorBadParameter \n",__LINE__); 1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1138b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate = 1139b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (G729DEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (nConfigIndex) { 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomG729DecHeaderInfoConfig: 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: SetConfig OMX_IndexCustomNbG729DecHeaderInfoConfig \n",__LINE__); 1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin configData = (TI_OMX_DSP_DEFINITION*)ComponentConfigStructure; 1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (configData == NULL) { 1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: OMX_ErrorBadParameter from SetConfig\n",__LINE__); 1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfmode = configData->dasfMode; 1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(configData->dasfMode == 2){ 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfmode = 1; 1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->rtmx = 1; 1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->acdnmode = configData->acousticMode; 1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dasfmode ){ 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bEnabled = 0; 1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pComponentPrivate->acdnmode = %d\n",pComponentPrivate->acdnmode); 1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pComponentPrivate->dasfmode = %d\n",pComponentPrivate->dasfmode); 1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->streamID = configData->streamId; 1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomG729DecDataPath: 1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin customFlag = (OMX_S16*)ComponentConfigStructure; 1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (customFlag == NULL) { 1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = *customFlag; 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(dataPath) { 1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_APPLICATION: 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_MMMIXER_DATAPATH(pComponentPrivate->sDeviceString, 1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin RENDERTYPE_DECODER, pComponentPrivate->streamID); 1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* strcpy((char*)pComponentPrivate->sDeviceString,(char*)ETEEDN_STRING); */ 1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_APPLICATION_RTMIXER: 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,(char*)RTM_STRING); 1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_ACDN: 1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,(char*)ACDN_STRING); 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomG729DecModeDasfConfig: 1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: SetConfig OMX_IndexCustomG729DecModeDasfConfig \n",__LINE__); 1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin customFlag = (OMX_S16*)ComponentConfigStructure; 1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (customFlag == NULL) { 1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: OMX_ErrorBadParameter from SetConfig\n",__LINE__); 1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfmode = *customFlag; 1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pComponentPrivate->dasfmode = %d\n",pComponentPrivate->dasfmode); 1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dasfmode ){ 1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bEnabled = 0; 1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexConfigAudioMute: 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pMuteStructure = (OMX_AUDIO_CONFIG_MUTETYPE *)ComponentConfigStructure; 1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Set Mute/Unmute for playback stream\n"); 1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.hComponent = hComp; 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pMuteStructure->bMute == OMX_TRUE) 1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Mute the playback stream\n"); 1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandStreamMute; 1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("unMute the playback stream\n"); 1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandStreamUnMute; 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param1 = 0; 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param2 = 0; 1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.streamID = pComponentPrivate->streamID; 1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(pComponentPrivate->fdwrite, &cmd_data, sizeof(cmd_data)))<0) 1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("[G729 decoder] - fail to send Mute command to audio manager\n"); 1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexConfigAudioVolume: 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pVolumeStructure = (OMX_AUDIO_CONFIG_VOLUMETYPE *)ComponentConfigStructure; 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Set volume for playback stream\n"); 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.hComponent = hComp; 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandSWGain; 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param1 = pVolumeStructure->sVolume.nValue; 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param2 = 0; 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.streamID = pComponentPrivate->streamID; 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(pComponentPrivate->fdwrite, &cmd_data, sizeof(cmd_data)))<0) 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("[G729 decoder] - fail to send Volume command to audio manager\n"); 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: Exiting SetConfig\n", __LINE__); 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetState() Gets the current state of the component 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompomponent handle for this instance of the component 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pState 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetState (OMX_HANDLETYPE pComponent, OMX_STATETYPE* pState) 1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorUndefined; 1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pState) { 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pHandle && pHandle->pComponentPrivate) { 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pState = ((G729DEC_COMPONENT_PRIVATE*) 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->curState; 1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pState = OMX_StateLoaded; 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorNone; 1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EmptyThisBuffer() This callback is used to send the input buffer to 1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component 1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nPortIndex input port index 1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer buffer to be sent to codec 1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE EmptyThisBuffer (OMX_HANDLETYPE pComponent, 1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer) 1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G729DEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ssize_t ret = 0; 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERF, 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->pBuffer, 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen, 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleHLMM); 1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G729DEC_COMPONENT_PRIVATE*) 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[G729DEC_INPUT_PORT]; 1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pPortDef->bEnabled) { 1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorIncorrectStateOperation Line %d\n",__LINE__); 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer == NULL) { 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nSize != sizeof(OMX_BUFFERHEADERTYPE)) { 1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nVersion.nVersion != pComponentPrivate->nVersion) { 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorVersionMismatch; 1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nInputPortIndex != G729DEC_INPUT_PORT) { 1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->curState != OMX_StateExecuting && 1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState != OMX_StatePause) 1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorIncorrectStateOperation Line %d\n",__LINE__); 1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("\n------------------------------------------\n\n"); 1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Component Sending Filled ip buff %p \ 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin to Component Thread\n",__LINE__,pBuffer); 1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("\n------------------------------------------\n\n"); 1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->app_nBuf--; 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkData = pBuffer->pMarkData; 1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->hMarkTargetComponent = pBuffer->hMarkTargetComponent; 1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nUnhandledEmptyThisBuffers++; 1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = write (pComponentPrivate->dataPipe[1], &pBuffer, 1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_BUFFERHEADERTYPE*)); 1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (ret == -1) { 1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Error in Writing to the Data pipe\n", __LINE__); 1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nEmptyThisBufferCount++; 1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Exiting EmptyThisBuffer()\n"); 1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * FillThisBuffer() This callback is used to send the output buffer to 1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the component 1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nPortIndex output port number 1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer buffer to be sent to codec 1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FillThisBuffer (OMX_HANDLETYPE pComponent, 1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer) 1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = 1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G729DEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERF, 1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->pBuffer, 1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleHLMM); 1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("\n------------------------------------------\n\n"); 1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Component Sending Emptied op buff %p \ 1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin to Component Thread\n",__LINE__,pBuffer); 1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("\n------------------------------------------\n\n"); 1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G729DEC_COMPONENT_PRIVATE*) 1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[G729DEC_OUTPUT_PORT]; 1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pPortDef->bEnabled) { 1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorIncorrectStateOperation Line %d\n",__LINE__); 1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer == NULL) { 1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nSize != sizeof(OMX_BUFFERHEADERTYPE)) { 1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nVersion.nVersion != pComponentPrivate->nVersion) { 1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorVersionMismatch; 1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nOutputPortIndex != G729DEC_OUTPUT_PORT) { 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StatePause) { 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("FillThisBuffer called while paused\n"); 1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->curState != OMX_StateExecuting && pComponentPrivate->curState != OMX_StatePause) { 1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("About to return OMX_ErrorIncorrectStateOperation Line %d\n",__LINE__); 1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = 0; 1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Filling the Output buffer with zero */ 1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset (pBuffer->pBuffer,0,pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->nBufferSize); 1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->app_nBuf--; 1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d:Decrementing app_nBuf = %d\n",__LINE__,pComponentPrivate->app_nBuf); 1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pComponentPrivate->pMarkBuf = 0x%x\n",pComponentPrivate->pMarkBuf); 1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pComponentPrivate->pMarkData = 0x%x\n",pComponentPrivate->pMarkData); 1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pMarkBuf){ 1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->hMarkTargetComponent = pComponentPrivate->pMarkBuf->hMarkTargetComponent; 1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->pMarkData = pComponentPrivate->pMarkBuf->pMarkData; 1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkBuf = NULL; 1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pMarkData) { 1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->hMarkTargetComponent = pComponentPrivate->hMarkTargetComponent; 1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->pMarkData = pComponentPrivate->pMarkData; 1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkData = NULL; 1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nUnhandledFillThisBuffers++; 1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write (pComponentPrivate->dataPipe[1], &pBuffer, 1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof (OMX_BUFFERHEADERTYPE*)); 1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nFillThisBufferCount++; 1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Exiting FillThisBuffer()\n"); 1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentDeinit() this methold will de init the component 1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentDeInit(OMX_HANDLETYPE pHandle) 1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* inform audio manager to remove the streamID*/ 1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* compose the data */ 1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = 1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G729DEC_COMPONENT_PRIVATE *)pComponent->pComponentPrivate; 1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERF, 1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_BoundaryStart | PERF_BoundaryCleanup); 1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::ComponentDeInit\n",__LINE__); 1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(pComponentPrivate->fdwrite); 1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(pComponentPrivate->fdread); 1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = RMProxy_NewSendCommand(pHandle, RMProxy_FreeResource, OMX_G729_Decoder_COMPONENT, 0, 3456,NULL); 1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::OMX_G729Decoder.c :: Error returned from destroy ResourceManagerProxy thread\n", 1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = RMProxy_Deinitalize(); 1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::Error returned from destroy ResourceManagerProxy thread\n", 1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 1; 1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G729DEC_StopComponentThread(pHandle); 1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for thread to exit so we can get the status into "error" */ 1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InLoaded_mutex); 1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InLoaded_threshold); 1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InIdle_mutex); 1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InIdle_threshold); 1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->AlloBuf_mutex); 1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->AlloBuf_threshold); 1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->InLoaded_event)); 1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->InIdle_event)); 1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->AlloBuf_event)); 1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* close the pipe handles */ 1547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_FreeCompResources(pHandle); 1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::After G729DEC_FreeCompResources\n",__LINE__); 1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERF, 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_BoundaryComplete | PERF_BoundaryCleanup); 1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_Done(pComponentPrivate->pPERF); 1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1556b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->sDeviceString); 1557b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pInputBufferList); 1558b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pOutputBufferList); 1559b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->g729Params); 1560b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pcmParams); 1561b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->sPriorityMgmt); 1562b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]); 1563b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]); 1564b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pInPortFormat); 1565b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pOutPortFormat); 1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1567b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate); 1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d ::After free(pComponentPrivate)\n",__LINE__); 1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ComponentTunnelRequest() this method is not implemented in 1.5 1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update application callbacks 1578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the application. 1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentTunnelRequest (OMX_HANDLETYPE hComp, 1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nPort, OMX_HANDLETYPE hTunneledComp, 1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nTunneledPort, 1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TUNNELSETUPTYPE* pTunnelSetup) 1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNotImplemented; 1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT (stderr, "Inside the ComponentTunnelRequest\n"); 1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * AllocateBuffer() 1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, 1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes) 1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufferHeader = NULL; 1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G729DEC_COMPONENT_PRIVATE *) 1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G729DEC_COMPONENT_PRIVATE*) 1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[nPortIndex]; 1631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: pPortDef = 0x%x\n", __LINE__,pPortDef); 1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: pPortDef->bEnabled = %d\n", __LINE__,pPortDef->bEnabled); 1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("pPortDef->bEnabled = %d\n", pPortDef->bEnabled); 1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(pPortDef->bEnabled)) 1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 1; 1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->AlloBuf_threshold, &pComponentPrivate->AlloBuf_mutex); 1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_WaitForEvent(&(pComponentPrivate->AlloBuf_event)); 1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pBufferHeader, OMX_BUFFERHEADERTYPE); 1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pBuffer = (OMX_U8 *)malloc(nSizeBytes + EXTRA_BUFFBYTES); 1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(pBufferHeader->pBuffer, 0x0, nSizeBytes + EXTRA_BUFFBYTES); 1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_MEMPRINT("%d :: [ALLOC] %p\n",__LINE__,pBufferHeader->pBuffer); 1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufferHeader->pBuffer == NULL) { 1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufferHeader) { 1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pBufferHeader); 1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader = NULL; 1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pBuffer += CACHE_ALIGNMENT; 1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nPortIndex == G729DEC_INPUT_PORT) { 1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = nPortIndex; 1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = -1; 1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers] = pBufferHeader; 1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[pComponentPrivate->pInputBufferList->numBuffers] = 0; 1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pComponentPrivate->pInputBufferList->pBufHdr[%d] = %p\n",pComponentPrivate->pInputBufferList->numBuffers,pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers]); 1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bufferOwner[pComponentPrivate->pInputBufferList->numBuffers++] = 1; 1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Setting pPortDef->bPopulated = OMX_TRUE for input port\n"); 1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (nPortIndex == G729DEC_OUTPUT_PORT) { 1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = -1; 1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = nPortIndex; 1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[pComponentPrivate->pOutputBufferList->numBuffers] = pBufferHeader; 1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[pComponentPrivate->pOutputBufferList->numBuffers] = 0; 1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bufferOwner[pComponentPrivate->pOutputBufferList->numBuffers++] = 1; 1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Setting pPortDef->bPopulated = OMX_TRUE for input port\n"); 1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bEnabled)&& 1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->bEnabled) && 1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->InLoaded_readytoidle)) 1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 1698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 1701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InLoaded_threshold); 1702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 1703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InLoaded_event)); 1705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pAppPrivate = pAppPrivate; 1709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pBufferHeader->pInputPortPrivate, G729DEC_BufParamStruct); 1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G729DEC_BufParamStruct*)pBufferHeader->pInputPortPrivate)->bNoUseDefaults = OMX_FALSE; /* setting a flag to use defaults until client says otherwise */ 1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pPlatformPrivate = pComponentPrivate; 1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nAllocLen = nSizeBytes; 1713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMajor = G729DEC_MAJOR_VER; 1714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMinor = G729DEC_MINOR_VER; 1715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nVersion = pBufferHeader->nVersion.nVersion; 1716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nSize = sizeof(OMX_BUFFERHEADERTYPE); 1717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pBuffer = pBufferHeader; 1718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ReceivedBuffer(pComponentPrivate->pPERF, 1721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (*pBuffer)->pBuffer, nSizeBytes, 1722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleMemory); 1723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bEnableCommandPending && pPortDef->bPopulated) { 1726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SendCommand (pComponentPrivate->pHandle, 1727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandPortEnable, 1728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bEnableCommandParam,NULL); 1729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("AllocateBuffer returning %d\n",eError); 1733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * FreeBuffer() 1740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComponent handle for this instance of the component 1742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FreeBuffer( 1750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) 1753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE * pComponentPrivate = NULL; 1757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* buff = NULL; 1758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* tempBuff = NULL; 1759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 i =0; 1760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 inputIndex = -1; 1761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 outputIndex = -1; 1762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = NULL; 1763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G729DEC_COMPONENT_PRIVATE *) 1766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 1768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Entering FreeBuffer\n"); 1769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nPortIndex == G729DEC_INPUT_PORT){ 1770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) 1771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buff = pComponentPrivate->pInputBufferList->pBufHdr[i]; 1773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buff == pBuffer) 1774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Found matching input buffer\n"); 1776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("buff = %p\n", buff); 1777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pBuffer = %p\n", pBuffer); 1778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inputIndex = i; 1779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 1782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("This is not a match\n"); 1784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("buff = %p\n", buff); 1785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pBuffer = %p\n", pBuffer); 1786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (nPortIndex == G729DEC_OUTPUT_PORT){ 1790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) 1791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buff = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 1793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buff == pBuffer) 1794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Found matching output buffer\n"); 1796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("buff = %p\n", buff); 1797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pBuffer = %p\n", pBuffer); 1798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin outputIndex = i; 1799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 1802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("This is not a match\n"); 1804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("buff = %p\n", buff); 1805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pBuffer = %p\n", pBuffer); 1806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (inputIndex != -1) 1810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->bufferOwner[inputIndex] == 1) 1812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_SendingBuffer(pComponentPrivate->pPERF, 1815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->pBuffer, 1816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->nAllocLen, 1817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleMemory ); 1818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff = pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->pBuffer; 1820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (tempBuff != NULL) 1821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff -= CACHE_ALIGNMENT; 1823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MEMFREE_STRUCT(tempBuff); 1824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1825b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->pInputPortPrivate); 1826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MEMFREE_STRUCT(pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]); 1828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->numBuffers--; 1829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers < 1830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->nBufferCountMin) 1831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->bPopulated = OMX_FALSE; 1833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->bEnabled && 1835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bLoadedCommandPending == OMX_FALSE && 1836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->curState == OMX_StateIdle || 1837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StateExecuting || 1838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StatePause)) 1839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 1843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorPortUnpopulated, 1844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nPortIndex, 1845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (outputIndex != -1) 1849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->bufferOwner[outputIndex] == 1) { 1851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_SendingBuffer(pComponentPrivate->pPERF, 1853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->pBuffer, 1854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->nAllocLen, 1855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleMemory ); 1856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff = pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->pBuffer; 1858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (tempBuff != NULL) 1859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff -= CACHE_ALIGNMENT; 1861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MEMFREE_STRUCT(tempBuff); 1862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1863b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_G729MEMFREE_STRUCT(pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->pInputPortPrivate); 1864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MEMFREE_STRUCT(pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]); 1866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers--; 1868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers < 1869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->nBufferCountMin) 1870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bPopulated = OMX_FALSE; 1872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bEnabled && 1874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bLoadedCommandPending == OMX_FALSE && 1875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->curState == OMX_StateIdle || 1876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StateExecuting || 1877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StatePause)) 1878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 1882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorPortUnpopulated, 1883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nPortIndex, 1884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 1888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_EPRINT("OMX_ErrorBadParameter.\n"); 1891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((!pComponentPrivate->pInputBufferList->numBuffers && 1893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin !pComponentPrivate->pOutputBufferList->numBuffers) && 1894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded) 1895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 1897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InIdle_mutex); 1899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InIdle_threshold); 1900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InIdle_mutex); 1901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InIdle_event)); 1903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bDisableCommandPending &&(pComponentPrivate->pInputBufferList->numBuffers + pComponentPrivate->pOutputBufferList->numBuffers == 0)) 1906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SendCommand (pComponentPrivate->pHandle, OMX_CommandPortDisable, 1908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandParam,NULL); 1909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("Exiting. Returning = 0x%x\n", eError); 1911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE UseBuffer ( 1917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 1919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 1921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 1922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U8* pBuffer) 1923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufferHeader = NULL; 1928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G729DEC_COMPONENT_PRIVATE *) 1930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G729DEC_COMPONENT_PRIVATE*) 1933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[nPortIndex]; 1934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pPortDef->bPopulated = %d\n",pPortDef->bPopulated); 1935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pPortDef->bEnabled) 1936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: In AllocateBuffer\n", __LINE__); 1938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nSizeBytes != pPortDef->nBufferSize || pPortDef->bPopulated) 1942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: In AllocateBuffer\n", __LINE__); 1944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pBufferHeader, OMX_BUFFERHEADERTYPE); 1948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nPortIndex == G729DEC_OUTPUT_PORT) { 1949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = -1; 1950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = nPortIndex; 1951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[pComponentPrivate->pOutputBufferList->numBuffers] = pBufferHeader; 1952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[pComponentPrivate->pOutputBufferList->numBuffers] = 0; 1953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bufferOwner[pComponentPrivate->pOutputBufferList->numBuffers++] = 0; 1954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = nPortIndex; 1960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = -1; 1961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers] = pBufferHeader; 1962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[pComponentPrivate->pInputBufferList->numBuffers] = 0; 1963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bufferOwner[pComponentPrivate->pInputBufferList->numBuffers++] = 0; 1964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[G729DEC_OUTPUT_PORT]->bEnabled)&& 1970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[G729DEC_INPUT_PORT]->bEnabled) && 1971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->InLoaded_readytoidle)) 1972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 1974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 1977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InLoaded_threshold); 1978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 1979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InLoaded_event)); 1981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pAppPrivate = pAppPrivate; 1986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729MALLOC_STRUCT(pBufferHeader->pInputPortPrivate, G729DEC_BufParamStruct); 1987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G729DEC_BufParamStruct*)pBufferHeader->pInputPortPrivate)->bNoUseDefaults = OMX_FALSE; /* setting a flag to use defaults until client says otherwise */ 1988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pPlatformPrivate = pComponentPrivate; 1989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nAllocLen = nSizeBytes; 1990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMajor = G729DEC_MAJOR_VER; 1991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMinor = G729DEC_MINOR_VER; 1992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nVersion = pBufferHeader->nVersion.nVersion; 1993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pBuffer = pBuffer; 1994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nSize = sizeof(OMX_BUFFERHEADERTYPE); 1995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *ppBufferHdr = pBufferHeader; 1996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("pBufferHeader = %p\n",pBufferHeader); 1997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bEnableCommandPending && pPortDef->bPopulated) { 1998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SendCommand (pComponentPrivate->pHandle, 1999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandPortEnable, 2000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bEnableCommandParam,NULL); 2001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn GetExtensionIndex() description for GetExtensionIndex 2009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GetExtensionIndex(). 2010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Returns index for vendor specific settings. 2011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 2013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetExtensionIndex( 2016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 2017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_STRING cParameterName, 2018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_INDEXTYPE *pIndexType) 2019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(strcmp(cParameterName,"OMX.TI.index.config.g729headerinfo"))) 2023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 2024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pIndexType = OMX_IndexCustomG729DecHeaderInfoConfig; 2025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(cParameterName,"OMX.TI.index.config.g729.datapath"))) 2027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 2028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pIndexType = OMX_IndexCustomG729DecDataPath; 2029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 2033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn ComponentRoleEnum() description for ComponentRoleEnum() 2041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Returns the role at the given index 2043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 2045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 2048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 2049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 2050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nIndex) 2051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNotImplemented; 2055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 2059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fns Sleep replace for WIN CE 2062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_CreateEvent(OMX_Event *event){ 2065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = OMX_ErrorNone; 2066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin HANDLE createdEvent = NULL; 2067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == NULL){ 2068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin event->event = CreateEvent(NULL, TRUE, FALSE, NULL); 2072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event->event == NULL) 2073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = (int)GetLastError(); 2074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return ret; 2076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_SignalEvent(OMX_Event *event){ 2079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = OMX_ErrorNone; 2080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == NULL){ 2081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SetEvent(event->event); 2085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = (int)GetLastError(); 2086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return ret; 2088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_WaitForEvent(OMX_Event *event) { 2091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = OMX_ErrorNone; 2092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == NULL){ 2093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForSingleObject(event->event, INFINITE); 2097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = (int)GetLastError(); 2098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return ret; 2100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_DestroyEvent(OMX_Event *event) { 2103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = OMX_ErrorNone; 2104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == NULL){ 2105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin CloseHandle(event->event); 2109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return ret; 2111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2113