1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details. 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ============================================================================= 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Texas Instruments OMAP (TM) Platform Software 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Use of this software is controlled by the terms and conditions found 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* in the license agreement under which this software has been supplied. 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* =========================================================================== */ 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @file OMX_AacEnc_Utils.c 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* This file implements OMX Component for AAC encoder that 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* is fully compliant with the OMX Audio specification 1.0. 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @path $(CSLPATH)\ 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @rev 1.0 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ---------------------------------------------------------------------------- 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! Revision History 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! =================================== 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 13-Dec-2005 mf: Initial Version. Change required per OMAPSWxxxxxxxxx 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! to provide _________________. 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 13-Dec-2005 mf: 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! This is newest file 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* =========================================================================== */ 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**************************************************************** 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* INCLUDE FILES 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin****************************************************************/ 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <windows.h> 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <oaf_osal.h> 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <omx_core.h> 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdlib.h> 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <wchar.h> 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <unistd.h> 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/types.h> 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/wait.h> 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/types.h> 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/stat.h> 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <dlfcn.h> 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <malloc.h> 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <memory.h> 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <fcntl.h> 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <errno.h> 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <dlfcn.h> 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <dbapi.h> 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <string.h> 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h> 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_AacEnc_Utils.h" 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "Aacencsocket_ti.h" 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <encode_common_ti.h> 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_AacEnc_CompThread.h" 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "usn.h" 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <ResourceManagerProxyAPI.h> 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define HASHINGENABLE 1 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @AACENCFill_LCMLInitParams () This function is used by the component thread to 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* fill the all of its initialization parameters, buffer deatils etc 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* to LCML structure, 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param plcml_Init pointer to LCML structure to be filled 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*static AACENC_COMPONENT_PRIVATE *pComponentPrivate_CC;*/ 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCFill_LCMLInitParams(OMX_HANDLETYPE pComponent, LCML_DSP *plcml_Init, OMX_U16 arr[]) 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIpBuf =0 ,nIpBufSize=0 ,nOpBuf = 0 ,nOpBufSize=0; 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 i = 0; 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pTemp = NULL; 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 size_lcml = 0; 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char *ptr; 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_AACENC_BUFHEADERTYPE *pTemp_lcml = NULL; 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_DSP_INTERFACE *pHandle = (LCML_DSP_INTERFACE *)pComponent; 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate = pHandle->pComponentPrivate; 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_STRMATTR *strmAttr = NULL; 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 HigherBitsSamplingRate = 0; 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 FramesPerOutBuf = 0; 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 Channels = 0; 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: AACENCFill_LCMLInitParams\n ",__LINE__); 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nIpBuf = pComponentPrivate->pInputBufferList->numBuffers; 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nRuntimeInputBuffers = nIpBuf; 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nIpBufSize = pComponentPrivate->pPortDef[INPUT_PORT]->nBufferSize; 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nOpBuf = pComponentPrivate->pOutputBufferList->numBuffers; 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nOpBufSize = pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferSize; 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*saving a copy a number of output buffers */ 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nRuntimeOutputBuffers = nOpBuf; 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*recovering the value for the number of frames per Ouput Buffer */ 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FramesPerOutBuf = (OMX_U16)pComponentPrivate->FramesPer_OutputBuffer; 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: Frames per output buffer = %d \n\n",__LINE__, FramesPerOutBuf); 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details -----------\n",__LINE__); 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input Buffer Count = %ld \n",__LINE__,nIpBuf); 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input Buffer Size = %ld\n",__LINE__,nIpBufSize); 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Count = %ld\n",__LINE__,nOpBuf); 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Size = %ld\n",__LINE__,nOpBufSize); 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details ------------\n",__LINE__); 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Fill Input Buffers Info for LCML */ 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->In_BufInfo.nBuffers = nIpBuf; 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->In_BufInfo.nSize = nIpBufSize; 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->In_BufInfo.DataTrMethod = DMM_METHOD; 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Fill Output Buffers Info for LCML */ 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->Out_BufInfo.nBuffers = nOpBuf; 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->Out_BufInfo.nSize = nOpBufSize; 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->Out_BufInfo.DataTrMethod = DMM_METHOD; 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Copy the node information*/ 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->NodeInfo.nNumOfDLLs = 3; 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[0].uuid = (struct DSP_UUID*)&MPEG4AACENC_SN_UUID; 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[0].DllName,AACENC_DLL_NAME); 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[0].eDllType = DLL_NODEOBJECT; 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[1].uuid = (struct DSP_UUID*)&MPEG4AACENC_SN_UUID; 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[1].DllName,AACENC_DLL_NAME); 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[1].eDllType = DLL_DEPENDENT; 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[2].uuid = &USN_TI_UUID; 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[2].DllName,AACENC_USN_DLL_NAME); 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[2].eDllType = DLL_DEPENDENT; 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->DeviceInfo.TypeofDevice = 0; 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Comp: OMX_AacEncUtils.c\n",__LINE__); 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->dasfmode == 1) { 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: Codec is configuring to DASF mode\n",__LINE__); 178b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(strmAttr, LCML_STRMATTR); 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "strmAttr %p \n",strmAttr); 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->strmAttr = strmAttr; 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: [ALLOC] %p\n",__LINE__,strmAttr); 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strmAttr->uSegid = 0; 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strmAttr->uAlignment = 0; 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strmAttr->uTimeout = 1000; 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strmAttr->uBufsize = INPUT_AACENC_BUFFER_SIZE_DASF; 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strmAttr->uNumBufs = NUM_AACENC_INPUT_BUFFERS_DASF; 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strmAttr->lMode = STRMMODE_PROCCOPY; 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->DeviceInfo.TypeofDevice = 1; 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->DeviceInfo.TypeofRender = 1; 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->DeviceInfo.AllUUIDs[0].uuid = &DCTN_TI_UUID; 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->DeviceInfo.DspStream = strmAttr; 194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*copy the other information*/ 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->SegID = OMX_AACENC_DEFAULT_SEGMENT; 198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->Timeout = -1;/*OMX_AACENC_SN_TIMEOUT;*/ 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->Alignment = 0; 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->Priority = OMX_AACENC_SN_PRIORITY; 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->ProfileID = -1; 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->unNumChannels = (OMX_U16)pComponentPrivate->aacParams[OUTPUT_PORT]->nChannels; /*Number of Channels*/ 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* splitting values for Sample rate and bit rate */ 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ulSamplingRate = (OMX_U16)pComponentPrivate->aacParams[OUTPUT_PORT]->nSampleRate; /*Sampling rate*/ 206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin HigherBitsSamplingRate =(OMX_U16)((pComponentPrivate->aacParams[OUTPUT_PORT]->nSampleRate >>16)& 0xFFFF); 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->unBitrate = pComponentPrivate->aacParams[OUTPUT_PORT]->nBitRate; /*Bit rate 2bytes*/ 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nObjectType = pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile; /*Object Type */ 209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Remaping Number of channels for SN */ 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* SN does use 0: Mono and 1: stereo */ 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->unNumChannels==2) 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Channels=1; 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->unNumChannels==1) 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Channels=0; 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatRAW || 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatMP4FF){ 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->File_Format = 0; 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "OMX_AUDIO_AACStreamFormatRAW \n"); 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatADIF) { 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->File_Format = 1; 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "OMX_AUDIO_AACStreamFormatADIF \n"); 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if((pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatMP4ADTS) || 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatMP2ADTS) ) 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->File_Format = 2; 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "OMX_AUDIO_AACStreamFormatMP2ADTS \n"); 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->dasfmode == 1) { 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AAC ENCODER RUNNING UNDER DASF MODE\n",__LINE__); 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[0] = 2; /*Number of Streams*/ 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[1] = 0; /*ID of the Input Stream*/ 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[2] = 1; /*Type of Input Stream*/ 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[3] = NUM_AACENC_INPUT_BUFFERS_DASF; /*Number of buffers for Input Stream*/ 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[4] = 1; /*ID of the Output Stream*/ 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[5] = 0; /*Type of Output Stream*/ 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[6] = 2; /*Number of buffers for Output Stream*/ 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[7] = 1; /*PNS Enable*/ 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[8] = 1; /*TNS Enable*/ 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[9] = Channels; /*Number of Channels*/ 250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[10] = pComponentPrivate->ulSamplingRate; /*Sampling rate- Lower bits*/ 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[11] = HigherBitsSamplingRate; /*Sampling rate -Higher bits */ 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[12] = (OMX_U16)(pComponentPrivate->unBitrate & 0xFFFF); /*Bit rate 2bytes*/ 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[13] = (OMX_U16)(pComponentPrivate->unBitrate >> 16); /*Bit rate 2bytes*/ 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[14] = (OMX_U16)pComponentPrivate->nObjectType; /*Object Type */ 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[15] = (OMX_U16)pComponentPrivate->bitRateMode; /*bitrateMode*/ 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[16] = (OMX_U16)pComponentPrivate->File_Format; /*FileFormat*/ 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[17] = FramesPerOutBuf; /*FramesPerOutBuf*/ 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[18] = END_OF_CR_PHASE_ARGS; 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->dasfmode == 0) { 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AAC ENCODER RUNNING UNDER FILE MODE\n",__LINE__); 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[0] = 2; /*Number of Streams*/ 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[1] = 0; /*ID of the Input Stream*/ 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[2] = 0; /*Type of Input Stream*/ 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers) { 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[3] = (OMX_U16) pComponentPrivate->pInputBufferList->numBuffers; /*Number of buffers for Input Stream*/ 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "arr[3] InputBuffers %d \n",arr[3]); 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[3] = 1; 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[4] = 1; /*ID of the Output Stream*/ 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[5] = 0; /*Type of Output Stream*/ 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers) { 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[6] = (OMX_U16) pComponentPrivate->pOutputBufferList->numBuffers; /*Number of buffers for Output Stream*/ 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "arr[6] Output Buffers%d \n",arr[6]); 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[6] = 1; 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[7] = 1; /*PNS Enable*/ 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[8] = 1; /*TNS Enable*/ 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Adjusting the value for SN enum-type compatibility */ 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[9] = Channels; /*Number of Channels*/ 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "arr[9] Channels %d \n",arr[9]); 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[10] = pComponentPrivate->ulSamplingRate; /*Sampling rate- Lower bits*/ 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[11] = HigherBitsSamplingRate; /*Sampling rate -Higher bits */ 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[12] = (OMX_U16)(pComponentPrivate->unBitrate & 0xFFFF); /*Bit rate 2bytes*/ 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[13] = (OMX_U16)(pComponentPrivate->unBitrate >> 16); /*Bit rate 2bytes*/ 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[14] = (OMX_U16)pComponentPrivate->nObjectType; /*bitsperSample;*/ 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "arr[14] Object Type %d \n",arr[14]); 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[15] = (OMX_U16)pComponentPrivate->bitRateMode; /*bitrateMode*/ 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "arr[15] Bit Rate %d \n",arr[15]); 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[16] = pComponentPrivate->File_Format; /*FileFormat*/ 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "arr[16] format type %d \n",arr[16]); 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[17] = FramesPerOutBuf; /*FramesPerOutBuf*/ 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[18] = END_OF_CR_PHASE_ARGS; 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plcml_Init->pCrPhArgs = arr; 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Comp: OMX_AacEncUtils.c\n",__LINE__); 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size_lcml = nIpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE); 308b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE(ptr, size_lcml,char); 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml = (LCML_AACENC_BUFHEADERTYPE *)ptr; 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[INPUT_PORT] = pTemp_lcml; 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i<nIpBuf; i++) 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = pComponentPrivate->pInputBufferList->pBufHdr[i]; 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nAllocLen = nIpBufSize; 316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFilledLen = nIpBufSize; 317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER; 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER; 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->buffer = pTemp; 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirInput; 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 324b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pIpParam, 325b65f253fdc60f6208a54911bee793d225f23cdf8James Dong sizeof(AACENC_UAlgInBufParamStruct), 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AACENC_UAlgInBufParamStruct); 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "pTemp_lcml->pIpParam %p \n",pTemp_lcml->pIpParam); 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->pIpParam->bLastBuffer = 0; 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* This means, it is not a last buffer. This flag is to be modified by 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application to indicate the last buffer */ 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml++; 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Allocate memory for all output buffer headers, This memory pointer will be sent to LCML */ 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size_lcml = nOpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE); 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 339b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE(ptr, size_lcml,char); 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml = (LCML_AACENC_BUFHEADERTYPE *)ptr; 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[OUTPUT_PORT] = pTemp_lcml; 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i<nOpBuf; i++) 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nAllocLen = nOpBufSize; 348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFilledLen = nOpBufSize; 349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER; 350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER; 351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nVersion = pTemp->nVersion.nVersion; 352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* This means, it is not a last buffer. This flag is to be modified by 355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the application to indicate the last buffer */ 356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->buffer = pTemp; 357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirOutput; 358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* SN : Each output buffer may be accompanied by an output buffer parameters structure*/ 359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 360b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pOpParam, 361b65f253fdc60f6208a54911bee793d225f23cdf8James Dong sizeof(AACENC_UAlgOutBufParamStruct), 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AACENC_UAlgOutBufParamStruct); 363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: size of pOpParam: %d \n",__LINE__,sizeof(pTemp_lcml->pOpParam->unFrameSizes)); 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: numframes of pOpParam: %d \n\n",__LINE__,sizeof(pTemp_lcml->pOpParam->unNumFramesEncoded)) ; 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "UTIL: pTemp_lcml->pOpParam %p \n",pTemp_lcml->pOpParam); 367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*pTemp++;*/ 370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml++; 371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 1; 373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bBypassDSP = 0; 374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bNoIdleOnStop= OMX_FALSE; 375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 377b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE_DSPALIGN(pComponentPrivate->ptAlgDynParams, 378b65f253fdc60f6208a54911bee793d225f23cdf8James Dong sizeof(MPEG4AACENC_UALGParams), 379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin MPEG4AACENC_UALGParams); 380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->ptAlgDynParams %p \n",pComponentPrivate->ptAlgDynParams); 382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nLcml_nCntIp = 0; 385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nLcml_nCntOpReceived = 0; 386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Exiting Fill_LCMLInitParams\n",__LINE__); 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Returning = 0x%x\n",__LINE__,eError); 392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENC_StartComponentThread() This function is called by the component to create 398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* the component thread, command pipe, data pipe and LCML Pipe. 399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_StartComponentThread(OMX_HANDLETYPE pComponent) 411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_attr_t attr; 417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset(&attr, 0, sizeof(attr)); 418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin attr.__inheritsched = PTHREAD_EXPLICIT_SCHED; 419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin attr.__schedparam.__sched_priority = OMX_AUDIO_DECODER_THREAD_PRIORITY; 420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering AACENC_StartComponentThread\n", __LINE__); 424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Initialize all the variables*/ 425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsStopping = 0; 426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsThreadstop = 0; 427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf = 0; 428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf = 0; /* Initializing counter */ 429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->app_nBuf = 0; /* Not Used */ 430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->num_Op_Issued = 0; 431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->num_Sent_Ip_Buff = 0; 432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->num_Reclaimed_Op_Buff = 0; /* Not Used */ 433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsEOFSent = 0; 434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* create the pipe used to send buffers to the thread */ 436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = pipe (pComponentPrivate->cmdDataPipe); 437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError) 438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside AACENC_StartComponentThread\n", __LINE__); 440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* create the pipe used to send buffers to the thread */ 445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = pipe (pComponentPrivate->dataPipe); 446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError) 447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside AACENC_StartComponentThread\n", __LINE__); 449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* create the pipe used to send commands to the thread */ 454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = pipe (pComponentPrivate->cmdPipe); 455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError) { 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside AACENC_StartComponentThread\n", __LINE__); 457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* create the pipe used to send commands to the thread */ 462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 463b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = pthread_create (&(pComponentPrivate->ComponentThread), &attr, AACENC_ComponentThread, pComponentPrivate); 464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 465b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = pthread_create (&(pComponentPrivate->ComponentThread), NULL, AACENC_ComponentThread, pComponentPrivate); 466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError || !pComponentPrivate->ComponentThread) { 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside AACENC_StartComponentThread\n", __LINE__); 469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: pComponent[%x] AACENC_StartComponentThread\n", __LINE__, (int)pComponent) ; 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: pHandle[%x] AACENC_StartComponentThread\n", __LINE__, (int)pHandle) ; 475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bCompThreadStarted = 1; 476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting from AACENC_StartComponentThread\n", __LINE__); 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError); 480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENC_FreeCompResources() This function is called by the component during 486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* de-init to close component thread, Command pipe, data pipe & LCML pipe. 487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_FreeCompResources(OMX_HANDLETYPE pComponent) 499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE err = OMX_ErrorNone; 505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIpBuf = 0; 506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nOpBuf = 0; 507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, " %d :: Entering AACENC_FreeCompResources\n",__LINE__); 509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bPortDefsAllocated) { 510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nIpBuf = pComponentPrivate->pPortDef[INPUT_PORT]->nBufferCountActual; 511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nOpBuf = pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferCountActual; 512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bCompThreadStarted) { 515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CLOSE_PIPE(pComponentPrivate->dataPipe[0],err); 516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CLOSE_PIPE(pComponentPrivate->dataPipe[1],err); 517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CLOSE_PIPE(pComponentPrivate->cmdPipe[0],err); 518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CLOSE_PIPE(pComponentPrivate->cmdPipe[1],err); 519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CLOSE_PIPE(pComponentPrivate->cmdDataPipe[0],err); 520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CLOSE_PIPE(pComponentPrivate->cmdDataPipe[1],err); 521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bPortDefsAllocated) { 524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->pPortDef[INPUT_PORT]); 525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->pPortDef[OUTPUT_PORT]); 526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->aacParams[INPUT_PORT]); 527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->aacParams[OUTPUT_PORT]); 528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->pcmParam[INPUT_PORT]); 529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->pcmParam[OUTPUT_PORT]); 530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 0; 532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "\n\n FreeCompResources: Destroying mutexes.\n\n"); 535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InLoaded_mutex); 536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InLoaded_threshold); 537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InIdle_mutex); 539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InIdle_threshold); 540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->AlloBuf_mutex); 542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->AlloBuf_threshold); 5430db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong 5440db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_mutex_destroy(&bufferReturned_mutex); 5450db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_cond_destroy(&bufferReturned_condition); 546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 0; 548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->InLoaded_event)); 549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->InIdle_event)); 550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->AlloBuf_event)); 551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting AACENC_FreeCompResources()\n",__LINE__); 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError); 556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @AACENC_CleanupInitParams() This function is called by the component during 563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* de-init to free structues that are been allocated at intialization stage 564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_CleanupInitParams(OMX_HANDLETYPE pComponent) 575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_AACENC_BUFHEADERTYPE *pTemp_lcml=NULL; 579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIpBuf = 0; 581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nOpBuf = 0; 582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 i = 0; 583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering AACENC_CleanupInitParams()\n", __LINE__); 585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->strmAttr); 586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml = pComponentPrivate->pLcmlBufHeader[INPUT_PORT]; 588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nIpBuf = pComponentPrivate->nRuntimeInputBuffers; 589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i<nIpBuf; i++) 590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 591b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT_DSPALIGN(pTemp_lcml->pIpParam, AACENC_UAlgInBufParamStruct); 592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml++; 593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Free ouput buffers params */ 596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml = pComponentPrivate->pLcmlBufHeader[OUTPUT_BUFFER]; 597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nOpBuf = pComponentPrivate->nRuntimeOutputBuffers; 598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i<nOpBuf; i++) 599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 600b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT_DSPALIGN(pTemp_lcml->pOpParam, AACENC_UAlgOutBufParamStruct); 601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml++; 602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->pLcmlBufHeader[INPUT_PORT]); 605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MEMFREE_STRUCT(pComponentPrivate->pLcmlBufHeader[OUTPUT_PORT]); 606b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->ptAlgDynParams, MPEG4AACENC_UALGParams); 607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->dasfmode == 1) 608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 609b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->pParams, AACENC_AudioCodecParams); 610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting Successfully AACENC_CleanupInitParams()\n",__LINE__); 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError); 614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENC_StopComponentThread() This function is called by the component during 620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* de-init to close component thread, Command pipe, data pipe & LCML pipe. 621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_StopComponentThread(OMX_HANDLETYPE pComponent) 633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE threadError = OMX_ErrorNone; 639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int pthreadError = 0; 640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, " %d :: UTIL: Entering AACENC_StopComponentThread\n",__LINE__); 642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Join the component thread*/ 643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsThreadstop = 1; 644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin write (pComponentPrivate->cmdPipe[1], &pComponentPrivate->bIsThreadstop, sizeof(OMX_U16)); 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "UTIL: pComponentPrivate->bIsThreadstop = %ld \n",pComponentPrivate->bIsThreadstop); 646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthreadError = pthread_join (pComponentPrivate->ComponentThread,(void*)&threadError); 647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (0 != pthreadError) 648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error closing ComponentThread - pthreadError = %d\n",__LINE__,pthreadError); 651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Check for the errors*/ 655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (OMX_ErrorNone != threadError && OMX_ErrorNone != eError) 656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error while closing Component Thread\n",__LINE__); 659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, " %d :: UTIL: Exiting AACENC_StopComponentThread\n",__LINE__); 664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENCHandleCommand() This function is called by the component when ever it 671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* receives the command from the application 672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponentPrivate Component private data 674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 AACENCHandleCommand(AACENC_COMPONENT_PRIVATE *pComponentPrivate) 684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMMANDTYPE command; 688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE commandedState; 689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 commandData; 690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE pLcmlHandle = pComponentPrivate->pLcmlHandle; 691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE rm_error = OMX_ErrorNone; 692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 arr[100]={0}; 694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 ret = 0; 695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 i=0; 696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char *p = "start"; 697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char *pArgs = "damedesuStr"; 698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 pValues[4]={0}; 699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 pValues1[4]={0}; 700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_CALLBACKTYPE cb; 701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_DSP *pLcmlDsp = NULL; 702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_AACENC_BUFHEADERTYPE *pLcmlHdr; 703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int inputPortFlag = 0; 704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int outputPortFlag = 0; 705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: AACENC: Entering AACENCHandleCommand Function - curState = %d\n",__LINE__,pComponentPrivate->curState); 707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = read (pComponentPrivate->cmdPipe[0], &command, sizeof (command)); 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TRACE1(pComponentPrivate->dbg, "%d :: AACENC: Command pipe has been read = %ld \n",__LINE__,ret); 709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ret == -1) 710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error in Reading from the Data pipe\n", __LINE__); 712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = read (pComponentPrivate->cmdDataPipe[0], &commandData, sizeof (commandData)); 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TRACE1(pComponentPrivate->dbg, "%d :: AACENC: Command data pipe has been read = %ld \n",__LINE__,ret); 717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ret == -1) 718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error in Reading from the Data pipe\n", __LINE__); 720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedCommand(pComponentPrivate->pPERFcomp,command,commandData,PERF_ModuleLLMM); 726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand :: Command is = %d\n",__LINE__,command); 729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (command == OMX_CommandStateSet) 730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin commandedState = (OMX_STATETYPE)commandData; 732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ( pComponentPrivate->curState==commandedState) 733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorSameState, 738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Same State Given by Application\n",__LINE__); 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: AACENC: State Given is: %d \n", __LINE__, commandedState); 742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch(commandedState) 746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_StateIdle: 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d: AACENCHandleCommand: Cmd Idle \n",__LINE__); 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "AACENC: curstate = %d\n",pComponentPrivate->curState); 750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateLoaded) 751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundarySetup); 755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->dasfmode == 1) 757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->dasfmode == 1) 759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled= FALSE; 761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated= FALSE; 762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->streamID==0) 764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Insufficient resources\n", __LINE__); 767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "AACENC: State changed to OMX_StateInvalid Line %d\n",__LINE__); 769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateInvalid; 770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError, 774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMajor, 775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "No Stream ID Available"); 776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [INPUT_PORT]->bPopulated %d \n",__LINE__,pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated); 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [INPUT_PORT]->bEnabled %d \n",__LINE__,pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled); 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [OUTPUT_PORT]->bPopulated %d \n",__LINE__,pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated); 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [OUTPUT_PORT]->bEnabled %d \n",__LINE__,pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled); 784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated && pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled) { 786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin inputPortFlag = 1; 787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated && !pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled) { 790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin inputPortFlag = 1; 791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated && pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled) { 794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin outputPortFlag = 1; 795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated && !pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled) { 798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin outputPortFlag = 1; 799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "inputPortFlag = %d\n",inputPortFlag); 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "outputPortFlag = %d\n",outputPortFlag); 803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!(inputPortFlag && outputPortFlag)) 804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 1; 807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->InLoaded_threshold, &pComponentPrivate->InLoaded_mutex); 810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_WaitForEvent(&(pComponentPrivate->InLoaded_event)); 814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cb.LCML_Callback = (void *) AACENCLCML_Callback; 818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHandle = (OMX_HANDLETYPE) AACENCGetLCMLHandle(pComponentPrivate); 819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pLcmlHandle == NULL) 821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: AACENC: LCML Handle is NULL........exiting..\n",__LINE__); 823b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorHardware; 824b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 825b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 826b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 827b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 828b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 829b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Got handle of dsp via phandle filling information about DSP 834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin specific things */ 835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlDsp = (((LCML_DSP_INTERFACE*)pLcmlHandle)->dspCodec); 836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = AACENCFill_LCMLInitParams(pHandle, pLcmlDsp, arr); 837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) 838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error returned from AACENCFill_LCMLInitParams()\n",__LINE__); 840b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 841b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 842b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 843b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 844b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorMajor, 845b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pLcmlHandle = (LCML_DSP_INTERFACE *)pLcmlHandle; 849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*filling create phase params */ 850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cb.LCML_Callback = (void *) AACENCLCML_Callback; 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: Calling LCML_InitMMCodec...\n",__LINE__); 852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_InitMMCodecEx(((LCML_DSP_INTERFACE *)pLcmlHandle)->pCodecinterfacehandle, 854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin p,&pLcmlHandle,(void *)p,&cb, (OMX_STRING)pComponentPrivate->sDeviceString); 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: After Calling LCML_InitMMCodec...\n",__LINE__); 856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) 858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error returned from LCML_Init()\n",__LINE__); 860300f5d1faaea6cefa5f5cd3cec785cb82fbe4551Priyesh Bisla /* send an event to client */ 861300f5d1faaea6cefa5f5cd3cec785cb82fbe4551Priyesh Bisla /* client should unload the component if the codec is not able to load */ 862300f5d1faaea6cefa5f5cd3cec785cb82fbe4551Priyesh Bisla eError = OMX_ErrorInvalidState; 863b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 864b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 865b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 866b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 867b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 868b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef HASHINGENABLE 873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Enable the Hashing Code */ 874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_SetHashingState(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, OMX_TRUE); 875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error: Failed to set Mapping State\n"); 878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* need check the resource with RM */ 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d :: AACENC: About to call RMProxy_SendCommand\n", __LINE__); 883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: Returned from RMProxy_SendCommand\n", __LINE__); 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: RMProxy_SendCommand returned %d\n", __LINE__,rm_error); 888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(rm_error == OMX_ErrorNone) 889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* resource is available */ 891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateIdle; 892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySetup); 895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateIdle, 3456, NULL); 897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(rm_error == OMX_ErrorInsufficientResources) 899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* resource is not available, need set state to OMX_StateWaitForResources */ 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Insufficient resources\n", __LINE__); 902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateWaitForResources; 903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR2(pComponentPrivate->dbg, "%d :: AACENC: OMX_ErrorInsufficientResources\n", __LINE__); 910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateIdle; 912eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 913eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement reference count with signal enabled */ 914eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) { 915eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 916eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 917eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateIdle; 926eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 927eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement reference count with signal enabled */ 928eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) { 929eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 930eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 931eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StateExecuting) 943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySteadyState); 947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: Setting Component to OMX_StateIdle\n",__LINE__); 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: About to Call MMCodecControlStop\n", __LINE__); 951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 1; 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin MMCodecControlStop,(void *)pArgs); 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 95744577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pthread_mutex_lock(&pComponentPrivate->codecStop_mutex); 95844577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong while (pComponentPrivate->codecStop_waitingsignal == 0){ 95944577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pthread_cond_wait(&pComponentPrivate->codecStop_threshold, &pComponentPrivate->codecStop_mutex); 96044577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong } 96144577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pComponentPrivate->codecStop_waitingsignal = 0; 96244577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pthread_mutex_unlock(&pComponentPrivate->codecStop_mutex); 96344577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong 964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) 965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d: Error Occurred in Codec Stop..\n",__LINE__); 967b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 968b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 969b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 970b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 971b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 972b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: After MMCodecControlStop\n", __LINE__); 976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending=0; 977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef HASHINGENABLE 979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Hashing Change*/ 980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLcmlHandle; 981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_FlushHashes(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle); 982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error occurred in Codec mapping flush!\n"); 985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(pComponentPrivate->curState == OMX_StatePause) 993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef HASHINGENABLE 995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Hashing Change*/ 996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLcmlHandle; 997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_FlushHashes(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle); 998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "Error occurred in Codec mapping flush!\n"); 1001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySteadyState); 1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateIdle; 1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 1011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateIdle, 3456, NULL); 1013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1014eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 1015eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement reference count with signal enabled */ 1016eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) { 1017eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 1018eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 1019eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 1020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 1024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 1025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* This means, it is invalid state from application */ 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: AACENC: OMX_ErrorIncorrectStateTransition\n",__LINE__); 1031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 1034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 1035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 1036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "Invalid State Error"); 1037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_StateExecuting: 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd Executing \n",__LINE__); 1043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->curState == OMX_StateIdle) 1044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Sending commands to DSP via LCML_ControlCodec third argument is not used for time being */ 1046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsStopping = 0; 1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->dasfmode == 1) 1048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: ---- Comp: DASF Functionality is ON ---\n",__LINE__); 1050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1051b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE_DSPALIGN(pComponentPrivate->pParams, 1052b65f253fdc60f6208a54911bee793d225f23cdf8James Dong sizeof(AACENC_AudioCodecParams), 1053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_AudioCodecParams); 1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pParams %p \n",pComponentPrivate->pParams); 1056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->unNumChannels == 1) /*MONO*/ 1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pParams->iAudioFormat = 0x0001; 1058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pParams->iAudioFormat = 0x0002; 1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pParams->iStrmId = pComponentPrivate->streamID; 1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pParams->iSamplingRate = pComponentPrivate->ulSamplingRate; 1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pValues[0] = USN_STRMCMD_SETCODECPARAMS; 1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pValues[1] = (OMX_U32)pComponentPrivate->pParams; 1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pValues[2] = sizeof(AACENC_AudioCodecParams); 1067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecControlStrmCtrl, 1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (void *)pValues); 1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) 1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Occurred in Codec StreamControl..\n",__LINE__); 1073b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 1074b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 1075b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 1076b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 1077b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 1078b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.size = sizeof(MPEG4AACENC_UALGParams); 1084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.bitRate = pComponentPrivate->unBitrate; 1085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.sampleRate = pComponentPrivate->ulSamplingRate; 1086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.numChannels = (pComponentPrivate->unNumChannels==2)?1:0; /* Reduced */ 1087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->useTns = 1; 1088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->usePns = 1; 1089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->outObjectType = pComponentPrivate->nObjectType; 1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptAlgDynParams->outFileFormat = pComponentPrivate->File_Format; 1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: dynamicparams.bitRate %d \n", (int)pComponentPrivate->unBitrate); 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: dynamicparams.sampleRate %d \n ",pComponentPrivate->ulSamplingRate); 1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: dynamicparams.numChannels %d \n", pComponentPrivate->unNumChannels); 1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: ptAlgDynParams->outFileFormat %d \n",pComponentPrivate->File_Format); 1096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pValues1[0] = IUALG_CMD_SETSTATUS; 1098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pValues1[1] = (OMX_U32)pComponentPrivate->ptAlgDynParams; 1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pValues1[2] = sizeof(MPEG4AACENC_UALGParams); 1100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecControlAlgCtrl,(void *)pValues1); 1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) 1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Occurred in Codec StreamControl..\n",__LINE__); 1106b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 1107b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 1108b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 1109b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 1110b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 1111b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: Algcontrol has been sent to DSP\n",__LINE__); 1115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec( ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecControlStart,(void *)pArgs); 1118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) 1119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Occurred in Codec Start..\n", __LINE__); 1121b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 1122b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 1123b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 1124b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 1125b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 1126b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StatePause) 1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecControlStart, (void *)pArgs); 1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: While Resuming the codec\n",__LINE__); 1137b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 1138b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 1139b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 1140b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 1141b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 1142b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->nNumInputBufPending; i++) 1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInputBufHdrPending[i]!= NULL) 1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "i: %d \n",(int)i); 1150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENCGetCorresponding_LCMLHeader(pComponentPrivate, pComponentPrivate->pInputBufHdrPending[i]->pBuffer, OMX_DirInput, &pLcmlHdr); 1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_SetPending(pComponentPrivate,pComponentPrivate->pInputBufHdrPending[i],OMX_DirInput,__LINE__); 1152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_QueueBuffer( 1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecInputBuffer, 1156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i]->pBuffer, 1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i]->nAllocLen, 1158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i]->nFilledLen, 1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (OMX_U8 *) pLcmlHdr->pIpParam, 1160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sizeof(AACENC_UAlgInBufParamStruct), 1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1162b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if(eError != OMX_ErrorNone){ 1163b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__); 1164b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 1165b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 1166b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 1167b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 1168b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 1169b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1170b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 1171b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumInputBufPending =0; 1175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->nNumOutputBufPending; i++) 1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pOutputBufHdrPending[i]!= NULL) 1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENCGetCorresponding_LCMLHeader(pComponentPrivate, pComponentPrivate->pOutputBufHdrPending[i]->pBuffer, OMX_DirOutput, &pLcmlHdr); 1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_SetPending(pComponentPrivate,pComponentPrivate->pOutputBufHdrPending[i],OMX_DirOutput,__LINE__); 1184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_QueueBuffer( 1187b65f253fdc60f6208a54911bee793d225f23cdf8James Dong ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1188b65f253fdc60f6208a54911bee793d225f23cdf8James Dong EMMCodecOuputBuffer, 1189b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->pOutputBufHdrPending[i]->pBuffer, 1190b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->pOutputBufHdrPending[i]->nAllocLen, 1191b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 0, 1192b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (OMX_U8 *) pLcmlHdr->pOpParam, 1193b65f253fdc60f6208a54911bee793d225f23cdf8James Dong sizeof(AACENC_UAlgOutBufParamStruct), 1194b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1195b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if(eError != OMX_ErrorNone){ 1196b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__); 1197b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 1198b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 1199b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 1200b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 1201b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 1202b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1203b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 1204b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending = 0; 1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "Invalid State Error"); 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Invalid State Given by Application\n",__LINE__); 1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateExecuting, 3456, NULL); 1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1228eced958917cca059f5e7222a83a44adc4e259c67Benny Wong pComponentPrivate->curState = OMX_StateExecuting; 1229b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundarySteadyState); 1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1234eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement reference count with signal enabled */ 1235eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) { 1236eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 1237eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 1238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Send state change notificaiton to Application */ 1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_StateLoaded: 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: AACENC: AACENCHandleCommand: Cmd Loaded - curState = %d\n",__LINE__,pComponentPrivate->curState); 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: AACENC: pComponentPrivate->pInputBufferList->numBuffers = %d \n",__LINE__,pComponentPrivate->pInputBufferList->numBuffers); 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: AACENC: pComponentPrivate->pOutputBufferList->numBuffers = %d \n",__LINE__,pComponentPrivate->pOutputBufferList->numBuffers); 1253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateWaitForResources) 1254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: AACENCHandleCommand: Cmd Loaded\n",__LINE__); 1256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundaryCleanup); 1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundaryCleanup); 1264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1266eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement reference count with signal enabled */ 1267eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) { 1268eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 1269eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 1270eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 1271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bLoadedCommandPending = OMX_FALSE; 1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: AACENC: Inside OMX_StateLoaded State: \n",__LINE__); 1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateIdle && 1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState != OMX_StateWaitForResources) 1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "Incorrect State Transition"); 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Invalid State Given by Application\n",__LINE__); 1291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundaryCleanup); 1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pInputBufferList->numBuffers = %d \n",pComponentPrivate->pInputBufferList->numBuffers); 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pOutputBufferList->numBuffers = %d \n",pComponentPrivate->pOutputBufferList->numBuffers); 1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers || 1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers) 1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 1; 1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InIdle_mutex); 1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->InIdle_threshold, &pComponentPrivate->InIdle_mutex); 1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InIdle_mutex); 1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_WaitForEvent(&(pComponentPrivate->InIdle_event)); 1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Now Deinitialize the component No error should be returned from this function. It should clean the system as much as possible */ 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: Before CodecControlDestroy \n",__LINE__); 1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecControlDestroy, (void *)pArgs); 1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingCommand(pComponentPrivate->pPERF, -1, 0, PERF_ModuleComponent); 1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: After CodecControlDestroy \n",__LINE__); 1324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: LCML_ControlCodec EMMCodecControlDestroy: no. %x\n",__LINE__, eError); 1327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd Loaded\n",__LINE__); 1330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Closing LCML Lib*/ 1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* This flag is used in Deinit() function to close LCML. */ 1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bCodecDestroyed = OMX_TRUE; 1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->ptrLibLCML != NULL) 1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AAC: About to Close LCML %p \n",pComponentPrivate->ptrLibLCML); 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AAC: Closed LCML \n"); 1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin dlclose( pComponentPrivate->ptrLibLCML ); 1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptrLibLCML = NULL; 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AAC: Closed LCML \n"); 1341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: After CodecControlDestroy \n",__LINE__); 1345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: LCML_ControlCodec EMMCodecControlDestroy: no. %x\n",__LINE__, eError); 1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd Loaded\n",__LINE__); 1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = EXIT_COMPONENT_THRD; 1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Send StateChangeNotification to application */ 1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_StatePause: 1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateExecuting && 1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState != OMX_StateIdle) 1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "Incorrect State Transition"); 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Invalid State Given by Application\n",__LINE__); 1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: about to call LCML_ControlCodec for PAUSE \n",__LINE__); 1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, EMMCodecControlPause, (void *)pArgs); 1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: in Pausing the codec\n",__LINE__); 1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySteadyState); 1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_StateWaitForResources: 1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateLoaded) 1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateWaitForResources, 3456, NULL); 1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateWaitForResources; 1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMinor, 1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "Incorrect State Transition"); 1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_StateInvalid: 1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d: HandleCommand: Cmd OMX_StateInvalid:\n",__LINE__); 1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateWaitForResources && 1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState != OMX_StateInvalid && 1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState != OMX_StateLoaded) 1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecControlDestroy, (void *)pArgs); 1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateInvalid; 1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorInvalidState, 1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorSevere, 1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_CleanupInitParams(pHandle); 1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_StateMax: 1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd OMX_StateMax::\n",__LINE__); 1433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } /* End of Switch */ 1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (command == OMX_CommandMarkBuffer) 1440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "AACENC: command OMX_CommandMarkBuffer received %d\n",__LINE__); 1442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pComponentPrivate->pMarkBuf) 1443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: command OMX_CommandMarkBuffer received %d\n",__LINE__); 1445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* TODO Need to handle multiple marks */ 1446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMarkBuf = (OMX_MARKTYPE *)(commandData); 1447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (command == OMX_CommandPortDisable) 1450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pComponentPrivate->bDisableCommandPending) 1452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x0 || commandData == -1) 1454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* disable port */ 1456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled = OMX_FALSE; 1457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x1 || commandData == -1) 1459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char *pArgs = "damedesuStr"; 1461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled = OMX_FALSE; 1462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) 1464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bNoIdleOnStop = OMX_TRUE; 1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "AACENC: About to stop socket node line %d\n",__LINE__); 1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 146844577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pComponentPrivate->bIsStopping = 1; 1469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin MMCodecControlStop,(void *)pArgs); 147144577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pthread_mutex_lock(&pComponentPrivate->codecStop_mutex); 147244577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong while (pComponentPrivate->codecStop_waitingsignal == 0){ 1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->codecStop_threshold, &pComponentPrivate->codecStop_mutex); 1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 147544577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pComponentPrivate->codecStop_waitingsignal = 0; 147644577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pthread_mutex_unlock(&pComponentPrivate->codecStop_mutex); 1477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x0) 1482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated) 1484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* return cmdcomplete event if input unpopulated */ 1486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortDisable,INPUT_PORT, NULL); 1490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 1491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 1; 1495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = commandData; 1496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x1) 1500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated) 1502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* return cmdcomplete event if output unpopulated */ 1504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortDisable,OUTPUT_PORT, NULL); 1508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 1509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 1; 1513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = commandData; 1514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == -1) 1518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated && 1520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin !pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated) 1521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* return cmdcomplete event if input & output unpopulated */ 1524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortDisable,INPUT_PORT, NULL); 1528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortDisable,OUTPUT_PORT, NULL); 1533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 1534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 1; 1538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = commandData; 1539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (command == OMX_CommandPortEnable) 1544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pComponentPrivate->bEnableCommandPending) 1546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x0 || commandData == -1) 1548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* enable in port */ 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "AACENC: setting input port to enabled\n"); 1551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled = OMX_TRUE; 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "WAKE UP!! HandleCommand: In utils setting output port to enabled. \n"); 1553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->AlloBuf_waitingsignal) 1554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 1556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled = %d\n",pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled); 1558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x1 || commandData == -1) 1561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* enable out port */ 1563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->AlloBuf_waitingsignal) 1564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 1566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 1567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 1568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->AlloBuf_threshold); 1569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 1570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->AlloBuf_event)); 1572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) 1575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char *pArgs = "damedesuStr"; 1577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDspStoppedWhileExecuting = OMX_FALSE; 1578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "AACENC: About to start socket node line %d\n",__LINE__); 1580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec( ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecControlStart,(void *)pArgs); 1582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "AACENC: setting output port to enabled\n"); 1584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled = OMX_TRUE; 1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled = %d\n",pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled); 1586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x0) 1590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateLoaded || pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated) 1592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortEnable, 1597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin INPUT_PORT, 1598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandPending = 0; 1600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandPending = 1; 1604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nEnableCommandParam = commandData; 1605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(commandData == 0x1) 1609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateLoaded || pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated) 1611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortEnable, 1616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OUTPUT_PORT, 1617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandPending = 0; 1619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandPending = 1; 1623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nEnableCommandParam = commandData; 1624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(commandData == -1) 1628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateLoaded || 1630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated 1631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin && pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated)) 1632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortEnable, 1637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin INPUT_PORT, 1638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortEnable, 1643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OUTPUT_PORT, 1644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandPending = 0; 1646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENCFill_LCMLInitParamsEx(pHandle); 1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "\nAACENC: calling fillexparams \n"); 1648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandPending = 1; 1652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nEnableCommandParam = commandData; 1653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 1657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 1658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->AlloBuf_threshold); 1659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 1660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->AlloBuf_event)); 1662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (command == OMX_CommandFlush) 1668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#if 0 1671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*-------------- MANUAL FLUSH ----------------------------*/ 1672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x0 || commandData == -1) 1674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->nUnhandledEmptyThisBuffers ==0) { 1676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: UTIL: Flushing input port \n",__LINE__); 1678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingEmptyDones = 0; 1679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) 1680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i] = NULL; 1682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumInputBufPending=0; 1684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) 1685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EmptyBufferDone ( 1688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle, 1689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[i] 1691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 1692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandFlush,INPUT_PORT, NULL); 1697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else{ 1699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushInputPortCommandPending = OMX_TRUE; 1700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x1 || commandData == -1) 1704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nUnhandledFillThisBuffers == 0) { 1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: UTIL: Flushing output port \n",__LINE__); 1707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingFillDones = 0; 1708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) 1709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i] = NULL; 1711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending=0; 1713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) 1714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.FillBufferDone ( 1717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle, 1718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[i] 1720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 1721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandFlush,OUTPUT_PORT, NULL); 1725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else{ 1727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushOutputPortCommandPending = OMX_TRUE; 1728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 aParam[3] = {0}; 1733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nNumInputBufPending) 1734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: Inside OMX_CommandFlush Command \n",__LINE__); 1737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x0 || commandData == -1) 1738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nUnhandledEmptyThisBuffers == 0) { 1740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushInputPortCommandPending = OMX_FALSE; 1741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingFillDones = 0; 1742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin aParam[0] = USN_STRMCMD_FLUSH; 1743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin aParam[1] = 0x0; 1744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin aParam[2] = 0x0; 1745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand::Flushing input port \n",__LINE__); 1746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError=LCML_ControlCodec(( (LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,EMMCodecControlStrmCtrl,(void*)aParam); 1747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushInputPortCommandPending = OMX_TRUE; 1754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: UTIL: Flushing input port \n",__LINE__); 1760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingEmptyDones = 0; 1761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) 1762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i] = NULL; 1764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumInputBufPending=0; 1766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) 1767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EmptyBufferDone ( 1770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle, 1771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[i] 1773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 17740db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate->EmptybufferdoneCount); 17750db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate); 1776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandFlush,INPUT_PORT, NULL); 1781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nNumOutputBufPending) 1787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(commandData == 0x1 || commandData == -1) 1789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nUnhandledFillThisBuffers == 0) { 1791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushOutputPortCommandPending = OMX_FALSE; 1792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingEmptyDones=0; 1793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand::Flushing ouput queue \n",__LINE__); 1794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin aParam[0] = USN_STRMCMD_FLUSH; 1795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin aParam[1] = 0x1; 1796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin aParam[2] = 0x0; 1797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand::Flushing ouput port \n",__LINE__); 1799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,EMMCodecControlStrmCtrl, (void*)aParam); 1800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushOutputPortCommandPending = OMX_TRUE; 1807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: UTIL: Flushing output port \n",__LINE__); 1813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingFillDones = 0; 1814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) 1815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i] = NULL; 1817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending=0; 1819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) 1820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.FillBufferDone ( 1823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle, 1824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[i] 1826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 18270db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate->FillbufferdoneCount); 18280db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate); 1829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 1832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 1833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandFlush,OUTPUT_PORT, NULL); 1834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 1840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: AACENC: Exiting AACENCHandleCommand Function\n",__LINE__); 1841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: AACENC: Returning %d\n",__LINE__,eError); 1842b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* report the error to the client via event */ 1843b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if(eError != OMX_ErrorNone && eError != EXIT_COMPONENT_THRD){ 1844b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__); 1845b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pHandle, 1846b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 1847b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 1848b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 1849b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 1850b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 1851b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1852b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 1858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENCHandleDataBuf_FromApp() This function is called by the component when ever it 1860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* receives the buffer from the application 1861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 1862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponentPrivate Component private data 1863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pBufHeader Buffer from the application 1864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 1865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 1866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 1867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 1868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 1869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 1870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 1871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 1872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCHandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE* pBufHeader, AACENC_COMPONENT_PRIVATE *pComponentPrivate) 1873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_DIRTYPE eDir = 0; 1876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_AACENC_BUFHEADERTYPE *pLcmlHdr = NULL; 1877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_DSP_INTERFACE *pLcmlHandle = (LCML_DSP_INTERFACE *)pComponentPrivate->pLcmlHandle; 1878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDefIn = NULL; 1879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Entering AACENCHandleDataBuf_FromApp - curState = %d\n",__LINE__,pComponentPrivate->curState); 1881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Find the direction of the received buffer from buffer list*/ 1883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = AACENCGetBufferDirection(pBufHeader, &eDir); 1884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: The pBufHeader is not found in the list\n",__LINE__); 1887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eDir == OMX_DirInput) 1891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nUnhandledEmptyThisBuffers--; 1893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: Buffer Dir = input\n",__LINE__); 1894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefIn = pComponentPrivate->pPortDef[OMX_DirInput]; 1895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((pBufHeader->nFilledLen > 0) || (pBufHeader->nFlags & OMX_BUFFERFLAG_EOS)) 1896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bBypassDSP = 0; /* flag for buffers with data */ 1898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = AACENCGetCorresponding_LCMLHeader(pComponentPrivate, pBufHeader->pBuffer, OMX_DirInput, &pLcmlHdr); 1899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: Error: Invalid INPUT Buffer Came ...\n",__LINE__); 1902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->pIpParam->bLastBuffer = 0; /* it is not the last buffer yet */ 1905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*For Steady State Instumentation*/ 1908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #if 0 1909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((pComponentPrivate->nLcml_nCntIp == 1)) { 1910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp, 1911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_BoundaryStart | PERF_BoundarySteadyState); 1912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 1914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate->pPERFcomp, 1915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pBufHeader,pBuffer), 1916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDefIn->nBufferSize, 1917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleCommonLayer); 1918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBufHeader->nFlags & OMX_BUFFERFLAG_EOS) 1921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: UTIL: End of Stream has been reached \n",__LINE__); 1923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->pIpParam->bLastBuffer = 1; /* EOS flag for SN. - It is the last buffer with data for SN */ 1924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pLcmlHdr->pIpParam->bLastBuffer = %d \n",__LINE__,(int)pLcmlHdr->pIpParam->bLastBuffer); 1925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Store time stamp information */ 1928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->timestampBufIndex[pComponentPrivate->IpBufindex] = pBufHeader->nTimeStamp; 1929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->tickcountBufIndex[pComponentPrivate->IpBufindex] = pBufHeader->nTickCount; 1930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->IpBufindex++; 1931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->IpBufindex %= pComponentPrivate->pPortDef[OMX_DirOutput]->nBufferCountActual; 1932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Sending input buffer header to Codec = %p to LCML\n",__LINE__,pBufHeader); 1934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Sending INPUT BUFFER to Codec = %p\n",__LINE__,pBufHeader->pBuffer); 1935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState); 1936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] pComponentPrivate->bDspStoppedWhileExecuting = %ld\n",__LINE__,pComponentPrivate->bDspStoppedWhileExecuting); 1937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) 1939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] The current state while sending the buffer = %d \n",__LINE__,pComponentPrivate->curState); 1941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pComponentPrivate->bDspStoppedWhileExecuting) 1942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!AACENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirInput)) 1944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirInput,__LINE__); 1946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_QueueBuffer( pLcmlHandle->pCodecinterfacehandle, 1947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecInputBuffer, 1948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (OMX_U8 *)pBufHeader->pBuffer, 1949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->nAllocLen, 1950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->nFilledLen, 1951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (OMX_U8 *)pLcmlHdr->pIpParam, 1952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sizeof(AACENC_UAlgInBufParamStruct), 1953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 1954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 1955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: SetBuff: IP: Error Occurred\n",__LINE__); 1957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 1958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf++; 1961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: [HandleData_FromApp] lcml_nIpBuf count : %d\n",__LINE__, (int)pComponentPrivate->lcml_nIpBuf); 1962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate->pPERFcomp, 1968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pBufHeader, pBuffer), 1969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 1970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 1971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EmptyBufferDone ( 1973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle, 1974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader 1976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 1977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingEmptyDones--; 19780db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate->EmptybufferdoneCount); 19790db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate); 1980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Save received buffers */ 1985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[pComponentPrivate->nNumInputBufPending++] = pBufHeader; 1986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bBypassDSP = 1; /* flag : empty buffer */ 1992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] setting pComponentPrivate->bBypassDSP = 1 \n", __LINE__); 1993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] Calling FillBufferDone\n", __LINE__); 1994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate->pPERFcomp, 1997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pComponentPrivate->pOutputBufferList->pBufHdr[0],pBuffer), 1998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pComponentPrivate->pOutputBufferList->pBufHdr[0],nFilledLen), 1999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] (filled <0 or EOS )Calling FillBufferDone \n",__LINE__); 2003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.FillBufferDone(pComponentPrivate->pHandle, 2004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 2005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0] 2006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 2007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingFillDones--; 20080db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate->FillbufferdoneCount); 20090db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate); 2010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->FillbufferdoneCount = %ld \n",__LINE__,pComponentPrivate->FillbufferdoneCount); 2011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->FillthisbufferCount = %ld \n",__LINE__,pComponentPrivate->FillthisbufferCount); 2012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate->pPERFcomp, 2016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pComponentPrivate->pInputBufferList->pBufHdr[0], pBuffer), 2017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 2018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] (filled <0 or EOS )Calling EmptyBufferDone \n",__LINE__); 2022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EmptyBufferDone ( pComponentPrivate->pHandle, 2023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 2024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[0] 2025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 2026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingEmptyDones--; 20270db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate->EmptybufferdoneCount); 20280db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate); 2029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->EmptybufferdoneCount = %ld \n",__LINE__,pComponentPrivate->EmptybufferdoneCount); 2030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->EmptythisbufferCount = %ld \n",__LINE__,pComponentPrivate->EmptythisbufferCount); 2031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBufHeader->nFlags & OMX_BUFFERFLAG_EOS) 2034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: Component Detected EOS\n",__LINE__); 2036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->dasfmode == 0) 2037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags |= OMX_BUFFERFLAG_EOS; 2039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags = %d \n",__LINE__,(int)pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags); 2040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 2041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 2042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventBufferFlag, 2043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->nOutputPortIndex, 2044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags, NULL); 2045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->nFlags = 0; 2048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState); 2051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBufHeader->pMarkData) 2052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Detected pBufHeader->pMarkData\n",__LINE__); 2054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* copy mark to output buffer header */ 2055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState); 2056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->pMarkData = pBufHeader->pMarkData; 2057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState); 2058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->hMarkTargetComponent = pBufHeader->hMarkTargetComponent; 2059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState); 2060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* trigger event handler if we are supposed to */ 2061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBufHeader->hMarkTargetComponent == pComponentPrivate->pHandle && pBufHeader->pMarkData) 2062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState); 2064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 2065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 2066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventMark, 2067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 2068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 2069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->pMarkData); 2070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bFlushInputPortCommandPending) { 2074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SendCommand(pComponentPrivate->pHandle,OMX_CommandFlush,0,NULL); 2075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (eDir == OMX_DirOutput) 2081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Make sure that output buffer is issued to output stream only when 2083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * there is an outstanding input buffer already issued on input stream 2084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 2085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: Buffer Dir = output\n",__LINE__); 2086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->bIsStopping = %ld\n",__LINE__, pComponentPrivate->bIsStopping); 2087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->bBypassDSP = %ld\n",__LINE__, pComponentPrivate->bBypassDSP); 2088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState); 2089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nUnhandledFillThisBuffers--; 2091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 2093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bFirstOutputBuffer){ 2094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin // if this is the first output buffer, fill the config data, then return the buffer (skip DSP) 2095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENCWriteConfigHeader(pComponentPrivate, pBufHeader); 2096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: AACENCWriteConfigHeader = %p\n",__LINE__, pBufHeader->pBuffer); 2097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.FillBufferDone ( 2098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle, 2099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 2100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader 2101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 2102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFirstOutputBuffer = 0; 21030db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate->FillbufferdoneCount); 21040db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate); 2105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!(pComponentPrivate->bIsStopping)) 2110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bBypassDSP == 0) 2112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Sending Output buffer header to Codec= %p to LCML\n",__LINE__,pBufHeader); 2114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: Sending OUTPUT BUFFER to Codec = %p\n",__LINE__,pBufHeader->pBuffer); 2115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate->pPERFcomp, 2117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pBufHeader,pBuffer), 2118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 2119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleCommonLayer); 2120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate = %p\n",__LINE__,pComponentPrivate); 2123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pBufHeader = %p\n",__LINE__,pBufHeader); 2124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pBufHeader->pBuffer = %p\n",__LINE__,pBufHeader->pBuffer); 2125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = AACENCGetCorresponding_LCMLHeader(pComponentPrivate, pBufHeader->pBuffer, OMX_DirOutput, &pLcmlHdr); 2126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState); 2127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bBypassDSP == 0) 2129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState); 2131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->bDspStoppedWhileExecuting = %ld\n",__LINE__,pComponentPrivate->bDspStoppedWhileExecuting); 2132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) 2134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!AACENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirOutput)) 2136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirOutput,__LINE__); 2138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->LastOutputBufferHdrQueued = pBufHeader; 2139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->pOpParam->unNumFramesEncoded=0; /* Resetting the value for each time*/ 2140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_QueueBuffer(pLcmlHandle->pCodecinterfacehandle, 2141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecOuputBuffer, 2142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (OMX_U8 *)pBufHeader->pBuffer, 2143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->nAllocLen, 2144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->nFilledLen, 2145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (OMX_U8 *)pLcmlHdr->pOpParam, 2146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sizeof(AACENC_UAlgOutBufParamStruct), 2147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Queuing Ouput buffer buffer \n",__LINE__); 2149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone ) 2150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: Issuing DSP OP: Error Occurred\n",__LINE__); 2152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 2153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf++; 2156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: tlcml_nOpBuf count : %d\n",__LINE__, (int)pComponentPrivate->lcml_nOpBuf); 2157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StatePause) 2160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->nNumOutputBufPending++ = %d \n",__LINE__,(int)pComponentPrivate->nNumOutputBufPending++); 2162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pBufHeader = %p \n",__LINE__, pBufHeader); 2163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[pComponentPrivate->nNumOutputBufPending++] = pBufHeader; 2164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] OMX_DirOutput - bBypassDSP = %d \n", __LINE__, (int)pComponentPrivate->bBypassDSP); 2170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState); 2171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->bDspStoppedWhileExecuting = %ld\n",__LINE__,pComponentPrivate->bDspStoppedWhileExecuting); 2172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) 2174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!AACENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirOutput)) 2176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirOutput,__LINE__); 2178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->LastOutputBufferHdrQueued = pBufHeader; 2179b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pLcmlHdr != NULL) { 2180b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pLcmlHdr->pOpParam->unNumFramesEncoded = 0; /* Resetting the value for each time*/ 2181b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 2182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = LCML_QueueBuffer(pLcmlHandle->pCodecinterfacehandle, 2183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin EMMCodecOuputBuffer, 2184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (OMX_U8 *)pBufHeader->pBuffer, 2185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->nAllocLen, 2186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHeader->nFilledLen, 2187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (OMX_U8 *)pLcmlHdr->pOpParam, 2188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sizeof(AACENC_UAlgOutBufParamStruct), 2189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone ) 2191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: Issuing DSP OP: Error Occurred\n",__LINE__); 2193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 2194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf++; 2197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d :: UTIL: lcml_nOpBuf count : %d\n",__LINE__, (int)pComponentPrivate->lcml_nOpBuf); 2198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[pComponentPrivate->nNumOutputBufPending++] = pBufHeader; 2203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bFlushOutputPortCommandPending) { 2208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SendCommand( pComponentPrivate->pHandle, 2209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandFlush, 2210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1,NULL); 2211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: BufferHeader = %p, Buffer = %p Unknown\n",__LINE__,pBufHeader, pBufHeader->pBuffer); 2216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 2217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL:Exiting from HandleDataBuf_FromApp ..........>>>>>\n",__LINE__); 2220b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* report the error to the client via event */ 2221b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if(eError != OMX_ErrorNone){ 2222b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__); 2223b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle, 2224b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->pHandle->pApplicationPrivate, 2225b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 2226b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 2227b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 2228b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 2229b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 2230b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 2231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 2235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENCGetBufferDirection () This function is used by the component thread to 2237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* request a buffer from the application. Since it was called from 2 places, 2238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* it made sense to turn this into a small function. 2239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 2240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pData pointer to AAC Decoder Context Structure 2241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pCur pointer to the buffer to be requested to be filled 2242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 2243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @retval none 2244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin**/ 2245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 2246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCGetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, OMX_DIRTYPE *eDir) 2248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate = pBufHeader->pPlatformPrivate; 2251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nBuf=0; 2252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBuf = NULL; 2253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 i=0; 2254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S16 flag = 1; 2255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Entering AACENCGetBufferDirection Function\n",__LINE__); 2257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Search this buffer in input buffers list */ 2258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBuf = pComponentPrivate->pInputBufferList->numBuffers; 2260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i<nBuf; i++) 2261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuf = pComponentPrivate->pInputBufferList->pBufHdr[i]; 2263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBufHeader == pBuf) 2264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *eDir = OMX_DirInput; 226615c9596da616836bbf2db19d2aa10f30bb6587a0James Dong OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Buffer %p is INPUT BUFFER\n",__LINE__, pBufHeader); 2267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin flag = 0; 2268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Search this buffer in input buffers list */ 2273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBuf = pComponentPrivate->pOutputBufferList->numBuffers; 2274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i<nBuf; i++) 2276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuf = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 2278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBufHeader == pBuf) 2279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *eDir = OMX_DirOutput; 228115c9596da616836bbf2db19d2aa10f30bb6587a0James Dong OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Buffer %p is OUTPUT BUFFER\n",__LINE__, pBufHeader); 2282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin flag = 0; 2283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (flag == 1) 2288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: Buffer %p is Not Found in the List\n",__LINE__,pBufHeader); 2290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 2291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Exiting AACENCGetBufferDirection Function\n",__LINE__); 2295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/ 2299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * AACENCLCML_Callback() function will be called LCML component to write the msg 2301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param event Event which gives to details about USN status 2303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param void * args // args [0] //bufType; 2304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin // args [1] //arm address fpr buffer 2305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin // args [2] //BufferSize; 2306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin // args [3] //arm address for param 2307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin // args [4] //ParamSize; 2308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin // args [6] //LCML Handle 2309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 2313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCLCML_Callback(TUsnCodecEvent event,void * args [10]) 2315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* OMX_S16 ret = 0; */ 2317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle=NULL; 2318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 *pBuffer = args[1]; 2320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_AACENC_BUFHEADERTYPE *pLcmlHdr = NULL;; 2321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_DSP_INTERFACE *pLcmlHandle = NULL; 2322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate_CC = NULL; 2323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S16 i = 0; 2324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int j =0, k=0 ; 2325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 2327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE rm_error = OMX_ErrorNone; 2328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC = (AACENC_COMPONENT_PRIVATE*)((LCML_DSP_INTERFACE *)args[6])->pComponentPrivate; 2331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate_CC->dbg, "%d:pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate_CC->curState); 2332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinpHandle = pComponentPrivate_CC->pHandle; 2334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch(event) { 2336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecDspError: 2338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecDspError\n"); 2339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecInternalError: 2342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecInternalError\n"); 2343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecInitError: 2346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecInitError\n"); 2347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecDspMessageRecieved: 2350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecDspMessageRecieved\n"); 2351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecBufferProcessed: 2354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecBufferProcessed\n"); 2355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecProcessingStarted: 2358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingStarted\n"); 2359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecProcessingPaused: 2362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingPaused\n"); 2363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecProcessingStoped: 2366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingStoped\n"); 2367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecProcessingEof: 2370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecProcessingEof\n"); 2371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecBufferNotProcessed: 2374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecBufferNotProcessed\n"); 2375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecAlgCtrlAck: 2378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecAlgCtrlAck\n"); 2379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case EMMCodecStrmCtrlAck: 2382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] EMMCodecStrmCtrlAck\n"); 2383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 2386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT] Got event = %d\n",event); 2387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: Entering the AACENCLCML_Callback Function\n",__LINE__); 2391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "UTIL: args = %p \n",args[0]); 2392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate_CC->dbg, " %d :: UTIL: EMMCodecInputBuffer = %p \n",__LINE__,(void *)EMMCodecInputBuffer); 2393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate_CC->dbg, " %d :: UTIL: EMMCodecOuputBuffer = %p \n",__LINE__,(void *)EMMCodecOuputBuffer); 2394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, " %d :: UTIL:Entering the LCML_Callback() : event = %d\n",__LINE__,event); 2395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: pHandle:%p \n",__LINE__,pHandle); 2396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: pComponentPrivate_CC:%p \n",__LINE__,pComponentPrivate_CC); 2397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: pLcmlHdr:%p \n",__LINE__,pLcmlHdr); 2398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* OMX_PRINT1(pComponentPrivate_CC->dbg, "%d :: UTIL: pLcmlHdr->pIpParam:%p \n",__LINE__,pLcmlHdr->pIpParam); */ 2399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(event == EMMCodecBufferProcessed) 2402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE EMMCodecBufferProcessed \n",__LINE__); 2404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( (OMX_U32)args [0] == EMMCodecInputBuffer) 2405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: Input: pBuffer = %p\n",__LINE__, pBuffer); 2407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = AACENCGetCorresponding_LCMLHeader(pComponentPrivate_CC, pBuffer, OMX_DirInput, &pLcmlHdr); 2408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate_CC->pPERFcomp, 2411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pLcmlHdr->buffer,pBuffer), 2412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 2413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleCommonLayer); 2414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_ClearPending(pComponentPrivate_CC,pLcmlHdr->buffer,OMX_DirInput,__LINE__); 2417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 2418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: Error: Invalid Buffer Came ...\n",__LINE__); 2420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate_CC->dbg, "Input CallBack %p\n", pLcmlHdr->buffer); 2423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate_CC->curState != OMX_StatePause) 2425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp, 2429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pLcmlHdr->buffer,pBuffer), 2430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 2431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EmptyBufferDone (pComponentPrivate_CC->pHandle, 2434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pHandle->pApplicationPrivate, 2435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer); 24360db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate_CC->EmptybufferdoneCount); 24370db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate_CC); 2438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nOutStandingEmptyDones--; 2439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->lcml_nIpBuf--; 2440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "UTIL: Couldn't calling EmptyBufferDone() because pComponentPrivate->curState = %d\n",pComponentPrivate_CC->curState); 2445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pInBufHdrPausedPending[pComponentPrivate_CC->PendingInPausedBufs++] = pLcmlHdr->buffer; 2446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nOutStandingEmptyDones++; 2450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: pComponentPrivate->nOutStandingEmptyDones = %ld\n",__LINE__,pComponentPrivate_CC->nOutStandingEmptyDones); 2451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if ((OMX_U32)args [0] == EMMCodecOuputBuffer) 2453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate_CC->dbg, "%d :: UTIL: Output: pBuffer = %p\n",__LINE__, pBuffer); 2455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nOutStandingFillDones++; 2456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: Incrementing nOutStandingFillDones = %d\n",__LINE__, (int)pComponentPrivate_CC->nOutStandingFillDones); 2457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: pComponentPrivate_CC->nOutStandingFillDones = %ld\n",__LINE__, pComponentPrivate_CC->nOutStandingFillDones); 2458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = AACENCGetCorresponding_LCMLHeader(pComponentPrivate_CC, pBuffer, OMX_DirOutput, &pLcmlHdr); 2459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_ClearPending(pComponentPrivate_CC,pLcmlHdr->buffer,OMX_DirOutput,__LINE__); 2460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) 2461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: Error: Invalid Buffer Came ...\n",__LINE__); 2463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer->nFilledLen = (OMX_U32)args[8]; 2466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: pLcmlHdr->buffer->nFilledLen = %ld \n",__LINE__,pLcmlHdr->buffer->nFilledLen); 2467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate_CC->pPERFcomp, 2470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pLcmlHdr->buffer,pBuffer), 2471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pLcmlHdr->buffer,nFilledLen), 2472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleCommonLayer); 2473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nLcml_nCntOpReceived++; 2474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((pComponentPrivate_CC->nLcml_nCntIp >= 1) && (pComponentPrivate_CC->nLcml_nCntOpReceived == 1)) 2475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate_CC->pPERFcomp, 2477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_BoundaryStart | PERF_BoundarySteadyState); 2478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->LastOutbuf = pLcmlHdr->buffer; /* back up of processed buffer */ 2481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "Output CallBack %p\n", pLcmlHdr->buffer); 2482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "size content %d\n", (int)pLcmlHdr->buffer->nFilledLen); 2483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Previously in HandleDatabuffer form LCML */ 2485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Copying time stamp information to output buffer */ 2487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer->nTimeStamp = (OMX_TICKS)pComponentPrivate_CC->timestampBufIndex[pComponentPrivate_CC->OpBufindex]; 2488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer->nTickCount = pComponentPrivate_CC->tickcountBufIndex[pComponentPrivate_CC->OpBufindex]; 2489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->OpBufindex++; 2490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->OpBufindex %= pComponentPrivate_CC->pPortDef[OMX_DirOutput]->nBufferCountActual; 2491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate_CC->curState != OMX_StatePause) 2493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: Component Sending Filled Output buffer%p to App\n",__LINE__,pLcmlHdr->buffer); 2496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "UTIL:: Calling FillBufferDone from Line %d\n",__LINE__); 2497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp, 2500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer->pBuffer, 2501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer->nFilledLen, 2502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef AACENC_DEBUG 2506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long TmpNumFrames = pLcmlHdr->pOpParam->unNumFramesEncoded; 2507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: Num frames: %lx \n",__LINE__,TmpNumFrames); 2508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(k=0; k<MPEG4AACENC_MAX_OUTPUT_FRAMES; k++) 2510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d Frame size[%d]: %lx \n",__LINE__,k,pLcmlHdr->pOpParam->unFrameSizes[k]); 2512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer->pOutputPortPrivate=pLcmlHdr->pOpParam; 2514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.FillBufferDone ( 2515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle, 2516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 2517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlHdr->buffer 2518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 25190db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate_CC->FillbufferdoneCount); 25200db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate_CC); 2521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nOutStandingFillDones--; 2522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->lcml_nOpBuf--; 2523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "UTIL: Couldn't calling fillBufferDone() because pComponentPrivate->curState = %d\n",pComponentPrivate_CC->curState); 2527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pOutBufHdrPausedPending[pComponentPrivate_CC->PendingOutPausedBufs++] = pLcmlHdr->buffer; 2528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (event == EMMCodecStrmCtrlAck) 2536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE USN_DSPACK_STRMCTRL \n",__LINE__); 2538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (args[1] == (void *)USN_STRMCMD_FLUSH) 2539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = pComponentPrivate_CC->pHandle; 2541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ( args[2] == (void *)EMMCodecInputBuffer) 2542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (args[0] == (void*)USN_ERR_NONE ) 2544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate_CC->dbg, "%d :: UTIL: Flushing input port \n",__LINE__); 2546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate_CC->nNumInputBufPending; i++) { 2547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp, 2549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pComponentPrivate_CC->pInputBufferList->pBufHdr[i],pBuffer), 2550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0,PERF_ModuleHLMM); 2551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EmptyBufferDone ( 2553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pHandle, 2554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pHandle->pApplicationPrivate, 2555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pInputBufHdrPending[i]); 2556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pInputBufHdrPending[i] = NULL; 25570db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate_CC->EmptybufferdoneCount); 25580db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate_CC); 2559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nNumInputBufPending=0; 2561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, 2562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 2563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 2564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandFlush,INPUT_PORT, NULL); 2565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: LCML reported error while flushing input port\n",__LINE__); 2569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if ( args[2] == (void *)EMMCodecOuputBuffer) 2573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (args[0] == (void*)USN_ERR_NONE ) 2575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate_CC->dbg, "\tCallback FLUSH OUT %ld\n",pComponentPrivate_CC->nNumOutputBufPending); 2577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nOutStandingFillDones = 0; 2578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate_CC->nNumOutputBufPending; i++) 2579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp, 2582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pComponentPrivate_CC->pOutputBufferList->pBufHdr[i],pBuffer), 2583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PREF(pComponentPrivate_CC->pOutputBufferList->pBufHdr[i],nFilledLen), 2584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.FillBufferDone ( 2587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pHandle, 2588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pHandle->pApplicationPrivate, 2589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pOutputBufHdrPending[i] 2590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ); 2591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pOutputBufHdrPending[i] = NULL; 25920db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong AACENC_IncrementBufferCounterByOne(&bufferReturned_mutex, &pComponentPrivate_CC->FillbufferdoneCount); 25930db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong SignalIfAllBuffersAreReturned(pComponentPrivate_CC); 2594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->nNumOutputBufPending=0; 2596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler( 2597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandFlush,OUTPUT_PORT, NULL); 2599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: LCML reported error while flushing output port\n",__LINE__); 2603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(event == EMMCodecProcessingStoped) 2611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 261285e28eec8163c776f2f3a093f4053a96ed2d6f98Steve Block ALOGI("AAC encoder received stop ack, waiting for all outstanding buffers to be returned"); 26130db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_mutex_lock(&bufferReturned_mutex); 26140db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong while (pComponentPrivate_CC->EmptythisbufferCount != pComponentPrivate_CC->EmptybufferdoneCount || 26150db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pComponentPrivate_CC->FillthisbufferCount != pComponentPrivate_CC->FillbufferdoneCount) { 26160db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_cond_wait(&bufferReturned_condition, &bufferReturned_mutex); 26170db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong } 26180db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_mutex_unlock(&bufferReturned_mutex); 261985e28eec8163c776f2f3a093f4053a96ed2d6f98Steve Block ALOGI("AAC encoder has returned all buffers"); 26200db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong 2621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate_CC->codecStop_mutex); 2622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate_CC->codecStop_waitingsignal == 0){ 262344577d1f0e8d8ea13fe130fc8987035428ee021cJames Dong pComponentPrivate_CC->codecStop_waitingsignal = 1; 2624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate_CC->codecStop_threshold); 2625b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_PRINT2(pComponentPrivate_CC->dbg, "stop ack. received. stop waiting for sending disable command completed\n"); 2626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate_CC->codecStop_mutex); 26280db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong 26290db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong if (!pComponentPrivate_CC->bNoIdleOnStop) 2630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->curState = OMX_StateIdle; 2632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 2633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin rm_error = RMProxy_NewSendCommand(pComponentPrivate_CC->pHandle, 2635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin RMProxy_StateSet, 2636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_AAC_Encoder_COMPONENT, 2637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateIdle, 2638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3456, NULL); 2639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate_CC->bPreempted == 0) { 2642eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 2643eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement reference count with signal enabled */ 2644eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(RemoveStateTransition(pComponentPrivate_CC, OMX_TRUE) != OMX_ErrorNone) { 2645eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 2646eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 2647eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 2648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pComponentPrivate_CC->pHandle, 2649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pHandle->pApplicationPrivate, 2650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 2651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 2652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->curState, 2653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pComponentPrivate_CC->pHandle, 2657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->pHandle->pApplicationPrivate, 2658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 2659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorResourcesPreempted, 2660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorMajor, 2661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: setting bDspStoppedWhileExecuting\n",__LINE__); 2668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->bDspStoppedWhileExecuting = OMX_TRUE; 2669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: bNoIdleOnStop %ld \n", __LINE__,pComponentPrivate_CC->bNoIdleOnStop); 2670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->bNoIdleOnStop= OMX_FALSE; 2671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(event == EMMCodecDspMessageRecieved) 2677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE EMMCodecDspMessageRecieved \n",__LINE__); 2679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate_CC->dbg, "%d :: UTIL: commandedState = %p\n",__LINE__,args[0]); 2680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: arg1 = %p\n",__LINE__,args[1]); 2681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: arg2 = %p\n",__LINE__,args[2]); 2682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(0x0500 == (OMX_U32)args[2]) 2683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: See Message Here\n",__LINE__); 2685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(event == EMMCodecAlgCtrlAck) 2690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE USN_DSPACK_ALGCTRL \n",__LINE__); 2692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (event == EMMCodecDspError) 2696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2697b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_PRSTATE2(pComponentPrivate_CC->dbg, "%d :: commandedState = %d\n",__LINE__,(int)args[0]); 2698b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: arg4 = %d\n",__LINE__,(int)args[4]); 2699b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: arg5 = %d\n",__LINE__,(int)args[5]); 2700b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d ::UTIL: EMMCodecDspError Here\n",__LINE__); 2701b65f253fdc60f6208a54911bee793d225f23cdf8James Dong switch ( (OMX_U32) args [4]) 2702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2703b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* USN_ERR_NONE,: Indicates that no error encountered during execution of the command and the command execution completed succesfully. 2704b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * USN_ERR_WARNING,: Indicates that process function returned a warning. The exact warning is returned in Arg2 of this message. 2705b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * USN_ERR_PROCESS,: Indicates that process function returned a error type. The exact error type is returnd in Arg2 of this message. 2706b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * USN_ERR_PAUSE,: Indicates that execution of pause resulted in error. 2707b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * USN_ERR_STOP,: Indicates that execution of stop resulted in error. 2708b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * USN_ERR_ALGCTRL,: Indicates that execution of alg control resulted in error. 2709b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * USN_ERR_STRMCTRL,: Indiactes the execution of STRM control command, resulted in error. 2710b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * USN_ERR_UNKNOWN_MSG,: Indicates that USN received an unknown command. */ 2711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 2713b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case USN_ERR_PAUSE: 2714b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case USN_ERR_STOP: 2715b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case USN_ERR_ALGCTRL: 2716b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case USN_ERR_STRMCTRL: 2717b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case USN_ERR_UNKNOWN_MSG: 2718b65f253fdc60f6208a54911bee793d225f23cdf8James Dong { 2719b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate_CC->bIsInvalidState=OMX_TRUE; 2720b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate_CC->curState = OMX_StateInvalid; 2721b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle = pComponentPrivate_CC->pHandle; 2722b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate_CC->cbInfo.EventHandler(pHandle, 2723b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 2724b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 2725b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ErrorInvalidState, 2726b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 2727b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 2728b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 2729b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 2730eaaadaf5ebb5e352e2ed4a12714f5d2363da0dcdJames Dong#endif 2731eaaadaf5ebb5e352e2ed4a12714f5d2363da0dcdJames Dong 2732b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case USN_ERR_WARNING: 2733b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case USN_ERR_PROCESS: 2734b65f253fdc60f6208a54911bee793d225f23cdf8James Dong AACENC_HandleUSNError (pComponentPrivate_CC, (OMX_U32)args[5]); 2735b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 2736b65f253fdc60f6208a54911bee793d225f23cdf8James Dong default: 2737b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 2738eaaadaf5ebb5e352e2ed4a12714f5d2363da0dcdJames Dong } 2739b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 2740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (event == EMMCodecProcessingPaused) 2744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->bPauseCommandPending = OMX_TRUE; 2746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_TransitionToPause(pComponentPrivate_CC); 2747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 2751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (event ==EMMCodecInitError) 2753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Cheking for MMU_fault */ 2755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((args[4] == (void*)USN_ERR_UNKNOWN_MSG) && (args[5] == (void*)NULL)) 2756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: MMU_Fault \n",__LINE__); 2758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->bIsInvalidState=OMX_TRUE; 2759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate_CC->dbg, "State changed to OMX_StateInvalid Line %d\n",__LINE__); 2760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->curState = OMX_StateInvalid; 2762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = pComponentPrivate_CC->pHandle; 2763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, 2764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 2765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 2766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorStreamCorrupt, 2767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorSevere, 2768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (event ==EMMCodecInternalError) 2774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Cheking for MMU_fault */ 2776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((args[4] == (void*)USN_ERR_UNKNOWN_MSG) && (args[5] == (void*)NULL)) 2777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: MMU_Fault \n",__LINE__); 2779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->bIsInvalidState=OMX_TRUE; 2780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pComponentPrivate_CC->dbg, "State changed to OMX_StateInvalid Line %d\n",__LINE__); 2781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->curState = OMX_StateInvalid; 2783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = pComponentPrivate_CC->pHandle; 2784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, 2785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate, 2786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, 2787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorStreamCorrupt, 2788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TI_ErrorSevere, 2789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 2790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate_CC->dbg, "%d:pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate_CC->curState); 2796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate_CC->dbg, "%d :: UTIL: Exiting the LCML_Callback Function\n",__LINE__); 2797b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* report the error to the client via event */ 2798b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if(eError != OMX_ErrorNone){ 2799b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ERROR4(pComponentPrivate_CC->dbg, "%d:: Error: \n",__LINE__); 2800b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate_CC->cbInfo.EventHandler (pComponentPrivate_CC->pHandle, 2801b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate_CC->pHandle->pApplicationPrivate, 2802b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 2803b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError, 2804b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 2805b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 2806b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 2807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/ 2811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * AACENCGetCorresponding_LCMLHeader() function will be called by LCML_Callback 2813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * component to write the msg 2814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param *pBuffer, Event which gives to details about USN status 2815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param LCML_AACENC_BUFHEADERTYPE **ppLcmlHdr // args [0] //bufType; 2816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 2818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 2819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/ 2820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/ 2821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCGetCorresponding_LCMLHeader(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U8 *pBuffer, OMX_DIRTYPE eDir, LCML_AACENC_BUFHEADERTYPE **ppLcmlHdr) 2822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_AACENC_BUFHEADERTYPE *pLcmlBufHeader = NULL; 2826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int nIpBuf =0 ; 2827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int nOpBuf =0; 2828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 i =0; 2829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate_CC = NULL; 2831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate_CC = pComponentPrivate; 2832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nIpBuf=pComponentPrivate_CC->pInputBufferList->numBuffers; 2834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nOpBuf=pComponentPrivate_CC->pOutputBufferList->numBuffers; 2835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Entering AACENCGetCorresponding_LCMLHeader..\n",__LINE__); 2837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eDir == OMX_DirInput) { 2839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: AACENCGetCorresponding_LCMLHeader -- eDir = %d \n",__LINE__,eDir); 2840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlBufHeader = pComponentPrivate_CC->pLcmlBufHeader[INPUT_PORT]; 2841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: Before corresponding LCML Header is Found \n",__LINE__); 2842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i<nIpBuf; i++) { 2843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBuffer == pLcmlBufHeader->buffer->pBuffer) { 2844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *ppLcmlHdr = pLcmlBufHeader; 2845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "%d:: UTIL: Corresponding LCML Header Found\n",__LINE__); 2846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pBuffer = %p\n",pBuffer); 2847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer); 2848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pLcmlBufHeader->buffer->pBuffer = %p\n",pLcmlBufHeader->buffer->pBuffer); 2849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlBufHeader++; 2852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (eDir == OMX_DirOutput) 2855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: AACENCGetCorresponding_LCMLHeader -- eDir = %d \n",__LINE__,eDir); 2857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlBufHeader = pComponentPrivate_CC->pLcmlBufHeader[OUTPUT_PORT]; 2858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: Before corresponding LCML Header is Found \n",__LINE__); 2859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "nOpBuf = %d\n",nOpBuf); 2860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i<nOpBuf; i++) 2861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer); 2863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader = %p\n",pLcmlBufHeader); 2864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer); 2865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, " pLcmlBufHeader->buffer->pBuffer = %p\n", pLcmlBufHeader->buffer->pBuffer); 2866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer); 2867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader = %p\n",pLcmlBufHeader); 2868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer); 2869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader->buffer->pBuffer = %p\n",pLcmlBufHeader->buffer->pBuffer); 2870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBuffer == pLcmlBufHeader->buffer->pBuffer) 2871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *ppLcmlHdr = pLcmlBufHeader; 2873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d:: UTIL: Corresponding LCML Header Found\n",__LINE__); 2874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pBuffer = %p\n",pBuffer); 2875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer); 2876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pLcmlBufHeader->buffer->pBuffer = %p\n",pLcmlBufHeader->buffer->pBuffer); 2877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pLcmlBufHeader++; 2880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 2883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d:: UTIL: Invalid Buffer Type :: exiting...\n",__LINE__); 2885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Exiting AACENCGetCorresponding_LCMLHeader..\n",__LINE__); 2889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/ 2894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * AACENC_GetLCMLHandle() 2896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @retval OMX_HANDLETYPE 2898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin -------------------------------------------------------------------*/ 2900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_HANDLETYPE AACENCGetLCMLHandle(AACENC_COMPONENT_PRIVATE *pComponentPrivate) 2901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE pHandle = NULL; 2905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 2906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void *handle; 2907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char *error; 2908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE (*fpGetHandle)(OMX_HANDLETYPE); 2909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering AACENCGetLCMLHandle..\n",__LINE__); 2910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle = dlopen("libLCML.so", RTLD_LAZY); 2911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!handle) { 2912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fputs(dlerror(), stderr); 2913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fpGetHandle = dlsym (handle, "GetHandle"); 2917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((error = dlerror()) != NULL) { 2918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fputs(error, stderr); 2919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 2922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin HINSTANCE hDLL; 2923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin typedef OMX_ERRORTYPE (*LPFNDLLFUNC1)(OMX_HANDLETYPE); 2924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LPFNDLLFUNC1 fpGetHandle; 2925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering AACENCGetLCMLHandle..\n",__LINE__); 2927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hDLL = LoadLibraryEx(TEXT("OAF_BML.dll"), NULL, 0); 2929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (hDLL == NULL) { 2930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "BML Load Failed!!!\n"); 2931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = NULL; 2932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fpGetHandle = (LPFNDLLFUNC1)GetProcAddress(hDLL,TEXT("GetHandle")); 2936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!fpGetHandle) { 2937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin // handle the error 2938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FreeLibrary(hDLL); 2939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "BML GetProcAddress Failed!!!\n"); 2940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = NULL; 2941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = (*fpGetHandle)(&pHandle); 2945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) { 2946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorUndefined; 2947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "eError != OMX_ErrorNone...\n"); 2948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = NULL; 2949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 2951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin dlclose(handle); /* got error - Close LCML lib */ 2952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "AAC: [AACENCGetLCMLHandle] closing LCML \n"); 2953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle = NULL; 2954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 2955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pHandle)->pComponentPrivate= pComponentPrivate; 2959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->ptrLibLCML=handle; /* saving LCML lib pointer */ 2960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "AAC: ptrLibLCML = %p\n",pComponentPrivate->ptrLibLCML); 2961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bGotLCML = OMX_TRUE; 2962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting AACENCGetLCMLHandle..\n",__LINE__); 2965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return pHandle; 2966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 2969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn AACENC_SetPending() description for AACENC_SetPending 2971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAACENC_SetPending(). 2972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinThis component is called when a buffer is queued to the LCML 2973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 2974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 2975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 2976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 2977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 2978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 2979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE 2980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 2981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 2982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid AACENC_SetPending(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber) 2983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 i; 2985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eDir == OMX_DirInput) { 2987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 2988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) { 2989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[i] = 1; 2990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************INPUT BUFFER %d IS PENDING Line %ld******************************\n",i,lineNumber); 2991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 2996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) { 2997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[i] = 1; 2998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************OUTPUT BUFFER %d IS PENDING Line %ld******************************\n",i,lineNumber); 2999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 3005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn AACENC_ClearPending() description for AACENC_ClearPending 3007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAACENC_ClearPending(). 3008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinThis component is called when a buffer is returned from the LCML 3009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 3010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 3012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 3014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE 3016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 3017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 3018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid AACENC_ClearPending(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber) 3019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 i; 3021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "pComponentPrivate = %p\n",pComponentPrivate); 3023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pBufHdr = %p\n",pBufHdr); 3024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "eDir = %d\n",eDir); 3025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eDir == OMX_DirInput) { 3027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 3028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) { 3029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[i] = 0; 3030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************INPUT BUFFER %d IS RECLAIMED Line %ld******************************\n",i,lineNumber); 3031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 3036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) { 3037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[i] = 0; 3038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************OUTPUT BUFFER %d IS RECLAIMED Line %ld******************************\n",i,lineNumber); 3039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 3045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn AACENC_IsPending() description for AACENC_IsPending 3047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAACENC_IsPending(). 3048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinThis method returns the pending status to the buffer 3049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 3050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 3052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 3054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE 3056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 3057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 3058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 AACENC_IsPending(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir) 3059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 i; 3061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eDir == OMX_DirInput) { 3063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 3064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) { 3065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Buffer pending: pBufHdr = %p \n",__LINE__,pBufHdr); 3066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return pComponentPrivate->pInputBufferList->bBufferPending[i]; 3067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 3071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 3072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) { 3073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Buffer pending: pBufHdr = %p \n",__LINE__,pBufHdr); 3074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return pComponentPrivate->pOutputBufferList->bBufferPending[i]; 3075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return -1; 3079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_TransitionToPause(AACENC_COMPONENT_PRIVATE *pComponentPrivate) 3082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "AACENC_TransitionToPause:::pComponentPrivate->nOutStandingFillDones = %ld\n",pComponentPrivate->nOutStandingFillDones ); 3086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "AACENC_TransitionToPause:::pComponentPrivate->nOutStandingEmptyDones = %ld\n",pComponentPrivate->nOutStandingEmptyDones ); 3087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->nOutStandingFillDones <= 0 && pComponentPrivate->nOutStandingEmptyDones <= 0) 3088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 3089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StatePause; 3090eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3091eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement reference count with signal enabled */ 3092eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) { 3093eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 3094eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 3095eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 3097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 3098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, 3099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, 3100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState, 3101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 3102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bPauseCommandPending = OMX_FALSE; 3103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 3109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 3110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENCFill_LCMLInitParamsEx () This function is used by the component thread to 3111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* fill the all of its initialization parameters, buffer deatils etc 3112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* to LCML structure, 3113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent handle for this instance of the component 3115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param plcml_Init pointer to LCML structure to be filled 3116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre 3118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post 3120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 3121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none 3122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 3123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */ 3124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCFill_LCMLInitParamsEx(OMX_HANDLETYPE pComponent) 3125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIpBuf,nIpBufSize,nOpBuf,nOpBufSize; 3128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 i; 3129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pTemp = NULL; 3130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 size_lcml; 3131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_AACENC_BUFHEADERTYPE *pTemp_lcml = NULL; 3132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_DSP_INTERFACE *pHandle = (LCML_DSP_INTERFACE *)pComponent; 3133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pComponentPrivate = pHandle->pComponentPrivate; 3134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: AACENCFill_LCMLInitParams\n ",__LINE__); 3136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nIpBuf = pComponentPrivate->pInputBufferList->numBuffers; 3137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nIpBufSize = pComponentPrivate->pPortDef[INPUT_PORT]->nBufferSize; 3138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nOpBuf = pComponentPrivate->pOutputBufferList->numBuffers; 3139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nOpBufSize = pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferSize; 3140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details -----------\n",__LINE__); 3142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input Buffer Count = %ld \n",__LINE__,nIpBuf); 3143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input Buffer Size = %ld\n",__LINE__,nIpBufSize); 3144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Count = %ld\n",__LINE__,nOpBuf); 3145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Size = %ld\n",__LINE__,nOpBufSize); 3146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details ------------\n",__LINE__); 3147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size_lcml = nIpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE); 3149b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE(pTemp_lcml, size_lcml, LCML_AACENC_BUFHEADERTYPE); 3150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "pTemp_lcml %p to %p \n",pTemp_lcml,(pTemp_lcml + sizeof(pTemp_lcml) )); 3151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[INPUT_PORT] = pTemp_lcml; 3153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i<nIpBuf; i++) { 3154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = pComponentPrivate->pInputBufferList->pBufHdr[i]; 3156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 3157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nAllocLen = nIpBufSize; 3158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFilledLen = nIpBufSize; 3159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER; 3160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER; 3161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 3162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 3163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->buffer = pTemp; 3164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirInput; 3165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3166b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pIpParam, sizeof(AACENC_UAlgInBufParamStruct), AACENC_UAlgInBufParamStruct); 3167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "pTemp_lcml %p to %p \n",pTemp_lcml,(pTemp_lcml + sizeof(pTemp_lcml) )); 3168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->pIpParam->bLastBuffer = 0; 3170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* This means, it is not a last buffer. This flag is to be modified by 3171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application to indicate the last buffer */ 3172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 3173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml++; 3174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Allocate memory for all output buffer headers, This memory pointer will be sent to LCML */ 3177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size_lcml = nOpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE); 3178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3179b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE(pTemp_lcml, size_lcml, LCML_AACENC_BUFHEADERTYPE); 3180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "size_lcml %d to %lx \n", (int)size_lcml,(size_lcml + sizeof(size_lcml) )); 3181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[OUTPUT_PORT] = pTemp_lcml; 3183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "[AACENCFill_LCMLInitParamsEx] nOpBuf = %d\n", (int)nOpBuf); 3187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "[AACENCFill_LCMLInitParamsEx] pComponentPrivate->pOutputBufferList->numBuffers = %d\n",pComponentPrivate->pOutputBufferList->numBuffers); 3188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i<nOpBuf; i++) { 3189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "[AACENCFill_LCMLInitParamsEx] pTemp_lcml = %p\n",pTemp_lcml); 3190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 3191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 3192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nAllocLen = nOpBufSize; 3193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFilledLen = nOpBufSize; 3194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER; 3195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER; 3196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nVersion = pTemp->nVersion.nVersion; 3197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 3198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 3199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* This means, it is not a last buffer. This flag is to be modified by 3200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the application to indicate the last buffer */ 3201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->buffer = pTemp; 3202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirOutput; 3203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3204b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pOpParam, sizeof(AACENC_UAlgOutBufParamStruct), AACENC_UAlgOutBufParamStruct); 3205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "\n pTemp_lcml->pOpParam %p \n",pTemp_lcml->pOpParam); 3207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 3208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp++; 3209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pTemp_lcml++; 3210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 1; 3212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bBypassDSP = 0; 3213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 3215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting Fill_LCMLInitParams\n",__LINE__); 3216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError); 3217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCWriteConfigHeader(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr){ 3222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 3224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPosition = 0; 3225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNumBitsWritten = 0; 3226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nBytePosition = 0; 3227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nBitPosition = 0; 3228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nBits = 0; 3229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 tempData = 0; 3230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 rateIndex = 0; 3231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 nBuf = 0; 3232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 nBuf2 = 0; 3233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin //nBytePosition = nPosition / 8; //add this back if we need to handle more than 4 bytes (U32). 3234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin //nBitPosition = nPosition % 8; 3235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset(pBufHdr->pBuffer, 0x0, pBufHdr->nAllocLen); // make sure we start with zeroes 3236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBits = 5; //audioObjectType 3238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPosition += nBits; 3239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "profile is %d\n", pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile); 3240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile == OMX_AUDIO_AACObjectLC) 3241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 3242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tempData = AACENC_OBJ_TYP_LC << (16-nPosition); 3243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "profile is LC, tempData = 2 << (32-5) = %ld\n", tempData); 3244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile == OMX_AUDIO_AACObjectHE) 3246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 3247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tempData = AACENC_OBJ_TYP_HEAAC << (16-nPosition); 3248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile == OMX_AUDIO_AACObjectHE_PS) 3250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 3251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tempData = AACENC_OBJ_TYP_PS << (16-nPosition); 3252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBuf = tempData; 3254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBits = 4; //SamplingFrequencyIndex 3256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPosition += nBits; 3257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin rateIndex = AACEnc_GetSampleRateIndexL(pComponentPrivate->aacParams[OUTPUT_PORT]->nSampleRate); 3258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tempData = rateIndex << (16-nPosition); 3259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBuf |= tempData; 3260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "CONFIG BUFFER = %d\n\n", nBuf); 3261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBits = 4; //channelConfiguration 3263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPosition += nBits; 3264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tempData = pComponentPrivate->aacParams[OUTPUT_PORT]->nChannels << (16-nPosition); 3265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBuf |= tempData; 3266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin //@TODO add the rest of the AudioSpecificConfigData 3268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBuf2 = (nBuf>> 8) | (nBuf << 8); /* Changing Endianess */ 3270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "CONFIG BUFFER = %d\n\n", nBuf2); 3272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pBufHdr->pBuffer, &nBuf2, sizeof(OMX_U16)); 3274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHdr->nFlags = NORMAL_BUFFER; // clear any other flags then add the needed ones 3275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHdr->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME; 3276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHdr->nFlags |= OMX_BUFFERFLAG_CODECCONFIG; 3277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufHdr->nFilledLen = sizeof(OMX_U16); //need make this dynamic for non basic LC cases. 3278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 3280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=======================================================================*/ 3283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*! @fn AACDec_GetSampleRateIndexL 3284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @brief Gets the sample rate index 3286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param aRate : Actual Sampling Freq 3288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @Return Index 3290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 3292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=======================================================================*/ 3293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint AACEnc_GetSampleRateIndexL( const int aRate) 3294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int index = 0; 3296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch( aRate ){ 3298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 96000: 3299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 0; 3300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 88200: 3302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 1; 3303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 64000: 3305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 2; 3306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 48000: 3308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 3; 3309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 44100: 3311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 4; 3312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 32000: 3314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 5; 3315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 24000: 3317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 6; 3318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 22050: 3320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 7; 3321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 16000: 3323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 8; 3324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 12000: 3326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 9; 3327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 11025: 3329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 10; 3330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 8000: 3332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = 11; 3333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 3335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 3336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return index; 3339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3341b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/* =========================================================================*/ 33420db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong/** func AACENC_HandleUSNError 33430db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 33440db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * desc Handles error messages returned by the dsp 33450db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 33460db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong *@return n/a 33470db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong */ 3348b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/* =========================================================================*/ 3349b65f253fdc60f6208a54911bee793d225f23cdf8James Dongvoid AACENC_HandleUSNError (AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 arg) 3350b65f253fdc60f6208a54911bee793d225f23cdf8James Dong{ 3351b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_COMPONENTTYPE *pHandle = NULL; 3352b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_U32 i; 3353b65f253fdc60f6208a54911bee793d225f23cdf8James Dong switch (arg) 3354b65f253fdc60f6208a54911bee793d225f23cdf8James Dong { 3355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3356b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_WARN_CONCEALED: 3357b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_WARN_UNDERFLOW: 3358b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_WARN_OVERFLOW: 3359b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_WARN_ENDOFDATA: 3360b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ERROR4(pComponentPrivate->dbg, "Algorithm Error" ); 3361b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* all of these are informative messages, Algo can recover, no need to notify the 3362b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * IL Client at this stage of the implementation */ 3363b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 3364b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_WARN_PLAYCOMPLETED: 3365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3366b65f253fdc60f6208a54911bee793d225f23cdf8James Dong { 3367b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: IUALG_WARN_PLAYCOMPLETED/USN_ERR_WARNING event received\n", __LINE__); 3368b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->bPlayCompleteFlag = 1; 3369b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifndef UNDER_CE 3370b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 3371b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->pHandle->pApplicationPrivate, 3372b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventBufferFlag, 3373b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (OMX_U32)NULL, 3374b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_BUFFERFLAG_EOS, 3375b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 3376b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->pLcmlBufHeader[0]->pIpParam->bLastBuffer = 0; 3377b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#else 3378b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* add callback to application to indicate SN/USN has completed playing of current set of date */ 3379b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 3380b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->pHandle->pApplicationPrivate, 3381b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventBufferFlag, 3382b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (OMX_U32)NULL, 3383b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_BUFFERFLAG_EOS, 3384b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 3385b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif 3386b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 3387b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 338836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong 3389b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef _ERROR_PROPAGATION__ 3390b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_ERR_BAD_HANDLE: 3391b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_ERR_DATA_CORRUPT: 3392b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_ERR_NOT_SUPPORTED: 3393b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_ERR_ARGUMENT: 3394b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_ERR_NOT_READY: 3395b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case IUALG_ERR_GENERAL: 3396b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 3397b65f253fdc60f6208a54911bee793d225f23cdf8James Dong { 3398b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* all of these are fatal messages, Algo can not recover 3399b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * hence return an error */ 3400b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ERROR4(pComponentPrivate->dbg, "Algorithm Error, cannot recover" ); 3401b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->bIsInvalidState=OMX_TRUE; 3402b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->curState = OMX_StateInvalid; 3403b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle = pComponentPrivate->pHandle; 3404b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->cbInfo.EventHandler(pHandle, 3405b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pApplicationPrivate, 3406b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_EventError, 3407b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_ErrorInvalidState, 3408b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_TI_ErrorSevere, 3409b65f253fdc60f6208a54911bee793d225f23cdf8James Dong NULL); 3410b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 3411b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 3412eaaadaf5ebb5e352e2ed4a12714f5d2363da0dcdJames Dong#endif 3413b65f253fdc60f6208a54911bee793d225f23cdf8James Dong default: 3414b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 3415b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 3416b65f253fdc60f6208a54911bee793d225f23cdf8James Dong} 3417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3419b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef RESOURCE_MANAGER_ENABLED 3420b65f253fdc60f6208a54911bee793d225f23cdf8James Dongvoid AACENC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData) 3421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 3422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMMANDTYPE Cmd = OMX_CommandStateSet; 3423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE state = OMX_StateIdle; 3424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)cbData.hComponent; 3425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin AACENC_COMPONENT_PRIVATE *pCompPrivate = NULL; 3426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 3428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (*(cbData.RM_Error) == OMX_RmProxyCallback_ResourcesPreempted) { 3430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPrivate->curState == OMX_StateExecuting || 3431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivate->curState == OMX_StatePause) { 3432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin write (pCompPrivate->cmdPipe[1], &Cmd, sizeof(Cmd)); 3433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin write (pCompPrivate->cmdDataPipe[1], &state ,sizeof(OMX_U32)); 3434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivate->bPreempted = 1; 3436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (*(cbData.RM_Error) == OMX_RmProxyCallback_ResourcesAcquired){ 3439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 3440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 3441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventResourcesAcquired, 0,0, 3442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NULL); 3443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 3446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 3447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 3448b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif 3449eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3450eced958917cca059f5e7222a83a44adc4e259c67Benny WongOMX_ERRORTYPE AddStateTransition(AACENC_COMPONENT_PRIVATE* pComponentPrivate) { 3451eced958917cca059f5e7222a83a44adc4e259c67Benny Wong OMX_ERRORTYPE eError = OMX_ErrorNone; 3452eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3453eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(pthread_mutex_lock(&pComponentPrivate->mutexStateChangeRequest)) { 3454eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 3455eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 3456eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Increment state change request reference count */ 3457eced958917cca059f5e7222a83a44adc4e259c67Benny Wong pComponentPrivate->nPendingStateChangeRequests++; 345885e28eec8163c776f2f3a093f4053a96ed2d6f98Steve Block ALOGI("addstatetranstion: %ld @ %d", pComponentPrivate->nPendingStateChangeRequests, pComponentPrivate->curState); 3459eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3460eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) { 3461eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 3462eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 3463eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return eError; 3464eced958917cca059f5e7222a83a44adc4e259c67Benny Wong} 3465eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3466eced958917cca059f5e7222a83a44adc4e259c67Benny WongOMX_ERRORTYPE RemoveStateTransition(AACENC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BOOL bEnableSignal) { 3467eced958917cca059f5e7222a83a44adc4e259c67Benny Wong OMX_ERRORTYPE eError = OMX_ErrorNone; 3468eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3469eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* Decrement state change request reference count*/ 3470eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(pthread_mutex_lock(&pComponentPrivate->mutexStateChangeRequest)) { 3471eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 3472eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 3473eced958917cca059f5e7222a83a44adc4e259c67Benny Wong pComponentPrivate->nPendingStateChangeRequests--; 347485e28eec8163c776f2f3a093f4053a96ed2d6f98Steve Block ALOGI("removestatetranstion: %ld @ %d", pComponentPrivate->nPendingStateChangeRequests, pComponentPrivate->curState); 3475eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3476eced958917cca059f5e7222a83a44adc4e259c67Benny Wong /* If there are no more pending requests, signal the thread waiting on this*/ 3477eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(!pComponentPrivate->nPendingStateChangeRequests && bEnableSignal) { 3478eced958917cca059f5e7222a83a44adc4e259c67Benny Wong pthread_cond_signal(&(pComponentPrivate->StateChangeCondition)); 3479eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 3480eced958917cca059f5e7222a83a44adc4e259c67Benny Wong if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) { 3481eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return OMX_ErrorUndefined; 3482eced958917cca059f5e7222a83a44adc4e259c67Benny Wong } 3483eced958917cca059f5e7222a83a44adc4e259c67Benny Wong 3484eced958917cca059f5e7222a83a44adc4e259c67Benny Wong return eError; 3485eced958917cca059f5e7222a83a44adc4e259c67Benny Wong} 34860db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong 34870db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong/* ========================================================================== */ 34880db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong/** 34890db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @SignalIfAllBuffersAreReturned() This function send signals if OMX returned all buffers to app 34900db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 34910db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @param AACENC_COMPONENT_PRIVATE *pComponentPrivate 34920db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 34930db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @pre None 34940db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 34950db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @post None 34960db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 34970db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @return None 34980db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong*/ 34990db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong/* ========================================================================== */ 35000db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dongvoid SignalIfAllBuffersAreReturned(AACENC_COMPONENT_PRIVATE *pComponentPrivate) 35010db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong{ 35020db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_mutex_lock(&bufferReturned_mutex); 35030db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong if ((pComponentPrivate->EmptythisbufferCount == pComponentPrivate->EmptybufferdoneCount) && 35040db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong (pComponentPrivate->FillthisbufferCount == pComponentPrivate->FillbufferdoneCount)) { 35050db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_cond_broadcast(&bufferReturned_condition); 350685e28eec8163c776f2f3a093f4053a96ed2d6f98Steve Block ALOGI("Sending pthread signal that OMX has returned all buffers to app"); 35070db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong } 35080db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_mutex_unlock(&bufferReturned_mutex); 35090db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong} 35100db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong 35110db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong/* ====================================================================== */ 35120db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong/*@AACENC_IncrementBufferCounterByOne() This function is used by the component 35130db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * to atomically increment some input or output buffer counter 35140db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 35150db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @param mutex pointer to mutex for synchronizing the value change on 35160db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * the counter 35170db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @param counter the buffer counter to be incremented 35180db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * 35190db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @post the buffer counter's value will be incremented by one. 35200db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong * @return None 35210db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong */ 35220db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong/* ====================================================================== */ 35230db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dongvoid AACENC_IncrementBufferCounterByOne(pthread_mutex_t* mutex, OMX_U32 *counter) 35240db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong{ 35250db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_mutex_lock(mutex); 35260db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong (*counter)++; 35270db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong pthread_mutex_unlock(mutex); 35280db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong} 35290db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong 35300db3b90dbc46ddaa275f66c94c0c963b6cbd535eJames Dong 3531