1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License as published by the Free Software Foundation; either 8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Lesser General Public License for more details. 15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================= 22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Texas Instruments OMAP (TM) Platform Software 23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Use of this software is controlled by the terms and conditions found 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in the license agreement under which this software has been supplied. 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * =========================================================================== */ 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @file OMX_G729Enc_ComponentThread.c 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file implements G729 Encoder Component Thread and its functionality 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * that is fully compliant with the Khronos OpenMAX (TM) 1.0 Specification 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\g729_enc\src 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 1.0 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ---------------------------------------------------------------------------- 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! =================================== 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 21-sept-2006 bk: updated review findings for alpha release 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 24-Aug-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests some more 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 18-July-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests validated for few cases 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 21-Jun-2006 bk: Khronos OpenMAX (TM) 1.0 migration done 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 22-May-2006 bk: DASF recording quality improved 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 19-Apr-2006 bk: DASF recording speed issue resloved 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 23-Feb-2006 bk: DASF functionality added 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 18-Jan-2006 bk: Repated recording issue fixed and LCML changes taken care 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 14-Dec-2005 bk: Initial Version 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 16-Nov-2005 bk: Initial Version 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 23-Sept-2005 bk: Initial Version 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 10-Sept-2005 bk: Initial Version 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 10-Sept-2005 bk: 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! This is newest file 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * =========================================================================== */ 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * INCLUDE FILES 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <oaf_osal.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <omx_core.h> 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dbapi.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/time.h> 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h> 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h> 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <ResourceManagerProxyAPI.h> 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "perf.h" 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------program files ----------------------------------------*/ 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G729Enc_Utils.h" 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G729Enc_ComponentThread.h" 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G729ENC_CompThread() Component thread 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_G729Enc_ComponentThread.h 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid* G729ENC_CompThread(void* pThreadData) 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int status = 0; 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct timespec tv; 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int fdmax = 0; 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = 0; 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fd_set rfds; 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nRet = 0; 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufHeader = NULL; 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_COMPONENT_PRIVATE* pComponentPrivate = (G729ENC_COMPONENT_PRIVATE*)pThreadData; 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = pComponentPrivate->pHandle; 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("Entering\n"); 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPERFcomp = PERF_Create(PERF_FOURCC('7', '2', '9', 'E'), 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleComponent | 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleAudioDecode); 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->cmdPipe[0]; 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dataPipe[0] > fdmax) 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->dataPipe[0]; 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while (1) 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO (&rfds); 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->cmdPipe[0], &rfds); 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->dataPipe[0], &rfds); 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_sec = 1; 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_nsec = 0; 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigset_t set; 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigemptyset (&set); 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigaddset (&set, SIGALRM); 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = pselect (fdmax+1, &rfds, NULL, NULL, &tv, &set); 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = select (fdmax+1, &rfds, NULL, NULL, &tv); 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 == status) 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("bIsThreadstop=%ld\n", pComponentPrivate->bIsThreadstop); 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("lcml_nOpBuf=%ld\n", pComponentPrivate->lcml_nOpBuf); 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("lcml_nIpBuf=%ld\n", pComponentPrivate->lcml_nIpBuf); 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("app_nBuf=%ld\n", pComponentPrivate->app_nBuf); 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bIsThreadstop == 1) 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 0; 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsThreadstop = 0; 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf = 0; 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf = 0; 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->app_nBuf = 0; 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->num_Op_Issued = 0; 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->num_Sent_Ip_Buff = 0; 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->num_Reclaimed_Op_Buff = 0; 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsEOFSent = 0; 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateIdle) 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("pComponentPrivate->curState not OMX_StateIdle\n"); 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("Component Time Out !!!!! \n"); 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(-1 == status) 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EPRINT("from CompThread in select\n"); 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorInsufficientResources, 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ""); 179b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorInsufficientResources; 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ((FD_ISSET (pComponentPrivate->dataPipe[0], &rfds))) 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("DATA pipe is set in Component Thread\n"); 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = read(pComponentPrivate->dataPipe[0], &pBufHeader, 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(pBufHeader)); 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (ret == -1) 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EPRINT("while reading from the pipe\n"); 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G729ENC_HandleDataBufFromApp(pBufHeader,pComponentPrivate); 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EPRINT("from G729ENC_HandleDataBufFromApp\n"); 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(FD_ISSET (pComponentPrivate->cmdPipe[0], &rfds)) 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Do not accept any command when the component is stopping */ 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("CMD pipe is set in Component Thread\n"); 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = G729ENC_HandleCommand(pComponentPrivate); 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == G729ENC_EXIT_COMPONENT_THRD) 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EPRINT("from G729ENC_CleanupInitParams\n"); 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp, 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_BoundaryComplete | PERF_BoundaryCleanup); 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bPreempted == 0) { 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorNone,pComponentPrivate->curState, NULL); 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorResourcesLost,pComponentPrivate->curState, NULL); 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPreempted = 0; 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_Done(pComponentPrivate->pPERFcomp); 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729ENC_DPRINT("Exiting. Returning = 0x%x\n", eError); 238b65f253fdc60f6208a54911bee793d225f23cdf8James Dong return (void*)eError; 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 240