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