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_G726Dec_CompThread.c 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file implements the component thread functionality that receives 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * commands and buffers from application and LCML. 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\g726_dec\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 *! This is newest file 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * =========================================================================== */ 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * INCLUDE FILES 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <oaf_osal.h> 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <omx_core.h> 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dlfcn.h> 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <malloc.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <memory.h> 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dbapi.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G726Dec_Utils.h" 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G726DEC_ComponentThread() This is component thread that keeps listening for 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * commands or event/messages/buffers from application or from LCML. 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pThreadData This is thread argument. 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Always 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid* G726DEC_ComponentThread (void* pThreadData) 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int status = 0; 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct timespec tv; 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int fdmax = 0; 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fd_set rfds; 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nRet = 0; 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_COMPONENT_PRIVATE* pComponentPrivate = (G726DEC_COMPONENT_PRIVATE*)pThreadData; 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = pComponentPrivate->pHandle; 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT (":: Entering ComponentThread \n"); 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->cmdPipe[0]; 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dataPipe[0] > fdmax) { 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->dataPipe[0]; 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while (1) { 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO (&rfds); 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->cmdPipe[0], &rfds); 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->dataPipe[0], &rfds); 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_sec = 1; 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_nsec = 0; 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigset_t set; 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigemptyset (&set); 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigaddset (&set, SIGALRM); 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = pselect (fdmax+1, &rfds, NULL, NULL, &tv, &set); 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = select (fdmax+1, &rfds, NULL, NULL, &tv); 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bExitCompThrd == 1) { 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT(":: Comp Thrd Exiting here...\n"); 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 == status) { 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT("\n\n\n!!!!! Component Time Out !!!!!!!!!!!! \n"); 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bExitCompThrd == 1) { 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_EPRINT(":: Comp Thrd Exiting here...\n"); 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if (-1 == status) { 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT (":: Error in Select\n"); 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle,pHandle->pApplicationPrivate, 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError,OMX_ErrorInsufficientResources, 0, 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Error from COmponent Thread in select"); 145b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorInsufficientResources; 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if ((FD_ISSET (pComponentPrivate->dataPipe[0], &rfds))) { 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret; 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufHeader = NULL; 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT (":: DATA pipe is set in Component Thread\n"); 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = read(pComponentPrivate->dataPipe[0], &pBufHeader, sizeof(pBufHeader)); 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (ret == -1) { 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT (":: Error while reading from the pipe\n"); 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G726DEC_HandleDataBuf_FromApp (pBufHeader,pComponentPrivate); 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT (":: Error From HandleDataBuf_FromApp\n"); 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if (FD_ISSET (pComponentPrivate->cmdPipe[0], &rfds)) { 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT (":: CMD pipe is set in Component Thread\n"); 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = G726DEC_HandleCommand (pComponentPrivate); 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == EXIT_COMPONENT_THRD) { 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT ("Exiting from Component thread\n"); 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_CleanupInitParams(pHandle); 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_STATEPRINT("****************** Component State Set to Loaded\n\n"); 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bPreempted == 0) { 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorNone,pComponentPrivate->curState, NULL); 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorResourcesLost,pComponentPrivate->curState, NULL); 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPreempted = 0; 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bCompThreadStarted = 0; 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726DEC_DPRINT (":: Exiting ComponentThread \n"); 197b65f253fdc60f6208a54911bee793d225f23cdf8James Dong return (void*)eError; 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 199