OMX_AacEnc_Utils.c revision 36733d62c0d4c565da10b34978e587d0fda0f1ad
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/* ========================================================================== */
94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @AACENCFill_LCMLInitParams () This function is used by the component thread to
96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* fill the all of its initialization parameters, buffer deatils  etc
97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* to LCML structure,
98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param plcml_Init  pointer to LCML structure to be filled
101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none
107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*static AACENC_COMPONENT_PRIVATE *pComponentPrivate_CC;*/
110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCFill_LCMLInitParams(OMX_HANDLETYPE pComponent, LCML_DSP *plcml_Init, OMX_U16 arr[])
112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nIpBuf =0 ,nIpBufSize=0 ,nOpBuf = 0 ,nOpBufSize=0;
115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 i                               = 0;
116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pTemp             = NULL;
117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_S32 size_lcml                       = 0;
118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    char *ptr;
119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_AACENC_BUFHEADERTYPE *pTemp_lcml   = NULL;
120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_DSP_INTERFACE *pHandle = (LCML_DSP_INTERFACE *)pComponent;
121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     AACENC_COMPONENT_PRIVATE *pComponentPrivate = pHandle->pComponentPrivate;
122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_STRMATTR *strmAttr                 = NULL;
123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 HigherBitsSamplingRate          = 0;
124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 FramesPerOutBuf                 = 0;
125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 Channels                        = 0;
126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: AACENCFill_LCMLInitParams\n ",__LINE__);
129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nIpBuf = pComponentPrivate->pInputBufferList->numBuffers;
130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->nRuntimeInputBuffers = nIpBuf;
131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nIpBufSize = pComponentPrivate->pPortDef[INPUT_PORT]->nBufferSize;
132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nOpBuf = pComponentPrivate->pOutputBufferList->numBuffers;
133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nOpBufSize = pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferSize;
134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*saving a copy a number of output buffers */
135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->nRuntimeOutputBuffers = nOpBuf;
136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*recovering the value for the number of frames per Ouput Buffer */
138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    FramesPerOutBuf = (OMX_U16)pComponentPrivate->FramesPer_OutputBuffer;
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: Frames per output buffer = %d \n\n",__LINE__, FramesPerOutBuf);
140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details -----------\n",__LINE__);
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input  Buffer Count = %ld \n",__LINE__,nIpBuf);
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input  Buffer Size = %ld\n",__LINE__,nIpBufSize);
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Count = %ld\n",__LINE__,nOpBuf);
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Size = %ld\n",__LINE__,nOpBufSize);
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details ------------\n",__LINE__);
148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Fill Input Buffers Info for LCML */
150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->In_BufInfo.nBuffers = nIpBuf;
151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->In_BufInfo.nSize = nIpBufSize;
152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->In_BufInfo.DataTrMethod = DMM_METHOD;
153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Fill Output Buffers Info for LCML */
155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->Out_BufInfo.nBuffers = nOpBuf;
156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->Out_BufInfo.nSize = nOpBufSize;
157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->Out_BufInfo.DataTrMethod = DMM_METHOD;
158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Copy the node information*/
160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->NodeInfo.nNumOfDLLs = 3;
161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->NodeInfo.AllUUIDs[0].uuid = (struct DSP_UUID*)&MPEG4AACENC_SN_UUID;
163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[0].DllName,AACENC_DLL_NAME);
164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->NodeInfo.AllUUIDs[0].eDllType = DLL_NODEOBJECT;
165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->NodeInfo.AllUUIDs[1].uuid = (struct DSP_UUID*)&MPEG4AACENC_SN_UUID;
168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[1].DllName,AACENC_DLL_NAME);
169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->NodeInfo.AllUUIDs[1].eDllType = DLL_DEPENDENT;
170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->NodeInfo.AllUUIDs[2].uuid = &USN_TI_UUID;
173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[2].DllName,AACENC_USN_DLL_NAME);
174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->NodeInfo.AllUUIDs[2].eDllType = DLL_DEPENDENT;
175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->DeviceInfo.TypeofDevice = 0;
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Comp: OMX_AacEncUtils.c\n",__LINE__);
178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(pComponentPrivate->dasfmode == 1) {
179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate->dbg, "%d :: Codec is configuring to DASF mode\n",__LINE__);
18036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MALLOC_GENERIC(strmAttr, LCML_STRMATTR);
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRINT1(pComponentPrivate->dbg, "strmAttr %p \n",strmAttr);
182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->strmAttr = strmAttr;
184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: [ALLOC] %p\n",__LINE__,strmAttr);
185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        strmAttr->uSegid        = 0;
186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        strmAttr->uAlignment    = 0;
187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        strmAttr->uTimeout      = 1000;
188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        strmAttr->uBufsize      = INPUT_AACENC_BUFFER_SIZE_DASF;
189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        strmAttr->uNumBufs      = NUM_AACENC_INPUT_BUFFERS_DASF;
190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        strmAttr->lMode         = STRMMODE_PROCCOPY;
191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        plcml_Init->DeviceInfo.TypeofDevice = 1;
193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        plcml_Init->DeviceInfo.TypeofRender = 1;
194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        plcml_Init->DeviceInfo.AllUUIDs[0].uuid = &DCTN_TI_UUID;
195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        plcml_Init->DeviceInfo.DspStream = strmAttr;
196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*copy the other information*/
199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->SegID       = OMX_AACENC_DEFAULT_SEGMENT;
200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->Timeout     = -1;/*OMX_AACENC_SN_TIMEOUT;*/
201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->Alignment   = 0;
202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->Priority    = OMX_AACENC_SN_PRIORITY;
203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->ProfileID   = -1;
204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->unNumChannels   = (OMX_U16)pComponentPrivate->aacParams[OUTPUT_PORT]->nChannels;       /*Number of Channels*/
206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* splitting values for Sample rate and bit rate */
207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->ulSamplingRate  = (OMX_U16)pComponentPrivate->aacParams[OUTPUT_PORT]->nSampleRate;       /*Sampling rate*/
208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    HigherBitsSamplingRate             =(OMX_U16)((pComponentPrivate->aacParams[OUTPUT_PORT]->nSampleRate >>16)& 0xFFFF);
209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->unBitrate       = pComponentPrivate->aacParams[OUTPUT_PORT]->nBitRate;                /*Bit rate 2bytes*/
210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->nObjectType     = pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile;            /*Object Type */
211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*   Remaping Number of channels for SN */
213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*   SN does use 0: Mono and  1: stereo      */
214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(pComponentPrivate->unNumChannels==2)
215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        Channels=1;
217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (pComponentPrivate->unNumChannels==1)
219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        Channels=0;
221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatRAW ||
224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatMP4FF){
225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->File_Format = 0;
226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate->dbg, "OMX_AUDIO_AACStreamFormatRAW \n");
227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatADIF) {
229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->File_Format = 1;
230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate->dbg, "OMX_AUDIO_AACStreamFormatADIF \n");
231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if((pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatMP4ADTS) ||
233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACStreamFormat == OMX_AUDIO_AACStreamFormatMP2ADTS) )
234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->File_Format = 2;
236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate->dbg, "OMX_AUDIO_AACStreamFormatMP2ADTS \n");
237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(pComponentPrivate->dasfmode == 1) {
240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AAC ENCODER RUNNING UNDER DASF MODE\n",__LINE__);
241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[0]  = 2;                                                      /*Number of Streams*/
243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[1]  = 0;                                                      /*ID of the Input Stream*/
244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[2]  = 1;                                                      /*Type of Input Stream*/
245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[3]  = NUM_AACENC_INPUT_BUFFERS_DASF;                          /*Number of buffers for Input Stream*/
246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[4]  = 1;                                                      /*ID of the Output Stream*/
247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[5]  = 0;                                                      /*Type of Output Stream*/
248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[6]  = 2;                                                      /*Number of buffers for Output Stream*/
249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[7]  = 1;                                                      /*PNS Enable*/
250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[8]  = 1;                                                      /*TNS Enable*/
251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[9]  = Channels;                                               /*Number of Channels*/
252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[10] = pComponentPrivate->ulSamplingRate;                      /*Sampling rate- Lower bits*/
253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[11] = HigherBitsSamplingRate;                                 /*Sampling rate -Higher bits */
254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[12] = (OMX_U16)(pComponentPrivate->unBitrate & 0xFFFF);       /*Bit rate 2bytes*/
255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[13] = (OMX_U16)(pComponentPrivate->unBitrate >> 16);          /*Bit rate 2bytes*/
256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[14] = (OMX_U16)pComponentPrivate->nObjectType;                /*Object Type */
257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[15] = (OMX_U16)pComponentPrivate->bitRateMode;                /*bitrateMode*/
258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[16] = (OMX_U16)pComponentPrivate->File_Format;                /*FileFormat*/
259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[17] = FramesPerOutBuf;                                        /*FramesPerOutBuf*/
260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[18] = END_OF_CR_PHASE_ARGS;
261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(pComponentPrivate->dasfmode == 0) {
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AAC ENCODER RUNNING UNDER FILE MODE\n",__LINE__);
266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[0]  = 2;                                                      /*Number of Streams*/
267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[1]  = 0;                                                      /*ID of the Input Stream*/
268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[2]  = 0;                                                      /*Type of Input Stream*/
269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate->pInputBufferList->numBuffers) {
270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            arr[3] = (OMX_U16) pComponentPrivate->pInputBufferList->numBuffers;     /*Number of buffers for Input Stream*/
271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER1(pComponentPrivate->dbg, "arr[3] InputBuffers %d \n",arr[3]);
272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            arr[3] = 1;
275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[4]  = 1;                                                      /*ID of the Output Stream*/
277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[5]  = 0;                                                      /*Type of Output Stream*/
278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate->pOutputBufferList->numBuffers) {
279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            arr[6] = (OMX_U16) pComponentPrivate->pOutputBufferList->numBuffers;    /*Number of buffers for Output Stream*/
280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER1(pComponentPrivate->dbg, "arr[6] Output Buffers%d \n",arr[6]);
281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            arr[6] = 1;
284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[7]  = 1;                                                      /*PNS Enable*/
287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[8]  = 1;                                                      /*TNS Enable*/
288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /*  Adjusting the value for SN enum-type compatibility */
289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[9]  = Channels;                                               /*Number of Channels*/
290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRCOMM2(pComponentPrivate->dbg, "arr[9] Channels %d \n",arr[9]);
291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[10] = pComponentPrivate->ulSamplingRate;                      /*Sampling rate- Lower bits*/
292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[11] = HigherBitsSamplingRate;                                 /*Sampling rate -Higher bits */
293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[12] = (OMX_U16)(pComponentPrivate->unBitrate & 0xFFFF);       /*Bit rate 2bytes*/
294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[13] = (OMX_U16)(pComponentPrivate->unBitrate >> 16);          /*Bit rate 2bytes*/
295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[14] = (OMX_U16)pComponentPrivate->nObjectType;                                        /*bitsperSample;*/
296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate->dbg, "arr[14] Object Type %d \n",arr[14]);
297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[15] = (OMX_U16)pComponentPrivate->bitRateMode;                /*bitrateMode*/
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate->dbg, "arr[15] Bit Rate %d \n",arr[15]);
299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[16] = pComponentPrivate->File_Format;                         /*FileFormat*/
300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate->dbg, "arr[16] format type %d \n",arr[16]);
301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[17] = FramesPerOutBuf;                                        /*FramesPerOutBuf*/
302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        arr[18] = END_OF_CR_PHASE_ARGS;
303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    plcml_Init->pCrPhArgs = arr;
307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Comp: OMX_AacEncUtils.c\n",__LINE__);
309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    size_lcml = nIpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE);
31036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_MALLOC_SIZE(ptr, size_lcml,char);
311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pTemp_lcml = (LCML_AACENC_BUFHEADERTYPE *)ptr;
312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->pLcmlBufHeader[INPUT_PORT] = pTemp_lcml;
313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for (i=0; i<nIpBuf; i++)
314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp = pComponentPrivate->pInputBufferList->pBufHdr[i];
316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE);
317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nAllocLen = nIpBufSize;
318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFilledLen = nIpBufSize;
319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER;
320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER;
321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->pPlatformPrivate = pHandle->pComponentPrivate;
322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nTickCount = NOT_USED;
323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->buffer = pTemp;
324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->eDir = OMX_DirInput;
325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
32636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pIpParam,
32736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                               sizeof(AACENC_UAlgInBufParamStruct),
328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                               AACENC_UAlgInBufParamStruct);
329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate->dbg, "pTemp_lcml->pIpParam %p \n",pTemp_lcml->pIpParam);
330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->pIpParam->bLastBuffer = 0;
332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* This means, it is not a last buffer. This flag is to be modified by
333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                * the application to indicate the last buffer */
334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFlags = NORMAL_BUFFER;
335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml++;
336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Allocate memory for all output buffer headers,  This memory pointer will be sent to LCML */
339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    size_lcml = nOpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE);
340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
34136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_MALLOC_SIZE(ptr, size_lcml,char);
342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pTemp_lcml = (LCML_AACENC_BUFHEADERTYPE *)ptr;
343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->pLcmlBufHeader[OUTPUT_PORT] = pTemp_lcml;
345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for (i=0; i<nOpBuf; i++)
346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp = pComponentPrivate->pOutputBufferList->pBufHdr[i];
348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE);
349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nAllocLen = nOpBufSize;
350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFilledLen = nOpBufSize;
351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER;
352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER;
353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->nVersion = pTemp->nVersion.nVersion;
354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->pPlatformPrivate = pHandle->pComponentPrivate;
355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nTickCount = NOT_USED;
356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* This means, it is not a last buffer. This flag is to be modified by
357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    the application to indicate the last buffer */
358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->buffer = pTemp;
359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->eDir = OMX_DirOutput;
360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* SN : Each output buffer may be accompanied by an output buffer parameters structure*/
361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
36236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pOpParam,
36336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                               sizeof(AACENC_UAlgOutBufParamStruct),
364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                               AACENC_UAlgOutBufParamStruct);
365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: size of pOpParam: %d \n",__LINE__,sizeof(pTemp_lcml->pOpParam->unFrameSizes));
367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: numframes of pOpParam: %d \n\n",__LINE__,sizeof(pTemp_lcml->pOpParam->unNumFramesEncoded)) ;
368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP1(pComponentPrivate->dbg, "UTIL: pTemp_lcml->pOpParam %p \n",pTemp_lcml->pOpParam);
369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFlags = NORMAL_BUFFER;
371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /*pTemp++;*/
372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml++;
373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bPortDefsAllocated = 1;
375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bBypassDSP = 0;
376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bNoIdleOnStop= OMX_FALSE;
377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
37936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_MALLOC_SIZE_DSPALIGN(pComponentPrivate->ptAlgDynParams,
38036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                sizeof(MPEG4AACENC_UALGParams),
381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                MPEG4AACENC_UALGParams);
382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->ptAlgDynParams %p \n",pComponentPrivate->ptAlgDynParams);
384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->nLcml_nCntIp = 0;
387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->nLcml_nCntOpReceived = 0;
388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Exiting Fill_LCMLInitParams\n",__LINE__);
393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Returning = 0x%x\n",__LINE__,eError);
394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENC_StartComponentThread() This function is called by the component to create
400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* the component thread, command pipe, data pipe and LCML Pipe.
401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none
409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_StartComponentThread(OMX_HANDLETYPE pComponent)
413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent;
416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate;
417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE
418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_attr_t attr;
419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    memset(&attr, 0, sizeof(attr));
420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    attr.__inheritsched = PTHREAD_EXPLICIT_SCHED;
421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    attr.__schedparam.__sched_priority = OMX_AUDIO_DECODER_THREAD_PRIORITY;
422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering  AACENC_StartComponentThread\n", __LINE__);
426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Initialize all the variables*/
427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bIsStopping = 0;
428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bIsThreadstop = 0;
429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->lcml_nOpBuf = 0;
430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->lcml_nIpBuf = 0;         /* Initializing counter */
431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->app_nBuf = 0;                    /* Not Used */
432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->num_Op_Issued = 0;
433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->num_Sent_Ip_Buff = 0;
434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->num_Reclaimed_Op_Buff = 0;       /* Not Used */
435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bIsEOFSent = 0;
436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* create the pipe used to send buffers to the thread */
438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = pipe (pComponentPrivate->cmdDataPipe);
439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eError)
440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside  AACENC_StartComponentThread\n", __LINE__);
442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;
443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* create the pipe used to send buffers to the thread */
447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = pipe (pComponentPrivate->dataPipe);
448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eError)
449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside  AACENC_StartComponentThread\n", __LINE__);
451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;
452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* create the pipe used to send commands to the thread */
456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = pipe (pComponentPrivate->cmdPipe);
457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eError) {
458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside  AACENC_StartComponentThread\n", __LINE__);
459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;
460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* create the pipe used to send commands to the thread */
464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE
46536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    eError = pthread_create (&(pComponentPrivate->ComponentThread), &attr, AACENC_ComponentThread, pComponentPrivate);
466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
46736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    eError = pthread_create (&(pComponentPrivate->ComponentThread), NULL, AACENC_ComponentThread, pComponentPrivate);
468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eError || !pComponentPrivate->ComponentThread) {
470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Inside  AACENC_StartComponentThread\n", __LINE__);
471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;
472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP1(pComponentPrivate->dbg, "%d :: pComponent[%x] AACENC_StartComponentThread\n", __LINE__, (int)pComponent) ;
476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP1(pComponentPrivate->dbg, "%d :: pHandle[%x] AACENC_StartComponentThread\n", __LINE__, (int)pHandle) ;
477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bCompThreadStarted = 1;
478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting from AACENC_StartComponentThread\n", __LINE__);
481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError);
482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENC_FreeCompResources() This function is called by the component during
488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* de-init to close component thread, Command pipe, data pipe & LCML pipe.
489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none
497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_FreeCompResources(OMX_HANDLETYPE pComponent)
501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent;
503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate;
504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE err = OMX_ErrorNone;
507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nIpBuf = 0;
508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nOpBuf = 0;
509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, " %d :: Entering AACENC_FreeCompResources\n",__LINE__);
511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (pComponentPrivate->bPortDefsAllocated) {
512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        nIpBuf = pComponentPrivate->pPortDef[INPUT_PORT]->nBufferCountActual;
513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        nOpBuf = pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferCountActual;
514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (pComponentPrivate->bCompThreadStarted) {
517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_CLOSE_PIPE(pComponentPrivate->dataPipe[0],err);
518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_CLOSE_PIPE(pComponentPrivate->dataPipe[1],err);
519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_CLOSE_PIPE(pComponentPrivate->cmdPipe[0],err);
520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_CLOSE_PIPE(pComponentPrivate->cmdPipe[1],err);
521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_CLOSE_PIPE(pComponentPrivate->cmdDataPipe[0],err);
522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_CLOSE_PIPE(pComponentPrivate->cmdDataPipe[1],err);
523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (pComponentPrivate->bPortDefsAllocated) {
526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_MEMFREE_STRUCT(pComponentPrivate->pPortDef[INPUT_PORT]);
527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_MEMFREE_STRUCT(pComponentPrivate->pPortDef[OUTPUT_PORT]);
528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_MEMFREE_STRUCT(pComponentPrivate->aacParams[INPUT_PORT]);
529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_MEMFREE_STRUCT(pComponentPrivate->aacParams[OUTPUT_PORT]);
530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_MEMFREE_STRUCT(pComponentPrivate->pcmParam[INPUT_PORT]);
531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_MEMFREE_STRUCT(pComponentPrivate->pcmParam[OUTPUT_PORT]);
532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bPortDefsAllocated = 0;
534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP1(pComponentPrivate->dbg, "\n\n FreeCompResources: Destroying mutexes.\n\n");
537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_destroy(&pComponentPrivate->InLoaded_mutex);
538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_destroy(&pComponentPrivate->InLoaded_threshold);
539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_destroy(&pComponentPrivate->InIdle_mutex);
541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_destroy(&pComponentPrivate->InIdle_threshold);
542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_destroy(&pComponentPrivate->AlloBuf_mutex);
544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_destroy(&pComponentPrivate->AlloBuf_threshold);
545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bPortDefsAllocated = 0;
547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_DestroyEvent(&(pComponentPrivate->InLoaded_event));
548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_DestroyEvent(&(pComponentPrivate->InIdle_event));
549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_DestroyEvent(&(pComponentPrivate->AlloBuf_event));
550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting AACENC_FreeCompResources()\n",__LINE__);
554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError);
555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @AACENC_CleanupInitParams() This function is called by the component during
562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* de-init to free structues that are been allocated at intialization stage
563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none
571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_CleanupInitParams(OMX_HANDLETYPE pComponent)
574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent;
576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate;
577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_AACENC_BUFHEADERTYPE *pTemp_lcml=NULL;
578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nIpBuf = 0;
580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nOpBuf = 0;
581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 i      = 0;
582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering AACENC_CleanupInitParams()\n", __LINE__);
584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_MEMFREE_STRUCT(pComponentPrivate->strmAttr);
585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pTemp_lcml = pComponentPrivate->pLcmlBufHeader[INPUT_PORT];
587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nIpBuf = pComponentPrivate->nRuntimeInputBuffers;
588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(i=0; i<nIpBuf; i++)
589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
59036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MEMFREE_STRUCT_DSPALIGN(pTemp_lcml->pIpParam, AACENC_UAlgInBufParamStruct);
591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml++;
592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Free ouput buffers params */
595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pTemp_lcml = pComponentPrivate->pLcmlBufHeader[OUTPUT_BUFFER];
596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nOpBuf = pComponentPrivate->nRuntimeOutputBuffers;
597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for (i=0; i<nOpBuf; i++)
598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
59936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MEMFREE_STRUCT_DSPALIGN(pTemp_lcml->pOpParam, AACENC_UAlgOutBufParamStruct);
600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml++;
601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_MEMFREE_STRUCT(pComponentPrivate->pLcmlBufHeader[INPUT_PORT]);
604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_MEMFREE_STRUCT(pComponentPrivate->pLcmlBufHeader[OUTPUT_PORT]);
60536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->ptAlgDynParams, MPEG4AACENC_UALGParams);
606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(pComponentPrivate->dasfmode == 1)
607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
60836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->pParams, AACENC_AudioCodecParams);
609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting Successfully AACENC_CleanupInitParams()\n",__LINE__);
612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError);
613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENC_StopComponentThread() This function is called by the component during
619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* de-init to close component thread, Command pipe, data pipe & LCML pipe.
620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none
628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_StopComponentThread(OMX_HANDLETYPE pComponent)
632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent;
634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate;
635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE threadError = OMX_ErrorNone;
638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int pthreadError = 0;
639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, " %d :: UTIL: Entering AACENC_StopComponentThread\n",__LINE__);
641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Join the component thread*/
642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bIsThreadstop = 1;
643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    write (pComponentPrivate->cmdPipe[1], &pComponentPrivate->bIsThreadstop, sizeof(OMX_U16));
644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRSTATE1(pComponentPrivate->dbg, "UTIL: pComponentPrivate->bIsThreadstop = %ld \n",pComponentPrivate->bIsThreadstop);
645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthreadError = pthread_join (pComponentPrivate->ComponentThread,(void*)&threadError);
646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (0 != pthreadError)
647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorHardware;
649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error closing ComponentThread - pthreadError = %d\n",__LINE__,pthreadError);
650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Check for the errors*/
654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (OMX_ErrorNone != threadError && OMX_ErrorNone != eError)
655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;
657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error while closing Component Thread\n",__LINE__);
658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, " %d :: UTIL: Exiting AACENC_StopComponentThread\n",__LINE__);
663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENCHandleCommand() This function is called by the component when ever it
670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* receives the command from the application
671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponentPrivate  Component private data
673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none
679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 AACENCHandleCommand(AACENC_COMPONENT_PRIVATE *pComponentPrivate)
683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle;
686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMMANDTYPE command;
687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE commandedState;
688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 commandData;
689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE pLcmlHandle = pComponentPrivate->pLcmlHandle;
690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE rm_error = OMX_ErrorNone;
691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 arr[100]={0};
693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_S32 ret = 0;
694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 i=0;
695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    char *p  = "start";
696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    char *pArgs = "damedesuStr";
697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 pValues[4]={0};
698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 pValues1[4]={0};
699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_CALLBACKTYPE cb;
700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_DSP *pLcmlDsp = NULL;
701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_AACENC_BUFHEADERTYPE *pLcmlHdr;
702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int inputPortFlag = 0;
703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int outputPortFlag = 0;
704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: AACENC: Entering AACENCHandleCommand Function - curState = %d\n",__LINE__,pComponentPrivate->curState);
706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ret = read (pComponentPrivate->cmdPipe[0], &command, sizeof (command));
707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_TRACE1(pComponentPrivate->dbg, "%d :: AACENC: Command pipe has been read = %ld \n",__LINE__,ret);
708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (ret == -1)
709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error in Reading from the Data pipe\n", __LINE__);
711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorHardware;
712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ret = read (pComponentPrivate->cmdDataPipe[0], &commandData, sizeof (commandData));
715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_TRACE1(pComponentPrivate->dbg, "%d :: AACENC: Command data pipe has been read = %ld \n",__LINE__,ret);
716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (ret == -1)
717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error in Reading from the Data pipe\n", __LINE__);
719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorHardware;
720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    PERF_ReceivedCommand(pComponentPrivate->pPERFcomp,command,commandData,PERF_ModuleLLMM);
725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand :: Command is = %d\n",__LINE__,command);
728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (command == OMX_CommandStateSet)
729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        commandedState = (OMX_STATETYPE)commandData;
731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if ( pComponentPrivate->curState==commandedState)
732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->cbInfo.EventHandler(pHandle,
734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                   pHandle->pApplicationPrivate,
735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                   OMX_EventError,
736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                   OMX_ErrorSameState,
737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                   OMX_TI_ErrorMinor,
738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                   NULL);
739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Same State Given by Application\n",__LINE__);
740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_ERROR4(pComponentPrivate->dbg, "%d :: AACENC: State Given is: %d \n", __LINE__, commandedState);
741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            switch(commandedState)
745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                case OMX_StateIdle:
747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRDSP2(pComponentPrivate->dbg, "%d: AACENCHandleCommand: Cmd Idle \n",__LINE__);
748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRDSP2(pComponentPrivate->dbg, "AACENC: curstate = %d\n",pComponentPrivate->curState);
749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if (pComponentPrivate->curState == OMX_StateLoaded)
750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundarySetup);
754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(pComponentPrivate->dasfmode == 1)
756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            if (pComponentPrivate->dasfmode == 1)
758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            {
759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled= FALSE;
760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated= FALSE;
761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            }
762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            if (pComponentPrivate->streamID==0)
763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            {
764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Insufficient resources\n", __LINE__);
766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                eError = OMX_ErrorInsufficientResources;
767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                OMX_ERROR4(pComponentPrivate->dbg, "AACENC: State changed to OMX_StateInvalid Line %d\n",__LINE__);
768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pComponentPrivate->curState = OMX_StateInvalid;
769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pComponentPrivate->cbInfo.EventHandler(pHandle,
770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                        pHandle->pApplicationPrivate,
771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                        OMX_EventError,
772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                        eError,
773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                        OMX_TI_ErrorMajor,
774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                        "No Stream ID Available");
775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                goto EXIT;
776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            }
777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [INPUT_PORT]->bPopulated  %d \n",__LINE__,pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated);
780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [INPUT_PORT]->bEnabled    %d \n",__LINE__,pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled);
781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [OUTPUT_PORT]->bPopulated %d \n",__LINE__,pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated);
782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: OMX_StateLoaded [OUTPUT_PORT]->bEnabled   %d \n",__LINE__,pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled);
783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated &&  pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled)  {
785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            inputPortFlag = 1;
786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (!pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated && !pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled) {
789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            inputPortFlag = 1;
790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated && pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled) {
793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            outputPortFlag = 1;
794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (!pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated && !pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled) {
797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            outputPortFlag = 1;
798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRCOMM2(pComponentPrivate->dbg, "inputPortFlag = %d\n",inputPortFlag);
801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRCOMM2(pComponentPrivate->dbg, "outputPortFlag = %d\n",outputPortFlag);
802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (!(inputPortFlag && outputPortFlag))
803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->InLoaded_readytoidle = 1;
806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex);
808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pthread_cond_wait(&pComponentPrivate->InLoaded_threshold, &pComponentPrivate->InLoaded_mutex);
809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex);
810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            OMX_WaitForEvent(&(pComponentPrivate->InLoaded_event));
813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        cb.LCML_Callback = (void *) AACENCLCML_Callback;
817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pLcmlHandle = (OMX_HANDLETYPE) AACENCGetLCMLHandle(pComponentPrivate);
818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pLcmlHandle == NULL)
820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: AACENC: LCML Handle is NULL........exiting..\n",__LINE__);
82236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            eError = OMX_ErrorHardware;
82336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            pComponentPrivate->cbInfo.EventHandler (pHandle,
82436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
82536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
82636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
82736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
82836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* Got handle of dsp via phandle filling information about DSP
833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        specific things */
834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pLcmlDsp = (((LCML_DSP_INTERFACE*)pLcmlHandle)->dspCodec);
835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = AACENCFill_LCMLInitParams(pHandle, pLcmlDsp, arr);
836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(eError != OMX_ErrorNone)
837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error returned from AACENCFill_LCMLInitParams()\n",__LINE__);
83936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            pComponentPrivate->cbInfo.EventHandler (pHandle,
84036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
84136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
84236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
84336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorMajor,
84436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->pLcmlHandle = (LCML_DSP_INTERFACE *)pLcmlHandle;
848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /*filling create phase params */
849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        cb.LCML_Callback = (void *) AACENCLCML_Callback;
850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: Calling LCML_InitMMCodec...\n",__LINE__);
851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_InitMMCodecEx(((LCML_DSP_INTERFACE *)pLcmlHandle)->pCodecinterfacehandle,
853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       p,&pLcmlHandle,(void *)p,&cb, (OMX_STRING)pComponentPrivate->sDeviceString);
854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: After Calling LCML_InitMMCodec...\n",__LINE__);
855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(eError != OMX_ErrorNone)
857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error returned from LCML_Init()\n",__LINE__);
859300f5d1faaea6cefa5f5cd3cec785cb82fbe4551Priyesh Bisla                            /* send an event to client */
860300f5d1faaea6cefa5f5cd3cec785cb82fbe4551Priyesh Bisla                            /* client should unload the component if the codec is not able to load */
861300f5d1faaea6cefa5f5cd3cec785cb82fbe4551Priyesh Bisla                            eError = OMX_ErrorInvalidState;
86236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            pComponentPrivate->cbInfo.EventHandler (pHandle,
86336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
86436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
86536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
86636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
86736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef HASHINGENABLE
872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* Enable the Hashing Code */
873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_SetHashingState(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, OMX_TRUE);
874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (eError != OMX_ErrorNone)
875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "Error: Failed to set Mapping State\n");
877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* need check the resource with RM */
881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRINT2(pComponentPrivate->dbg, "%d :: AACENC: About to call RMProxy_SendCommand\n", __LINE__);
882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: Returned from RMProxy_SendCommand\n", __LINE__);
886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: RMProxy_SendCommand returned %d\n", __LINE__,rm_error);
887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(rm_error == OMX_ErrorNone)
888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            /* resource is available */
890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->curState = OMX_StateIdle;
891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySetup);
894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateIdle, 3456, NULL);
896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        else if(rm_error == OMX_ErrorInsufficientResources)
898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            /* resource is not available, need set state to OMX_StateWaitForResources */
900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Insufficient resources\n", __LINE__);
901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->curState = OMX_StateWaitForResources;
902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->cbInfo.EventHandler(pHandle,
903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pHandle->pApplicationPrivate,
904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_EventCmdComplete,
905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_CommandStateSet,
906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pComponentPrivate->curState,
907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   NULL);
908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR2(pComponentPrivate->dbg, "%d :: AACENC: OMX_ErrorInsufficientResources\n", __LINE__);
909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->curState = OMX_StateIdle;
911eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
912eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                        /* Decrement reference count with signal enabled */
913eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                        if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
914eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                            return OMX_ErrorUndefined;
915eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                        }
916eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->cbInfo.EventHandler(pHandle,
918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               pHandle->pApplicationPrivate,
919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               OMX_EventCmdComplete,
920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               OMX_CommandStateSet,
921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               pComponentPrivate->curState,
922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               NULL);
923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->curState = OMX_StateIdle;
925eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
926eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                /* Decrement reference count with signal enabled */
927eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
928eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                     return OMX_ErrorUndefined;
929eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                }
930eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler( pHandle,
932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        pHandle->pApplicationPrivate,
933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_EventCmdComplete,
934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_CommandStateSet,
935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        pComponentPrivate->curState,
936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        NULL);
937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    else if (pComponentPrivate->curState == OMX_StateExecuting)
942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySteadyState);
946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: Setting Component to OMX_StateIdle\n",__LINE__);
949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: About to Call MMCodecControlStop\n", __LINE__);
950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pComponentPrivate->bIsStopping = 1;
952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin						if (pComponentPrivate->codecStop_waitingsignal == 0){
954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin							pthread_mutex_lock(&pComponentPrivate->codecStop_mutex);
955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin						}
956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      MMCodecControlStop,(void *)pArgs);
958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	                    if (pComponentPrivate->codecStop_waitingsignal == 0){
960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	                        pthread_cond_wait(&pComponentPrivate->codecStop_threshold, &pComponentPrivate->codecStop_mutex);
961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	                        pComponentPrivate->codecStop_waitingsignal = 0;
962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	                        pthread_mutex_unlock(&pComponentPrivate->codecStop_mutex);
963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	                    }
964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(eError != OMX_ErrorNone)
966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d: Error Occurred in Codec Stop..\n",__LINE__);
96836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            pComponentPrivate->cbInfo.EventHandler (pHandle,
96936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
97036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
97136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
97236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
97336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: After MMCodecControlStop\n", __LINE__);
977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->nNumOutputBufPending=0;
978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef HASHINGENABLE
980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /*Hashing Change*/
981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLcmlHandle;
982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_FlushHashes(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle);
983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (eError != OMX_ErrorNone)
984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "Error occurred in Codec mapping flush!\n");
986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            break;
987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    else if(pComponentPrivate->curState == OMX_StatePause)
994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef HASHINGENABLE
996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /*Hashing Change*/
997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLcmlHandle;
998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_FlushHashes(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle);
999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (eError != OMX_ErrorNone)
1000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "Error occurred in Codec mapping flush!\n");
1002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            break;
1003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySteadyState);
1008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->curState = OMX_StateIdle;
1010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
1012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateIdle, 3456, NULL);
1014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1015eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
1016eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                        /* Decrement reference count with signal enabled */
1017eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                        if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
1018eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                            return OMX_ErrorUndefined;
1019eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                        }
1020eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
1021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->cbInfo.EventHandler(pHandle,
1022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               pHandle->pApplicationPrivate,
1023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               OMX_EventCmdComplete,
1024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               OMX_CommandStateSet,
1025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               pComponentPrivate->curState,
1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               NULL);
1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    else
1029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
1030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* This means, it is invalid state from application */
1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_ERROR4(pComponentPrivate->dbg, "%d :: AACENC: OMX_ErrorIncorrectStateTransition\n",__LINE__);
1032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->cbInfo.EventHandler(pHandle,
1033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               pHandle->pApplicationPrivate,
1034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               OMX_EventError,
1035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               OMX_ErrorIncorrectStateTransition,
1036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               OMX_TI_ErrorMinor,
1037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                               "Invalid State Error");
1038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    break;
1040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                case OMX_StateExecuting:
1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd Executing \n",__LINE__);
1044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if(pComponentPrivate->curState == OMX_StateIdle)
1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
1046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* Sending commands to DSP via LCML_ControlCodec third argument is not used for time being */
1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->bIsStopping = 0;
1048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(pComponentPrivate->dasfmode == 1)
1049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRDSP2(pComponentPrivate->dbg, "%d :: ---- Comp: DASF Functionality is ON ---\n",__LINE__);
1051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
105236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            OMX_MALLOC_SIZE_DSPALIGN(pComponentPrivate->pParams,
105336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                sizeof(AACENC_AudioCodecParams),
1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                AACENC_AudioCodecParams);
1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRDSP2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pParams %p \n",pComponentPrivate->pParams);
1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            if(pComponentPrivate->unNumChannels == 1)   /*MONO*/
1058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pComponentPrivate->pParams->iAudioFormat = 0x0001;
1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            else
1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pComponentPrivate->pParams->iAudioFormat = 0x0002;
1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->pParams->iStrmId = pComponentPrivate->streamID;
1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->pParams->iSamplingRate = pComponentPrivate->ulSamplingRate;
1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pValues[0] = USN_STRMCMD_SETCODECPARAMS;
1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pValues[1] = (OMX_U32)pComponentPrivate->pParams;
1067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pValues[2] = sizeof(AACENC_AudioCodecParams);
1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                         EMMCodecControlStrmCtrl,
1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                         (void *)pValues);
1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            if(eError != OMX_ErrorNone)
1072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            {
1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Occurred in Codec StreamControl..\n",__LINE__);
107436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                pComponentPrivate->cbInfo.EventHandler (pHandle,
107536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
107636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
107736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
107836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
107936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
1080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                goto EXIT;
1081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            }
1082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.size                = sizeof(MPEG4AACENC_UALGParams);
1085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.bitRate             = pComponentPrivate->unBitrate;
1086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.sampleRate          = pComponentPrivate->ulSamplingRate;
1087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->audenc_dynamicparams.numChannels         = (pComponentPrivate->unNumChannels==2)?1:0;   /* Reduced */
1088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->useTns                                   = 1;
1089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->usePns                                   = 1;
1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->outObjectType                            = pComponentPrivate->nObjectType;
1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->ptAlgDynParams->outFileFormat                            = pComponentPrivate->File_Format;
1092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: dynamicparams.bitRate %d \n", (int)pComponentPrivate->unBitrate);
1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: dynamicparams.sampleRate %d \n ",pComponentPrivate->ulSamplingRate);
1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: dynamicparams.numChannels %d \n", pComponentPrivate->unNumChannels);
1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: ptAlgDynParams->outFileFormat %d \n",pComponentPrivate->File_Format);
1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pValues1[0] = IUALG_CMD_SETSTATUS;
1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pValues1[1] = (OMX_U32)pComponentPrivate->ptAlgDynParams;
1100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pValues1[2] = sizeof(MPEG4AACENC_UALGParams);
1101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      EMMCodecControlAlgCtrl,(void *)pValues1);
1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(eError != OMX_ErrorNone)
1105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Occurred in Codec StreamControl..\n",__LINE__);
110736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            pComponentPrivate->cbInfo.EventHandler (pHandle,
110836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
110936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
111036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
111136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
111236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
1113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
1114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: Algcontrol has been sent to DSP\n",__LINE__);
1116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_ControlCodec( ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       EMMCodecControlStart,(void *)pArgs);
1119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if(eError != OMX_ErrorNone)
1120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Occurred in Codec Start..\n", __LINE__);
112236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            pComponentPrivate->cbInfo.EventHandler (pHandle,
112336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
112436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
112536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
112636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
112736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
1129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else if (pComponentPrivate->curState == OMX_StatePause)
1132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  EMMCodecControlStart, (void *)pArgs);
1135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if (eError != OMX_ErrorNone)
1136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: While Resuming the codec\n",__LINE__);
113836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                        pComponentPrivate->cbInfo.EventHandler (pHandle,
113936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
114036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
114136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
114236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
114336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        goto EXIT;
1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    for (i=0; i < pComponentPrivate->nNumInputBufPending; i++)
1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->pInputBufHdrPending[i]!= NULL)
1149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRINT2(pComponentPrivate->dbg, "i: %d \n",(int)i);
1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                AACENCGetCorresponding_LCMLHeader(pComponentPrivate, pComponentPrivate->pInputBufHdrPending[i]->pBuffer, OMX_DirInput, &pLcmlHdr);
1152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                AACENC_SetPending(pComponentPrivate,pComponentPrivate->pInputBufHdrPending[i],OMX_DirInput,__LINE__);
1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                eError = LCML_QueueBuffer(
1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            EMMCodecInputBuffer,
1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            pComponentPrivate->pInputBufHdrPending[i]->pBuffer,
1158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            pComponentPrivate->pInputBufHdrPending[i]->nAllocLen,
1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            pComponentPrivate->pInputBufHdrPending[i]->nFilledLen,
1160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            (OMX_U8 *) pLcmlHdr->pIpParam,
1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            sizeof(AACENC_UAlgInBufParamStruct),
1162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                            NULL);
116336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                               if(eError != OMX_ErrorNone){
116436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                   OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__);
116536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                   pComponentPrivate->cbInfo.EventHandler (pHandle,
116636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
116736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
116836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
116936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
117036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
117136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                   goto EXIT;
117236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                               }
1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->nNumInputBufPending =0;
1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    for (i=0; i < pComponentPrivate->nNumOutputBufPending; i++)
1178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            if (pComponentPrivate->pOutputBufHdrPending[i]!= NULL)
1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            {
1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                AACENCGetCorresponding_LCMLHeader(pComponentPrivate, pComponentPrivate->pOutputBufHdrPending[i]->pBuffer, OMX_DirOutput, &pLcmlHdr);
1184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                AACENC_SetPending(pComponentPrivate,pComponentPrivate->pOutputBufHdrPending[i],OMX_DirOutput,__LINE__);
1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                eError = LCML_QueueBuffer(
118836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
118936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             EMMCodecOuputBuffer,
119036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             pComponentPrivate->pOutputBufHdrPending[i]->pBuffer,
119136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             pComponentPrivate->pOutputBufHdrPending[i]->nAllocLen,
119236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             0,
119336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             (OMX_U8 *) pLcmlHdr->pOpParam,
119436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             sizeof(AACENC_UAlgOutBufParamStruct),
119536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                             NULL);
119636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                if(eError != OMX_ErrorNone){
119736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                   OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__);
119836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                   pComponentPrivate->cbInfo.EventHandler (pHandle,
119936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
120036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
120136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
120236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
120336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
120436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                   goto EXIT;
120536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                               }
1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            }
1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->nNumOutputBufPending = 0;
1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else
1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->cbInfo.EventHandler(pHandle,
1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                           pHandle->pApplicationPrivate,
1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                           OMX_EventError,
1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                           OMX_ErrorIncorrectStateTransition,
1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                           OMX_TI_ErrorMinor,
1219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                           "Invalid State Error");
1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Invalid State Given by Application\n",__LINE__);
1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto EXIT;
1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateExecuting, 3456, NULL);
1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1229eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                pComponentPrivate->curState = OMX_StateExecuting;
123036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong
1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundarySteadyState);
1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1235eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                /* Decrement reference count with signal enabled */
1236eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
1237eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                     return OMX_ErrorUndefined;
1238eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                }
1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /*Send state change notificaiton to Application */
1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler(pHandle,
1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pHandle->pApplicationPrivate,
1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventCmdComplete,
1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_CommandStateSet,
1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate->curState,
1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                break;
1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                case OMX_StateLoaded:
1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: AACENC: AACENCHandleCommand: Cmd Loaded - curState = %d\n",__LINE__,pComponentPrivate->curState);
1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: AACENC: pComponentPrivate->pInputBufferList->numBuffers = %d \n",__LINE__,pComponentPrivate->pInputBufferList->numBuffers);
1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: AACENC: pComponentPrivate->pOutputBufferList->numBuffers = %d \n",__LINE__,pComponentPrivate->pOutputBufferList->numBuffers);
1254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->curState == OMX_StateWaitForResources)
1255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENC: AACENCHandleCommand: Cmd Loaded\n",__LINE__);
1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundaryCleanup);
1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->curState = OMX_StateLoaded;
1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundaryCleanup);
1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1267eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                            /* Decrement reference count with signal enabled */
1268eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                            if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
1269eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                                return OMX_ErrorUndefined;
1270eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                            }
1271eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->cbInfo.EventHandler(pHandle,
1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pHandle->pApplicationPrivate,
1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_EventCmdComplete,
1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_CommandStateSet,
1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pComponentPrivate->curState,
1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   NULL);
1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->bLoadedCommandPending = OMX_FALSE;
1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            break;
1280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: AACENC: Inside OMX_StateLoaded State: \n",__LINE__);
1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->curState != OMX_StateIdle &&
1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->curState != OMX_StateWaitForResources)
1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->cbInfo.EventHandler(pHandle,
1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pHandle->pApplicationPrivate,
1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_EventError,
1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_ErrorIncorrectStateTransition,
1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_TI_ErrorMinor,
1290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   "Incorrect State Transition");
1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Invalid State Given by Application\n",__LINE__);
1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryStart | PERF_BoundaryCleanup);
1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRBUFFER2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pInputBufferList->numBuffers = %d \n",pComponentPrivate->pInputBufferList->numBuffers);
1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRBUFFER2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pOutputBufferList->numBuffers = %d \n",pComponentPrivate->pOutputBufferList->numBuffers);
1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->pInputBufferList->numBuffers ||
1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->pOutputBufferList->numBuffers)
1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->InIdle_goingtoloaded = 1;
1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pthread_mutex_lock(&pComponentPrivate->InIdle_mutex);
1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pthread_cond_wait(&pComponentPrivate->InIdle_threshold, &pComponentPrivate->InIdle_mutex);
1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pthread_mutex_unlock(&pComponentPrivate->InIdle_mutex);
1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            OMX_WaitForEvent(&(pComponentPrivate->InIdle_event));
1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* Now Deinitialize the component No error should be returned from this function. It should clean the system as much as possible */
1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: Before CodecControlDestroy \n",__LINE__);
1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                     EMMCodecControlDestroy, (void *)pArgs);
1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        PERF_SendingCommand(pComponentPrivate->pPERF, -1, 0, PERF_ModuleComponent);
1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: After CodecControlDestroy \n",__LINE__);
1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (eError != OMX_ErrorNone)
1326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: LCML_ControlCodec EMMCodecControlDestroy: no.  %x\n",__LINE__, eError);
1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
1329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd Loaded\n",__LINE__);
1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /*Closing LCML Lib*/
1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* This flag is used in Deinit()  function to close LCML. */
1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->bCodecDestroyed = OMX_TRUE;
1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->ptrLibLCML != NULL)
1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRDSP1(pComponentPrivate->dbg, "AAC: About to Close LCML %p \n",pComponentPrivate->ptrLibLCML);
1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRDSP1(pComponentPrivate->dbg, "AAC: Closed LCML \n");
1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            dlclose( pComponentPrivate->ptrLibLCML  );
1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->ptrLibLCML = NULL;
1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRDSP1(pComponentPrivate->dbg, "AAC: Closed LCML \n");
1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENC: After CodecControlDestroy \n",__LINE__);
1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (eError != OMX_ErrorNone)
1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: LCML_ControlCodec EMMCodecControlDestroy: no.  %x\n",__LINE__, eError);
1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
1350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd Loaded\n",__LINE__);
1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = EXIT_COMPONENT_THRD;
1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        /* Send StateChangeNotification to application */
1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        break;
1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                case OMX_StatePause:
1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->curState != OMX_StateExecuting &&
1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->curState != OMX_StateIdle)
1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->cbInfo.EventHandler(pHandle,
1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pHandle->pApplicationPrivate,
1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_EventError,
1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_ErrorIncorrectStateTransition,
1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_TI_ErrorMinor,
1366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   "Incorrect State Transition");
1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: Invalid State Given by Application\n",__LINE__);
1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: about to call LCML_ControlCodec for PAUSE \n",__LINE__);
1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, EMMCodecControlPause, (void *)pArgs);
1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (eError != OMX_ErrorNone)
1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error: in Pausing the codec\n",__LINE__);
1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundarySteadyState);
1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        break;
1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                case OMX_StateWaitForResources:
1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (pComponentPrivate->curState == OMX_StateLoaded)
1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            rm_error = RMProxy_NewSendCommand(pHandle, RMProxy_StateSet, OMX_AAC_Encoder_COMPONENT, OMX_StateWaitForResources, 3456, NULL);
1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->curState = OMX_StateWaitForResources;
1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->cbInfo.EventHandler(pHandle,
1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pHandle->pApplicationPrivate,
1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_EventCmdComplete,
1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_CommandStateSet,
1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pComponentPrivate->curState,
1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   NULL);
1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        else
1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->cbInfo.EventHandler(pHandle,
1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   pHandle->pApplicationPrivate,
1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_EventError,
1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_ErrorIncorrectStateTransition,
1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   OMX_TI_ErrorMinor,
1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   "Incorrect State Transition");
1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        break;
1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                case OMX_StateInvalid:
1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                         OMX_PRSTATE2(pComponentPrivate->dbg, "%d: HandleCommand: Cmd OMX_StateInvalid:\n",__LINE__);
1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         if (pComponentPrivate->curState != OMX_StateWaitForResources &&
1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                             pComponentPrivate->curState != OMX_StateInvalid &&
1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                             pComponentPrivate->curState != OMX_StateLoaded)
1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         {
1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                             eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                         EMMCodecControlDestroy, (void *)pArgs);
1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         }
1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         pComponentPrivate->curState = OMX_StateInvalid;
1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         pComponentPrivate->cbInfo.EventHandler( pHandle,
1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                 pHandle->pApplicationPrivate,
1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                 OMX_EventError,
1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                 OMX_ErrorInvalidState,
1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                 OMX_TI_ErrorSevere,
1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                 NULL);
1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         AACENC_CleanupInitParams(pHandle);
1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         break;
1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                case OMX_StateMax:
1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                         OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENCHandleCommand: Cmd OMX_StateMax::\n",__LINE__);
1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         break;
1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            } /* End of Switch */
1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (command == OMX_CommandMarkBuffer)
1441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate->dbg, "AACENC: command OMX_CommandMarkBuffer received %d\n",__LINE__);
1443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(!pComponentPrivate->pMarkBuf)
1444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP1(pComponentPrivate->dbg, "AACENC: command OMX_CommandMarkBuffer received %d\n",__LINE__);
1446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            /* TODO Need to handle multiple marks */
1447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->pMarkBuf = (OMX_MARKTYPE *)(commandData);
1448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (command == OMX_CommandPortDisable)
1451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (!pComponentPrivate->bDisableCommandPending)
1453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(commandData == 0x0 || commandData == -1)
1455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /* disable port */
1457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled = OMX_FALSE;
1458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(commandData == 0x1 || commandData == -1)
1460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                char *pArgs = "damedesuStr";
1462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled = OMX_FALSE;
1463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pComponentPrivate->curState == OMX_StateExecuting)
1465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
1466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->bNoIdleOnStop = OMX_TRUE;
1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRINT2(pComponentPrivate->dbg, "AACENC: About to stop socket node line %d\n",__LINE__);
1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pComponentPrivate->bIsStopping = 1;
1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin					if (pComponentPrivate->codecStop_waitingsignal == 0){
1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin						pthread_mutex_lock(&pComponentPrivate->codecStop_mutex);
1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin					}
1473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  MMCodecControlStop,(void *)pArgs);
1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (pComponentPrivate->codecStop_waitingsignal == 0){
1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pthread_cond_wait(&pComponentPrivate->codecStop_threshold, &pComponentPrivate->codecStop_mutex);
1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pComponentPrivate->codecStop_waitingsignal = 0;
1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pthread_mutex_unlock(&pComponentPrivate->codecStop_mutex);
1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(commandData == 0x0)
1486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(!pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated)
1488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /* return cmdcomplete event if input unpopulated */
1490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler( pHandle,
1491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        pHandle->pApplicationPrivate,
1492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_EventCmdComplete,
1493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_CommandPortDisable,INPUT_PORT, NULL);
1494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandPending = 0;
1495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
1497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandPending = 1;
1499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandParam = commandData;
1500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(commandData == 0x1)
1504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (!pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated)
1506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /* return cmdcomplete event if output unpopulated */
1508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler( pHandle,
1509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        pHandle->pApplicationPrivate,
1510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_EventCmdComplete,
1511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_CommandPortDisable,OUTPUT_PORT, NULL);
1512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandPending = 0;
1513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
1515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandPending = 1;
1517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandParam = commandData;
1518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(commandData == -1)
1522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (!pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated &&
1524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                !pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated)
1525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /* return cmdcomplete event if input & output unpopulated */
1528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler( pHandle,
1529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        pHandle->pApplicationPrivate,
1530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_EventCmdComplete,
1531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_CommandPortDisable,INPUT_PORT, NULL);
1532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler( pHandle,
1534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        pHandle->pApplicationPrivate,
1535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_EventCmdComplete,
1536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_CommandPortDisable,OUTPUT_PORT, NULL);
1537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandPending = 0;
1538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
1540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandPending = 1;
1542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bDisableCommandParam = commandData;
1543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (command == OMX_CommandPortEnable)
1548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (!pComponentPrivate->bEnableCommandPending)
1550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(commandData == 0x0 || commandData == -1)
1552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /* enable in port */
1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRCOMM2(pComponentPrivate->dbg, "AACENC: setting input port to enabled\n");
1555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled = OMX_TRUE;
1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRCOMM2(pComponentPrivate->dbg, "WAKE UP!! HandleCommand: In utils setting output port to enabled. \n");
1557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if(pComponentPrivate->AlloBuf_waitingsignal)
1558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
1559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pComponentPrivate->AlloBuf_waitingsignal = 0;
1560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRCOMM2(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled = %d\n",pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled);
1562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(commandData == 0x1 || commandData == -1)
1565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /* enable out port */
1567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if(pComponentPrivate->AlloBuf_waitingsignal)
1568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
1569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pComponentPrivate->AlloBuf_waitingsignal = 0;
1570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
1571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex);
1572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pthread_cond_signal(&pComponentPrivate->AlloBuf_threshold);
1573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex);
1574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     OMX_SignalEvent(&(pComponentPrivate->AlloBuf_event));
1576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pComponentPrivate->curState == OMX_StateExecuting)
1579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
1580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    char *pArgs = "damedesuStr";
1581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->bDspStoppedWhileExecuting = OMX_FALSE;
1582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRCOMM1(pComponentPrivate->dbg, "AACENC: About to start socket node line %d\n",__LINE__);
1584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    eError = LCML_ControlCodec( ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,
1585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                   EMMCodecControlStart,(void *)pArgs);
1586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRCOMM1(pComponentPrivate->dbg, "AACENC: setting output port to enabled\n");
1588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled = OMX_TRUE;
1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRCOMM1(pComponentPrivate->dbg, "AACENC: pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled = %d\n",pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled);
1590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(commandData == 0x0)
1594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pComponentPrivate->curState == OMX_StateLoaded || pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated)
1596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler(pHandle,
1598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pHandle->pApplicationPrivate,
1599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventCmdComplete,
1600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_CommandPortEnable,
1601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       INPUT_PORT,
1602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
1603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bEnableCommandPending = 0;
1604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
1606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bEnableCommandPending = 1;
1608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->nEnableCommandParam = commandData;
1609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else if(commandData == 0x1)
1613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pComponentPrivate->curState == OMX_StateLoaded || pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated)
1615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler( pHandle,
1617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        pHandle->pApplicationPrivate,
1618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_EventCmdComplete,
1619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OMX_CommandPortEnable,
1620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        OUTPUT_PORT,
1621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                        NULL);
1622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bEnableCommandPending = 0;
1623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
1625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bEnableCommandPending = 1;
1627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->nEnableCommandParam = commandData;
1628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else if(commandData == -1)
1632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pComponentPrivate->curState == OMX_StateLoaded ||
1634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                (pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated
1635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                && pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated))
1636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler(pHandle,
1638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pHandle->pApplicationPrivate,
1639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventCmdComplete,
1640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_CommandPortEnable,
1641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       INPUT_PORT,
1642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
1643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler(pHandle,
1644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pHandle->pApplicationPrivate,
1645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventCmdComplete,
1646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_CommandPortEnable,
1647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OUTPUT_PORT,
1648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
1649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bEnableCommandPending = 0;
1650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                AACENCFill_LCMLInitParamsEx(pHandle);
1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRDSP1(pComponentPrivate->dbg, "\nAACENC: calling fillexparams \n");
1652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
1654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bEnableCommandPending = 1;
1656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->nEnableCommandParam = commandData;
1657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
1661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex);
1662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pthread_cond_signal(&pComponentPrivate->AlloBuf_threshold);
1663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex);
1664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     OMX_SignalEvent(&(pComponentPrivate->AlloBuf_event));
1666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (command == OMX_CommandFlush)
1672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#if 0
1675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /*-------------- MANUAL FLUSH ----------------------------*/
1676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(commandData == 0x0 || commandData == -1)
1678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(pComponentPrivate->nUnhandledEmptyThisBuffers ==0) {
1680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                 OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: UTIL: Flushing input port \n",__LINE__);
1682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pComponentPrivate->nOutStandingEmptyDones = 0;
1683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 for (i=0; i < MAX_NUM_OF_BUFS; i++)
1684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 {
1685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->pInputBufHdrPending[i] = NULL;
1686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 }
1687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pComponentPrivate->nNumInputBufPending=0;
1688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++)
1689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 {
1690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->cbInfo.EmptyBufferDone (
1692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pHandle,
1693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pHandle->pApplicationPrivate,
1694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pInputBufferList->pBufHdr[i]
1695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   );
1696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 }
1697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pComponentPrivate->cbInfo.EventHandler(pHandle,
1698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                          pHandle->pApplicationPrivate,
1699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                          OMX_EventCmdComplete,
1700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                          OMX_CommandFlush,INPUT_PORT, NULL);
1701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else{
1703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bFlushInputPortCommandPending = OMX_TRUE;
1704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(commandData == 0x1 || commandData == -1)
1708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pComponentPrivate->nUnhandledFillThisBuffers == 0)  {
1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                 OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: UTIL: Flushing output port \n",__LINE__);
1711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pComponentPrivate->nOutStandingFillDones = 0;
1712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 for (i=0; i < MAX_NUM_OF_BUFS; i++)
1713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 {
1714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->pOutputBufHdrPending[i] = NULL;
1715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 }
1716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pComponentPrivate->nNumOutputBufPending=0;
1717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++)
1718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 {
1719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->cbInfo.FillBufferDone (
1721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pHandle,
1722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pHandle->pApplicationPrivate,
1723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pOutputBufferList->pBufHdr[i]
1724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   );
1725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 }
1726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pComponentPrivate->cbInfo.EventHandler(
1727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                 pHandle, pHandle->pApplicationPrivate,
1728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                 OMX_EventCmdComplete, OMX_CommandFlush,OUTPUT_PORT, NULL);
1729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else{
1731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->bFlushOutputPortCommandPending = OMX_TRUE;
1732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_U32 aParam[3] = {0};
1737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate->nNumInputBufPending)
1738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate->dbg, "%d :: AACENC: Inside OMX_CommandFlush Command \n",__LINE__);
1741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(commandData == 0x0 || commandData == -1)
1742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pComponentPrivate->nUnhandledEmptyThisBuffers == 0)  {
1744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->bFlushInputPortCommandPending = OMX_FALSE;
1745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->nOutStandingFillDones = 0;
1746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    aParam[0] = USN_STRMCMD_FLUSH;
1747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    aParam[1] = 0x0;
1748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    aParam[2] = 0x0;
1749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand::Flushing input port \n",__LINE__);
1750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    eError=LCML_ControlCodec(( (LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,EMMCodecControlStrmCtrl,(void*)aParam);
1751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if (eError != OMX_ErrorNone)
1752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
1753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         goto EXIT;
1754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else {
1757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->bFlushInputPortCommandPending = OMX_TRUE;
1758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
1762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin             OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: UTIL: Flushing input port \n",__LINE__);
1764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             pComponentPrivate->nOutStandingEmptyDones = 0;
1765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             for (i=0; i < MAX_NUM_OF_BUFS; i++)
1766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             {
1767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pInputBufHdrPending[i] = NULL;
1768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             }
1769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             pComponentPrivate->nNumInputBufPending=0;
1770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++)
1771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             {
1772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EmptyBufferDone (
1774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               pComponentPrivate->pHandle,
1775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               pComponentPrivate->pHandle->pApplicationPrivate,
1776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               pComponentPrivate->pInputBufferList->pBufHdr[i]
1777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               );
1778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             }
1779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             pComponentPrivate->cbInfo.EventHandler(pHandle,
1780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                    pHandle->pApplicationPrivate,
1781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                    OMX_EventCmdComplete,
1782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                    OMX_CommandFlush,INPUT_PORT, NULL);
1783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate->nNumOutputBufPending)
1789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(commandData == 0x1 || commandData == -1)
1791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pComponentPrivate->nUnhandledFillThisBuffers == 0)  {
1793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->bFlushOutputPortCommandPending = OMX_FALSE;
1794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->nOutStandingEmptyDones=0;
1795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand::Flushing ouput queue \n",__LINE__);
1796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    aParam[0] = USN_STRMCMD_FLUSH;
1797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    aParam[1] = 0x1;
1798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    aParam[2] = 0x0;
1799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: AACENCHandleCommand::Flushing ouput port  \n",__LINE__);
1801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle,EMMCodecControlStrmCtrl, (void*)aParam);
1802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if (eError != OMX_ErrorNone)
1803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
1804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        goto EXIT;
1805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else {
1808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->bFlushOutputPortCommandPending = OMX_TRUE;
1809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
1813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: UTIL: Flushing output port \n",__LINE__);
1815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->nOutStandingFillDones = 0;
1816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            for (i=0; i < MAX_NUM_OF_BUFS; i++)
1817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pOutputBufHdrPending[i] = NULL;
1819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->nNumOutputBufPending=0;
1821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++)
1822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pComponentPrivate->cbInfo.FillBufferDone (
1825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  pComponentPrivate->pHandle,
1826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  pComponentPrivate->pHandle->pApplicationPrivate,
1827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  pComponentPrivate->pOutputBufferList->pBufHdr[i]
1828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  );
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);
184236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    /* report the error to the client via event */
184336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    if(eError != OMX_ErrorNone && eError != EXIT_COMPONENT_THRD){
184436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__);
184536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        pComponentPrivate->cbInfo.EventHandler (pHandle,
184636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pHandle->pApplicationPrivate,
184736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
184836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
184936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
185036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
185136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong
185236733d62c0d4c565da10b34978e587d0fda0f1adJames 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--;
1978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
1981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
1982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                /* Save received buffers */
1983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pInputBufHdrPending[pComponentPrivate->nNumInputBufPending++] = pBufHeader;
1984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
1988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->bBypassDSP = 1;          /* flag :   empty buffer */
1990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] setting pComponentPrivate->bBypassDSP = 1 \n", __LINE__);
1991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] Calling FillBufferDone\n", __LINE__);
1992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
1994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            PERF_SendingFrame(pComponentPrivate->pPERFcomp,
1995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PREF(pComponentPrivate->pOutputBufferList->pBufHdr[0],pBuffer),
1996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PREF(pComponentPrivate->pOutputBufferList->pBufHdr[0],nFilledLen),
1997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_ModuleHLMM);
1998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] (filled <0 or EOS )Calling FillBufferDone \n",__LINE__);
2001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->cbInfo.FillBufferDone(pComponentPrivate->pHandle,
2002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                       pComponentPrivate->pHandle->pApplicationPrivate,
2003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                       pComponentPrivate->pOutputBufferList->pBufHdr[0]
2004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                       );
2005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->nOutStandingFillDones--;
2006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->FillbufferdoneCount++;
2007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->FillbufferdoneCount = %ld \n",__LINE__,pComponentPrivate->FillbufferdoneCount);
2008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->FillthisbufferCount = %ld \n",__LINE__,pComponentPrivate->FillthisbufferCount);
2009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            PERF_SendingFrame(pComponentPrivate->pPERFcomp,
2013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PREF(pComponentPrivate->pInputBufferList->pBufHdr[0], pBuffer),
2014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            0,
2015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_ModuleHLMM);
2016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT1(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] (filled <0 or EOS )Calling EmptyBufferDone \n",__LINE__);
2019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->cbInfo.EmptyBufferDone ( pComponentPrivate->pHandle,
2020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                       pComponentPrivate->pHandle->pApplicationPrivate,
2021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                       pComponentPrivate->pInputBufferList->pBufHdr[0]
2022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                       );
2023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->nOutStandingEmptyDones--;
2024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->EmptybufferdoneCount++;
2025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->EmptybufferdoneCount = %ld \n",__LINE__,pComponentPrivate->EmptybufferdoneCount);
2026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->EmptythisbufferCount = %ld \n",__LINE__,pComponentPrivate->EmptythisbufferCount);
2027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(pBufHeader->nFlags & OMX_BUFFERFLAG_EOS)
2030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: Component Detected EOS\n",__LINE__);
2032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(pComponentPrivate->dasfmode == 0)
2033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags |= OMX_BUFFERFLAG_EOS;
2035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags = %d \n",__LINE__,(int)pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags);
2036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate->pHandle->pApplicationPrivate,
2038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventBufferFlag,
2039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate->pOutputBufferList->pBufHdr[0]->nOutputPortIndex,
2040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags, NULL);
2041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pBufHeader->nFlags = 0;
2044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState);
2047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(pBufHeader->pMarkData)
2048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Detected pBufHeader->pMarkData\n",__LINE__);
2050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            /* copy mark to output buffer header */
2051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRSTATE2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState);
2052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->pOutputBufferList->pBufHdr[0]->pMarkData = pBufHeader->pMarkData;
2053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRSTATE2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState);
2054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->pOutputBufferList->pBufHdr[0]->hMarkTargetComponent = pBufHeader->hMarkTargetComponent;
2055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRSTATE2(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState);
2056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            /* trigger event handler if we are supposed to */
2057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(pBufHeader->hMarkTargetComponent == pComponentPrivate->pHandle && pBufHeader->pMarkData)
2058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRSTATE1(pComponentPrivate->dbg, "UTIL: pComponentPrivate->curState = %d\n",pComponentPrivate->curState);
2060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
2061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate->pHandle->pApplicationPrivate,
2062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventMark,
2063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       0,
2064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       0,
2065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pBufHeader->pMarkData);
2066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate->bFlushInputPortCommandPending) {
2070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            OMX_SendCommand(pComponentPrivate->pHandle,OMX_CommandFlush,0,NULL);
2071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (eDir == OMX_DirOutput)
2077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* Make sure that output buffer is issued to output stream only when
2079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        * there is an outstanding input buffer already issued on input stream
2080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        */
2081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: Buffer Dir = output\n",__LINE__);
2082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->bIsStopping = %ld\n",__LINE__, pComponentPrivate->bIsStopping);
2083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->bBypassDSP  = %ld\n",__LINE__, pComponentPrivate->bBypassDSP);
2084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRSTATE1(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState);
2085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->nUnhandledFillThisBuffers--;
2087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID
2089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate->bFirstOutputBuffer){
2090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        // if this is the first output buffer, fill the config data, then return the buffer (skip DSP)
2091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            AACENCWriteConfigHeader(pComponentPrivate, pBufHeader);
2092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: AACENCWriteConfigHeader = %p\n",__LINE__, pBufHeader->pBuffer);
2093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->cbInfo.FillBufferDone (
2094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pHandle,
2095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pComponentPrivate->pHandle->pApplicationPrivate,
2096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   pBufHeader
2097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   );
2098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate->bFirstOutputBuffer = 0;
2099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
2100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (!(pComponentPrivate->bIsStopping))
2104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pComponentPrivate->bBypassDSP == 0)
2106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Sending Output buffer header to Codec= %p to LCML\n",__LINE__,pBufHeader);
2108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: UTIL: Sending OUTPUT BUFFER to Codec = %p\n",__LINE__,pBufHeader->pBuffer);
2109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                PERF_SendingFrame(pComponentPrivate->pPERFcomp,
2111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                 PREF(pBufHeader,pBuffer),
2112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  0,
2113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  PERF_ModuleCommonLayer);
2114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate = %p\n",__LINE__,pComponentPrivate);
2117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pBufHeader = %p\n",__LINE__,pBufHeader);
2118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pBufHeader->pBuffer = %p\n",__LINE__,pBufHeader->pBuffer);
2119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                eError = AACENCGetCorresponding_LCMLHeader(pComponentPrivate, pBufHeader->pBuffer, OMX_DirOutput, &pLcmlHdr);
2120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState);
2121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pComponentPrivate->bBypassDSP == 0)
2123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
2124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState);
2125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_PRINT2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->bDspStoppedWhileExecuting = %ld\n",__LINE__,pComponentPrivate->bDspStoppedWhileExecuting);
2126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if (pComponentPrivate->curState == OMX_StateExecuting)
2128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
2129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (!AACENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirOutput))
2130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
2131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            AACENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirOutput,__LINE__);
2132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->LastOutputBufferHdrQueued = pBufHeader;
2133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pLcmlHdr->pOpParam->unNumFramesEncoded=0; /* Resetting the value  for each time*/
2134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            eError = LCML_QueueBuffer(pLcmlHandle->pCodecinterfacehandle,
2135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      EMMCodecOuputBuffer,
2136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      (OMX_U8 *)pBufHeader->pBuffer,
2137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      pBufHeader->nAllocLen,
2138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      pBufHeader->nFilledLen,
2139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      (OMX_U8 *)pLcmlHdr->pOpParam,
2140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      sizeof(AACENC_UAlgOutBufParamStruct),
2141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                      NULL);
2142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Queuing Ouput buffer buffer \n",__LINE__);
2143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            if (eError != OMX_ErrorNone )
2144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            {
2145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: Issuing DSP OP: Error Occurred\n",__LINE__);
2146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                eError = OMX_ErrorHardware;
2147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                goto EXIT;
2148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            }
2149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate->lcml_nOpBuf++;
2150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: tlcml_nOpBuf count : %d\n",__LINE__, (int)pComponentPrivate->lcml_nOpBuf);
2151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
2152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                  }
2153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                  else if (pComponentPrivate->curState == OMX_StatePause)
2154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                  {
2155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                     OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pComponentPrivate->nNumOutputBufPending++ = %d \n",__LINE__,(int)pComponentPrivate->nNumOutputBufPending++);
2156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                     OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: pBufHeader = %p \n",__LINE__, pBufHeader);
2157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     pComponentPrivate->pOutputBufHdrPending[pComponentPrivate->nNumOutputBufPending++] = pBufHeader;
2158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                  }
2159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
2160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
2162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRDSP2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp] OMX_DirOutput - bBypassDSP = %d \n", __LINE__, (int)pComponentPrivate->bBypassDSP);
2164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRSTATE2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate->curState);
2165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRDSP2(pComponentPrivate->dbg, "%d :: [HandleData_FromApp]pComponentPrivate->bDspStoppedWhileExecuting = %ld\n",__LINE__,pComponentPrivate->bDspStoppedWhileExecuting);
2166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pComponentPrivate->curState == OMX_StateExecuting)
2168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
2169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if (!AACENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirOutput))
2170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
2171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        AACENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirOutput,__LINE__);
2172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->LastOutputBufferHdrQueued = pBufHeader;
217336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong			if (pLcmlHdr != NULL) {
217436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong			    pLcmlHdr->pOpParam->unNumFramesEncoded = 0; /* Resetting the value  for each time*/
217536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong			}
2176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        eError = LCML_QueueBuffer(pLcmlHandle->pCodecinterfacehandle,
2177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  EMMCodecOuputBuffer,
2178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  (OMX_U8 *)pBufHeader->pBuffer,
2179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  pBufHeader->nAllocLen,
2180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  pBufHeader->nFilledLen,
2181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  (OMX_U8 *)pLcmlHdr->pOpParam,
2182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  sizeof(AACENC_UAlgOutBufParamStruct),
2183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                  NULL);
2184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        if (eError != OMX_ErrorNone )
2185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        {
2186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: Issuing DSP OP: Error Occurred\n",__LINE__);
2187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            eError = OMX_ErrorHardware;
2188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            goto EXIT;
2189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        }
2190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        pComponentPrivate->lcml_nOpBuf++;
2191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_PRDSP2(pComponentPrivate->dbg, "%d :: UTIL: lcml_nOpBuf count : %d\n",__LINE__, (int)pComponentPrivate->lcml_nOpBuf);
2192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
2193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
2194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else
2195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
2196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pComponentPrivate->pOutputBufHdrPending[pComponentPrivate->nNumOutputBufPending++] = pBufHeader;
2197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
2198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate->bFlushOutputPortCommandPending) {
2202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            OMX_SendCommand( pComponentPrivate->pHandle,
2203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  OMX_CommandFlush,
2204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  1,NULL);
2205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else
2208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: BufferHeader  = %p, Buffer  = %p Unknown\n",__LINE__,pBufHeader, pBufHeader->pBuffer);
2210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorBadParameter;
2211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL:Exiting from  HandleDataBuf_FromApp ..........>>>>>\n",__LINE__);
221436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    /* report the error to the client via event */
221536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    if(eError != OMX_ErrorNone){
221636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_ERROR4(pComponentPrivate->dbg, "%d:: Error: LCML QUEUE BUFFER\n",__LINE__);
221736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        pComponentPrivate->cbInfo.EventHandler (pComponentPrivate->pHandle,
221836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pComponentPrivate->pHandle->pApplicationPrivate,
221936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
222036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
222136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
222236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
222336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong
222436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    }
2225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
2226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/
2229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
2230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENCGetBufferDirection () This function is used by the component thread to
2231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* request a buffer from the application.  Since it was called from 2 places,
2232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* it made sense to turn this into a small function.
2233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pData pointer to AAC Decoder Context Structure
2235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pCur pointer to the buffer to be requested to be filled
2236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @retval none
2238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin**/
2239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/
2240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCGetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, OMX_DIRTYPE *eDir)
2242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
2244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate = pBufHeader->pPlatformPrivate;
2245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nBuf=0;
2246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pBuf = NULL;
2247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 i=0;
2248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_S16 flag = 1;
2249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Entering AACENCGetBufferDirection Function\n",__LINE__);
2251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Search this buffer in input buffers list */
2252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBuf = pComponentPrivate->pInputBufferList->numBuffers;
2254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(i=0; i<nBuf; i++)
2255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pBuf = pComponentPrivate->pInputBufferList->pBufHdr[i];
2257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(pBufHeader == pBuf)
2258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *eDir = OMX_DirInput;
226015c9596da616836bbf2db19d2aa10f30bb6587a0James Dong            OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Buffer %p is INPUT BUFFER\n",__LINE__, pBufHeader);
2261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            flag = 0;
2262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
2263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Search this buffer in input buffers list */
2267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBuf = pComponentPrivate->pOutputBufferList->numBuffers;
2268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(i=0; i<nBuf; i++)
2270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pBuf = pComponentPrivate->pOutputBufferList->pBufHdr[i];
2272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(pBufHeader == pBuf)
2273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *eDir = OMX_DirOutput;
227515c9596da616836bbf2db19d2aa10f30bb6587a0James Dong            OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Buffer %p is OUTPUT BUFFER\n",__LINE__, pBufHeader);
2276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            flag = 0;
2277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
2278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (flag == 1)
2282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "%d :: UTIL: Buffer %p is Not Found in the List\n",__LINE__,pBufHeader);
2284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorUndefined;
2285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
2286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Exiting AACENCGetBufferDirection Function\n",__LINE__);
2289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
2290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/
2293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
2294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *  AACENCLCML_Callback() function will be called LCML component to write the msg
2295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *
2296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  * @param event                 Event which gives to details about USN status
2297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  * @param void * args        //    args [0] //bufType;
2298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                              //    args [1] //arm address fpr buffer
2299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                              //    args [2] //BufferSize;
2300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                              //    args [3]  //arm address for param
2301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                              //    args [4] //ParamSize;
2302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                              //    args [6] //LCML Handle
2303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  * @retval OMX_NoError              Success, ready to roll
2304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *         OMX_Error_BadParameter   The input parameter pointer is null
2305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/
2306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/
2307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCLCML_Callback(TUsnCodecEvent event,void * args [10])
2309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*   OMX_S16 ret = 0; */
2311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pHandle=NULL;
2312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
2313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 *pBuffer = args[1];
2314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_AACENC_BUFHEADERTYPE *pLcmlHdr = NULL;;
2315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_DSP_INTERFACE *pLcmlHandle = NULL;
2316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate_CC = NULL;
2317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_S16 i = 0;
2318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int j =0, k=0 ;
2319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
2321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE rm_error = OMX_ErrorNone;
2322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate_CC = (AACENC_COMPONENT_PRIVATE*)((LCML_DSP_INTERFACE *)args[6])->pComponentPrivate;
2325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate_CC->dbg, "%d:pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate_CC->curState);
2326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinpHandle = pComponentPrivate_CC->pHandle;
2328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    switch(event) {
2330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecDspError:
2332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecDspError\n");
2333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecInternalError:
2336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecInternalError\n");
2337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecInitError:
2340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecInitError\n");
2341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecDspMessageRecieved:
2344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecDspMessageRecieved\n");
2345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecBufferProcessed:
2348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecBufferProcessed\n");
2349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecProcessingStarted:
2352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecProcessingStarted\n");
2353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecProcessingPaused:
2356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecProcessingPaused\n");
2357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecProcessingStoped:
2360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecProcessingStoped\n");
2361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecProcessingEof:
2364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecProcessingEof\n");
2365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecBufferNotProcessed:
2368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecBufferNotProcessed\n");
2369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecAlgCtrlAck:
2372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecAlgCtrlAck\n");
2373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case EMMCodecStrmCtrlAck:
2376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  EMMCodecStrmCtrlAck\n");
2377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        default:
2380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "[LCML CALLBACK EVENT]  Got event = %d\n",event);
2381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
2382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: Entering the AACENCLCML_Callback Function\n",__LINE__);
2385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT2(pComponentPrivate_CC->dbg, "UTIL: args = %p \n",args[0]);
2386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate_CC->dbg, " %d :: UTIL: EMMCodecInputBuffer = %p \n",__LINE__,(void *)EMMCodecInputBuffer);
2387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate_CC->dbg, " %d :: UTIL: EMMCodecOuputBuffer = %p \n",__LINE__,(void *)EMMCodecOuputBuffer);
2388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT2(pComponentPrivate_CC->dbg, " %d :: UTIL:Entering the LCML_Callback() : event = %d\n",__LINE__,event);
2389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: pHandle:%p \n",__LINE__,pHandle);
2390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: pComponentPrivate_CC:%p \n",__LINE__,pComponentPrivate_CC);
2391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: pLcmlHdr:%p \n",__LINE__,pLcmlHdr);
2392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*  OMX_PRINT1(pComponentPrivate_CC->dbg, "%d :: UTIL: pLcmlHdr->pIpParam:%p \n",__LINE__,pLcmlHdr->pIpParam); */
2393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(event == EMMCodecBufferProcessed)
2396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE EMMCodecBufferProcessed \n",__LINE__);
2398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if( (OMX_U32)args [0] == EMMCodecInputBuffer)
2399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: Input: pBuffer = %p\n",__LINE__, pBuffer);
2401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            eError = AACENCGetCorresponding_LCMLHeader(pComponentPrivate_CC, pBuffer, OMX_DirInput, &pLcmlHdr);
2402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            PERF_ReceivedFrame(pComponentPrivate_CC->pPERFcomp,
2405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               PREF(pLcmlHdr->buffer,pBuffer),
2406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               0,
2407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               PERF_ModuleCommonLayer);
2408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            AACENC_ClearPending(pComponentPrivate_CC,pLcmlHdr->buffer,OMX_DirInput,__LINE__);
2411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (eError != OMX_ErrorNone)
2412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: Error: Invalid Buffer Came ...\n",__LINE__);
2414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
2415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRCOMM2(pComponentPrivate_CC->dbg, "Input CallBack %p\n", pLcmlHdr->buffer);
2417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate_CC->curState != OMX_StatePause)
2419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp,
2423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  PREF(pLcmlHdr->buffer,pBuffer),
2424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  0,
2425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  PERF_ModuleHLMM);
2426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->cbInfo.EmptyBufferDone (pComponentPrivate_CC->pHandle,
2428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate_CC->pHandle->pApplicationPrivate,
2429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pLcmlHdr->buffer);
2430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->EmptybufferdoneCount++;
2431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->nOutStandingEmptyDones--;
2432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->lcml_nIpBuf--;
2433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
2436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_ERROR4(pComponentPrivate_CC->dbg, "UTIL: Couldn't calling EmptyBufferDone() because pComponentPrivate->curState = %d\n",pComponentPrivate_CC->curState);
2438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->pInBufHdrPausedPending[pComponentPrivate_CC->PendingInPausedBufs++] = pLcmlHdr->buffer;
2439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->nOutStandingEmptyDones++;
2443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: pComponentPrivate->nOutStandingEmptyDones = %ld\n",__LINE__,pComponentPrivate_CC->nOutStandingEmptyDones);
2444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else if ((OMX_U32)args [0] == EMMCodecOuputBuffer)
2446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER1(pComponentPrivate_CC->dbg, "%d :: UTIL: Output: pBuffer = %p\n",__LINE__, pBuffer);
2448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->nOutStandingFillDones++;
2449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: Incrementing nOutStandingFillDones = %d\n",__LINE__, (int)pComponentPrivate_CC->nOutStandingFillDones);
2450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: pComponentPrivate_CC->nOutStandingFillDones = %ld\n",__LINE__, pComponentPrivate_CC->nOutStandingFillDones);
2451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            eError = AACENCGetCorresponding_LCMLHeader(pComponentPrivate_CC, pBuffer, OMX_DirOutput, &pLcmlHdr);
2452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            AACENC_ClearPending(pComponentPrivate_CC,pLcmlHdr->buffer,OMX_DirOutput,__LINE__);
2453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (eError != OMX_ErrorNone)
2454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: Error: Invalid Buffer Came ...\n",__LINE__);
2456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
2457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pLcmlHdr->buffer->nFilledLen = (OMX_U32)args[8];
2459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: pLcmlHdr->buffer->nFilledLen = %ld \n",__LINE__,pLcmlHdr->buffer->nFilledLen);
2460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            PERF_ReceivedFrame(pComponentPrivate_CC->pPERFcomp,
2463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               PREF(pLcmlHdr->buffer,pBuffer),
2464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               PREF(pLcmlHdr->buffer,nFilledLen),
2465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               PERF_ModuleCommonLayer);
2466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->nLcml_nCntOpReceived++;
2467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if ((pComponentPrivate_CC->nLcml_nCntIp >= 1) && (pComponentPrivate_CC->nLcml_nCntOpReceived == 1))
2468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                PERF_Boundary(pComponentPrivate_CC->pPERFcomp,
2470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                PERF_BoundaryStart | PERF_BoundarySteadyState);
2471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->LastOutbuf = pLcmlHdr->buffer;    /* back up of processed buffer */
2474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "Output CallBack %p\n", pLcmlHdr->buffer);
2475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "size content  %d\n", (int)pLcmlHdr->buffer->nFilledLen);
2476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Previously in HandleDatabuffer form LCML */
2478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* Copying time stamp information to output buffer */
2480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pLcmlHdr->buffer->nTimeStamp = (OMX_TICKS)pComponentPrivate_CC->timestampBufIndex[pComponentPrivate_CC->OpBufindex];
2481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pLcmlHdr->buffer->nTickCount = pComponentPrivate_CC->tickcountBufIndex[pComponentPrivate_CC->OpBufindex];
2482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate_CC->OpBufindex++;
2483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate_CC->OpBufindex %= pComponentPrivate_CC->pPortDef[OMX_DirOutput]->nBufferCountActual;
2484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pComponentPrivate_CC->curState != OMX_StatePause)
2486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "%d :: UTIL: Component Sending Filled Output buffer%p to App\n",__LINE__,pLcmlHdr->buffer);
2489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate_CC->dbg, "UTIL:: Calling FillBufferDone from Line %d\n",__LINE__);
2490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp,
2493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pLcmlHdr->buffer->pBuffer,
2494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                pLcmlHdr->buffer->nFilledLen,
2495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                PERF_ModuleHLMM);
2496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef AACENC_DEBUG
2499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            unsigned long TmpNumFrames = pLcmlHdr->pOpParam->unNumFramesEncoded;
2500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: Num frames: %lx \n",__LINE__,TmpNumFrames);
2501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            for(k=0; k<MPEG4AACENC_MAX_OUTPUT_FRAMES; k++)
2503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRINT2(pComponentPrivate_CC->dbg, "%d Frame size[%d]: %lx \n",__LINE__,k,pLcmlHdr->pOpParam->unFrameSizes[k]);
2505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pLcmlHdr->buffer->pOutputPortPrivate=pLcmlHdr->pOpParam;
2507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->cbInfo.FillBufferDone (
2508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               pHandle,
2509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               pHandle->pApplicationPrivate,
2510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               pLcmlHdr->buffer
2511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                               );
2512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->FillbufferdoneCount++;
2514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->nOutStandingFillDones--;
2515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->lcml_nOpBuf--;
2516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
2518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_ERROR4(pComponentPrivate_CC->dbg, "UTIL: Couldn't calling fillBufferDone() because pComponentPrivate->curState = %d\n",pComponentPrivate_CC->curState);
2520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->pOutBufHdrPausedPending[pComponentPrivate_CC->PendingOutPausedBufs++] = pLcmlHdr->buffer;
2521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (event == EMMCodecStrmCtrlAck)
2529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin          OMX_PRDSP1(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE USN_DSPACK_STRMCTRL \n",__LINE__);
2531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin          if (args[1] == (void *)USN_STRMCMD_FLUSH)
2532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin          {
2533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 pHandle = pComponentPrivate_CC->pHandle;
2534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 if ( args[2] == (void *)EMMCodecInputBuffer)
2535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 {
2536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     if (args[0] == (void*)USN_ERR_NONE )
2537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     {
2538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                         OMX_PRCOMM1(pComponentPrivate_CC->dbg, "%d :: UTIL: Flushing input port \n",__LINE__);
2539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         for (i=0; i < pComponentPrivate_CC->nNumInputBufPending; i++) {
2540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp,
2542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                              PREF(pComponentPrivate_CC->pInputBufferList->pBufHdr[i],pBuffer),
2543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                              0,PERF_ModuleHLMM);
2544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate_CC->cbInfo.EmptyBufferDone (
2546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pComponentPrivate_CC->pHandle,
2547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pComponentPrivate_CC->pHandle->pApplicationPrivate,
2548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pComponentPrivate_CC->pInputBufHdrPending[i]);
2549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate_CC->pInputBufHdrPending[i] = NULL;
2550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         }
2551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         pComponentPrivate_CC->nNumInputBufPending=0;
2552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         pComponentPrivate_CC->cbInfo.EventHandler(pHandle,
2553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                  pHandle->pApplicationPrivate,
2554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                  OMX_EventCmdComplete,
2555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                  OMX_CommandFlush,INPUT_PORT, NULL);
2556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
2557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    else
2558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
2559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                         OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: LCML reported error while flushing input port\n",__LINE__);
2560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         goto EXIT;
2561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
2562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
2563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else if ( args[2] == (void *)EMMCodecOuputBuffer)
2564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                {
2565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    if (args[0] == (void*)USN_ERR_NONE )
2566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    {
2567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                         OMX_PRDSP1(pComponentPrivate_CC->dbg, "\tCallback FLUSH OUT %ld\n",pComponentPrivate_CC->nNumOutputBufPending);
2568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         pComponentPrivate_CC->nOutStandingFillDones = 0;
2569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         for (i=0; i < pComponentPrivate_CC->nNumOutputBufPending; i++)
2570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         {
2571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
2572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp,
2573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PREF(pComponentPrivate_CC->pOutputBufferList->pBufHdr[i],pBuffer),
2574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PREF(pComponentPrivate_CC->pOutputBufferList->pBufHdr[i],nFilledLen),
2575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            PERF_ModuleHLMM);
2576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate_CC->cbInfo.FillBufferDone (
2578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pComponentPrivate_CC->pHandle,
2579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pComponentPrivate_CC->pHandle->pApplicationPrivate,
2580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pComponentPrivate_CC->pOutputBufHdrPending[i]
2581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           );
2582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pComponentPrivate_CC->pOutputBufHdrPending[i] = NULL;
2583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         }
2584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         pComponentPrivate_CC->nNumOutputBufPending=0;
2585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                         pComponentPrivate_CC->cbInfo.EventHandler(
2586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                         pHandle, pHandle->pApplicationPrivate,
2587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                         OMX_EventCmdComplete, OMX_CommandFlush,OUTPUT_PORT, NULL);
2588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     }
2589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     else
2590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     {
2591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: LCML reported error while flushing output port\n",__LINE__);
2592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        goto EXIT;
2593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     }
2594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if(event == EMMCodecProcessingStoped)
2600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pthread_mutex_lock(&pComponentPrivate_CC->codecStop_mutex);
2602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pComponentPrivate_CC->codecStop_waitingsignal == 0){
2603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pComponentPrivate_CC->codecStop_waitingsignal = 1;
2604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pthread_cond_signal(&pComponentPrivate_CC->codecStop_threshold);
260536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            OMX_PRINT2(pComponentPrivate_CC->dbg, "stop ack. received. stop waiting for sending disable command completed\n");
2606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
2607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pthread_mutex_unlock(&pComponentPrivate_CC->codecStop_mutex);
2608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
2609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (!pComponentPrivate_CC->bNoIdleOnStop)
2610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->curState = OMX_StateIdle;
2612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
2613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            rm_error = RMProxy_NewSendCommand(pComponentPrivate_CC->pHandle,
2615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           RMProxy_StateSet,
2616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           OMX_AAC_Encoder_COMPONENT,
2617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           OMX_StateIdle,
2618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           3456, NULL);
2619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pComponentPrivate_CC->bPreempted == 0) {
2622eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
2623eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                /* Decrement reference count with signal enabled */
2624eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                if(RemoveStateTransition(pComponentPrivate_CC, OMX_TRUE) != OMX_ErrorNone) {
2625eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                      return OMX_ErrorUndefined;
2626eced958917cca059f5e7222a83a44adc4e259c67Benny Wong                }
2627eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
2628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate_CC->cbInfo.EventHandler(pComponentPrivate_CC->pHandle,
2629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate_CC->pHandle->pApplicationPrivate,
2630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventCmdComplete,
2631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_CommandStateSet,
2632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate_CC->curState,
2633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
2634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else {
2636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate_CC->cbInfo.EventHandler(pComponentPrivate_CC->pHandle,
2637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pComponentPrivate_CC->pHandle->pApplicationPrivate,
2638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventError,
2639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_ErrorResourcesPreempted,
2640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_TI_ErrorMajor,
2641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
2642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
2646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: setting bDspStoppedWhileExecuting\n",__LINE__);
2648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->bDspStoppedWhileExecuting = OMX_TRUE;
2649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: bNoIdleOnStop %ld \n", __LINE__,pComponentPrivate_CC->bNoIdleOnStop);
2650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->bNoIdleOnStop= OMX_FALSE;
2651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if(event == EMMCodecDspMessageRecieved)
2657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE EMMCodecDspMessageRecieved \n",__LINE__);
2659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRSTATE1(pComponentPrivate_CC->dbg, "%d :: UTIL: commandedState  = %p\n",__LINE__,args[0]);
2660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: arg1 = %p\n",__LINE__,args[1]);
2661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: arg2 = %p\n",__LINE__,args[2]);
2662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(0x0500 == (OMX_U32)args[2])
2663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "%d :: UTIL: See Message Here\n",__LINE__);
2665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if(event == EMMCodecAlgCtrlAck)
2670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: UTIL: GOT MESSAGE USN_DSPACK_ALGCTRL \n",__LINE__);
2672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (event == EMMCodecDspError)
2676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
267736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_PRSTATE2(pComponentPrivate_CC->dbg, "%d :: commandedState  = %d\n",__LINE__,(int)args[0]);
267836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: arg4 = %d\n",__LINE__,(int)args[4]);
267936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d :: arg5 = %d\n",__LINE__,(int)args[5]);
268036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_PRDSP2(pComponentPrivate_CC->dbg, "%d ::UTIL: EMMCodecDspError Here\n",__LINE__);
268136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        switch ( (OMX_U32) args [4])
2682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
268336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            /* USN_ERR_NONE,: Indicates that no error encountered during execution of the command and the command execution completed succesfully.
268436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * USN_ERR_WARNING,: Indicates that process function returned a warning. The exact warning is returned in Arg2 of this message.
268536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * USN_ERR_PROCESS,: Indicates that process function returned a error type. The exact error type is returnd in Arg2 of this message.
268636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * USN_ERR_PAUSE,: Indicates that execution of pause resulted in error.
268736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * USN_ERR_STOP,: Indicates that execution of stop resulted in error.
268836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * USN_ERR_ALGCTRL,: Indicates that execution of alg control resulted in error.
268936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * USN_ERR_STRMCTRL,: Indiactes the execution of STRM control command, resulted in error.
269036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * USN_ERR_UNKNOWN_MSG,: Indicates that USN received an unknown command. */
2691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__
269336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            case USN_ERR_PAUSE:
269436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            case USN_ERR_STOP:
269536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            case USN_ERR_ALGCTRL:
269636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            case USN_ERR_STRMCTRL:
269736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            case USN_ERR_UNKNOWN_MSG:
269836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                {
269936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                    pComponentPrivate_CC->bIsInvalidState=OMX_TRUE;
270036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                    pComponentPrivate_CC->curState = OMX_StateInvalid;
270136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                    pHandle = pComponentPrivate_CC->pHandle;
270236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                    pComponentPrivate_CC->cbInfo.EventHandler(pHandle,
270336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            pHandle->pApplicationPrivate,
270436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            OMX_EventError,
270536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            OMX_ErrorInvalidState,
270636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            OMX_TI_ErrorSevere,
270736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                            NULL);
270836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                }
270936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                break;
2710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
271236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            case USN_ERR_WARNING:
271336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            case USN_ERR_PROCESS:
271436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                AACENC_HandleUSNError (pComponentPrivate_CC, (OMX_U32)args[5]);
271536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                break;
271636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            default:
271736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                break;
2718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
271936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong
2720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (event == EMMCodecProcessingPaused)
2724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate_CC->bPauseCommandPending = OMX_TRUE;
2726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        AACENC_TransitionToPause(pComponentPrivate_CC);
2727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__
2731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (event ==EMMCodecInitError)
2733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* Cheking for MMU_fault */
2735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((args[4] == (void*)USN_ERR_UNKNOWN_MSG) && (args[5] == (void*)NULL))
2736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: MMU_Fault \n",__LINE__);
2738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->bIsInvalidState=OMX_TRUE;
2739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRINT2(pComponentPrivate_CC->dbg, "State changed to OMX_StateInvalid Line %d\n",__LINE__);
2740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->curState = OMX_StateInvalid;
2742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pHandle = pComponentPrivate_CC->pHandle;
2743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->cbInfo.EventHandler(pHandle,
2744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pHandle->pApplicationPrivate,
2745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventError,
2746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_ErrorStreamCorrupt,
2747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_TI_ErrorSevere,
2748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
2749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (event ==EMMCodecInternalError)
2754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* Cheking for MMU_fault */
2756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((args[4] == (void*)USN_ERR_UNKNOWN_MSG) && (args[5] == (void*)NULL))
2757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_ERROR4(pComponentPrivate_CC->dbg, "%d :: UTIL: MMU_Fault \n",__LINE__);
2759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->bIsInvalidState=OMX_TRUE;
2760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRSTATE2(pComponentPrivate_CC->dbg, "State changed to OMX_StateInvalid Line %d\n",__LINE__);
2761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->curState = OMX_StateInvalid;
2763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pHandle = pComponentPrivate_CC->pHandle;
2764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pComponentPrivate_CC->cbInfo.EventHandler(pHandle,
2765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       pHandle->pApplicationPrivate,
2766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_EventError,
2767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_ErrorStreamCorrupt,
2768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       OMX_TI_ErrorSevere,
2769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                       NULL);
2770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate_CC->dbg, "%d:pComponentPrivate->curState = %d\n",__LINE__,pComponentPrivate_CC->curState);
2776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate_CC->dbg, "%d :: UTIL: Exiting the LCML_Callback Function\n",__LINE__);
277736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    /* report the error to the client via event */
277836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    if(eError != OMX_ErrorNone){
277936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_ERROR4(pComponentPrivate_CC->dbg, "%d:: Error: \n",__LINE__);
278036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        pComponentPrivate_CC->cbInfo.EventHandler (pComponentPrivate_CC->pHandle,
278136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                pComponentPrivate_CC->pHandle->pApplicationPrivate,
278236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_EventError,
278336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                eError,
278436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                OMX_TI_ErrorSevere,
278536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                NULL);
278636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    }
2787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
2788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/
2791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
2792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *  AACENCGetCorresponding_LCMLHeader() function will be called by LCML_Callback
2793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *                                 component to write the msg
2794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  * @param *pBuffer,          Event which gives to details about USN status
2795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  * @param LCML_AACENC_BUFHEADERTYPE **ppLcmlHdr            //  args [0] //bufType;
2796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  * @retval OMX_NoError              Success, ready to roll
2798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *         OMX_Error_BadParameter   The input parameter pointer is null
2799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin **/
2800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/
2801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCGetCorresponding_LCMLHeader(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U8 *pBuffer, OMX_DIRTYPE eDir, LCML_AACENC_BUFHEADERTYPE **ppLcmlHdr)
2802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
2805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_AACENC_BUFHEADERTYPE *pLcmlBufHeader = NULL;
2806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nIpBuf =0 ;
2807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nOpBuf =0;
2808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 i  =0;
2809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate_CC = NULL;
2811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate_CC = pComponentPrivate;
2812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nIpBuf=pComponentPrivate_CC->pInputBufferList->numBuffers;
2814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nOpBuf=pComponentPrivate_CC->pOutputBufferList->numBuffers;
2815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Entering AACENCGetCorresponding_LCMLHeader..\n",__LINE__);
2817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eDir == OMX_DirInput) {
2819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: AACENCGetCorresponding_LCMLHeader -- eDir = %d \n",__LINE__,eDir);
2820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pLcmlBufHeader = pComponentPrivate_CC->pLcmlBufHeader[INPUT_PORT];
2821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP1(pComponentPrivate->dbg, "%d :: UTIL: Before corresponding LCML Header is Found \n",__LINE__);
2822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for(i=0; i<nIpBuf; i++) {
2823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(pBuffer == pLcmlBufHeader->buffer->pBuffer) {
2824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                *ppLcmlHdr = pLcmlBufHeader;
2825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRDSP2(pComponentPrivate->dbg, "%d::  UTIL: Corresponding LCML Header Found\n",__LINE__);
2826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "::  UTIL: pBuffer = %p\n",pBuffer);
2827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "::  UTIL: pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer);
2828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "::  UTIL: pLcmlBufHeader->buffer->pBuffer = %p\n",pLcmlBufHeader->buffer->pBuffer);
2829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
2830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pLcmlBufHeader++;
2832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (eDir == OMX_DirOutput)
2835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: AACENCGetCorresponding_LCMLHeader -- eDir = %d \n",__LINE__,eDir);
2837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pLcmlBufHeader = pComponentPrivate_CC->pLcmlBufHeader[OUTPUT_PORT];
2838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: Before corresponding LCML Header is Found \n",__LINE__);
2839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRBUFFER2(pComponentPrivate->dbg, "nOpBuf = %d\n",nOpBuf);
2840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for(i=0; i<nOpBuf; i++)
2841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
2842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer);
2843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader = %p\n",pLcmlBufHeader);
2844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer);
2845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, " pLcmlBufHeader->buffer->pBuffer = %p\n", pLcmlBufHeader->buffer->pBuffer);
2846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer);
2847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader = %p\n",pLcmlBufHeader);
2848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer);
2849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_PRBUFFER2(pComponentPrivate->dbg, "pLcmlBufHeader->buffer->pBuffer = %p\n",pLcmlBufHeader->buffer->pBuffer);
2850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(pBuffer == pLcmlBufHeader->buffer->pBuffer)
2851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
2852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                *ppLcmlHdr = pLcmlBufHeader;
2853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "%d:: UTIL: Corresponding LCML Header Found\n",__LINE__);
2854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pBuffer = %p\n",pBuffer);
2855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "::  UTIL: pLcmlBufHeader->buffer = %p\n",pLcmlBufHeader->buffer);
2856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, ":: UTIL: pLcmlBufHeader->buffer->pBuffer = %p\n",pLcmlBufHeader->buffer->pBuffer);
2857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
2858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pLcmlBufHeader++;
2860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else
2863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
2864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin      OMX_PRBUFFER2(pComponentPrivate->dbg, "%d:: UTIL: Invalid Buffer Type :: exiting...\n",__LINE__);
2865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: UTIL: Exiting AACENCGetCorresponding_LCMLHeader..\n",__LINE__);
2869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
2870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------*/
2874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
2875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *  AACENC_GetLCMLHandle()
2876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *
2877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  * @retval OMX_HANDLETYPE
2878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  *
2879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin -------------------------------------------------------------------*/
2880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_HANDLETYPE AACENCGetLCMLHandle(AACENC_COMPONENT_PRIVATE *pComponentPrivate)
2881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
2884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE pHandle = NULL;
2885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
2886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    void *handle;
2887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    char *error;
2888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE (*fpGetHandle)(OMX_HANDLETYPE);
2889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering AACENCGetLCMLHandle..\n",__LINE__);
2890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    handle = dlopen("libLCML.so", RTLD_LAZY);
2891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (!handle) {
2892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        fputs(dlerror(), stderr);
2893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
2894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    fpGetHandle = dlsym (handle, "GetHandle");
2897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if ((error = dlerror()) != NULL) {
2898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        fputs(error, stderr);
2899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
2900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
2902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    HINSTANCE hDLL;
2903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    typedef OMX_ERRORTYPE (*LPFNDLLFUNC1)(OMX_HANDLETYPE);
2904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LPFNDLLFUNC1 fpGetHandle;
2905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering AACENCGetLCMLHandle..\n",__LINE__);
2907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    hDLL = LoadLibraryEx(TEXT("OAF_BML.dll"), NULL, 0);
2909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (hDLL == NULL) {
2910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "BML Load Failed!!!\n");
2911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pHandle = NULL;
2912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
2913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    fpGetHandle = (LPFNDLLFUNC1)GetProcAddress(hDLL,TEXT("GetHandle"));
2916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (!fpGetHandle) {
2917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      // handle the error
2918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      FreeLibrary(hDLL);
2919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin      OMX_ERROR4(pComponentPrivate->dbg, "BML GetProcAddress Failed!!!\n");
2920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      pHandle = NULL;
2921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      goto EXIT;
2922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = (*fpGetHandle)(&pHandle);
2925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
2926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorUndefined;
2927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "eError != OMX_ErrorNone...\n");
2928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pHandle = NULL;
2929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
2931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        dlclose(handle);                            /* got error - Close LCML lib  */
2932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_ERROR4(pComponentPrivate->dbg, "AAC: [AACENCGetLCMLHandle] closing LCML \n");
2933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        handle = NULL;
2934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif
2935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
2936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ((LCML_DSP_INTERFACE*)pHandle)->pComponentPrivate= pComponentPrivate;
2939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->ptrLibLCML=handle;           /* saving LCML lib pointer  */
2940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP2(pComponentPrivate->dbg, "AAC: ptrLibLCML = %p\n",pComponentPrivate->ptrLibLCML);
2941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bGotLCML = OMX_TRUE;
2942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting AACENCGetLCMLHandle..\n",__LINE__);
2945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return pHandle;
2946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
2949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
2950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn AACENC_SetPending() description for AACENC_SetPending
2951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAACENC_SetPending().
2952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinThis component is called when a buffer is queued to the LCML
2953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
2954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
2956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
2958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE
2960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
2961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
2962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid AACENC_SetPending(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber)
2963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 i;
2965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eDir == OMX_DirInput) {
2967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) {
2968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) {
2969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pInputBufferList->bBufferPending[i] = 1;
2970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************INPUT BUFFER %d IS PENDING Line %ld******************************\n",i,lineNumber);
2971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else {
2975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) {
2976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) {
2977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pOutputBufferList->bBufferPending[i] = 1;
2978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************OUTPUT BUFFER %d IS PENDING Line %ld******************************\n",i,lineNumber);
2979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
2980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
2985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
2986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn AACENC_ClearPending() description for AACENC_ClearPending
2987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAACENC_ClearPending().
2988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinThis component is called when a buffer is returned from the LCML
2989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
2990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
2992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
2994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
2995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE
2996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
2997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
2998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid AACENC_ClearPending(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber)
2999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
3000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 i;
3001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "pComponentPrivate = %p\n",pComponentPrivate);
3003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER1(pComponentPrivate->dbg, "pBufHdr = %p\n",pBufHdr);
3004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT2(pComponentPrivate->dbg, "eDir = %d\n",eDir);
3005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eDir == OMX_DirInput) {
3007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) {
3008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) {
3009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pInputBufferList->bBufferPending[i] = 0;
3010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************INPUT BUFFER %d IS RECLAIMED Line %ld******************************\n",i,lineNumber);
3011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
3012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
3013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else {
3015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) {
3016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) {
3017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponentPrivate->pOutputBufferList->bBufferPending[i] = 0;
3018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "*******************OUTPUT BUFFER %d IS RECLAIMED Line %ld******************************\n",i,lineNumber);
3019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
3020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
3021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
3023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
3025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
3026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn AACENC_IsPending() description for AACENC_IsPending
3027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAACENC_IsPending().
3028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinThis method returns the pending status to the buffer
3029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
3030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
3031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
3032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
3033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
3034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
3035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE
3036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
3037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
3038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 AACENC_IsPending(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir)
3039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
3040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 i;
3041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eDir == OMX_DirInput) {
3043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) {
3044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) {
3045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Buffer pending: pBufHdr = %p \n",__LINE__,pBufHdr);
3046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                return pComponentPrivate->pInputBufferList->bBufferPending[i];
3047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
3048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
3049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else {
3051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) {
3052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) {
3053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: UTIL: Buffer pending: pBufHdr = %p \n",__LINE__,pBufHdr);
3054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                return pComponentPrivate->pOutputBufferList->bBufferPending[i];
3055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
3056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
3057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return -1;
3059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
3060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENC_TransitionToPause(AACENC_COMPONENT_PRIVATE *pComponentPrivate)
3062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
3063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
3064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "AACENC_TransitionToPause:::pComponentPrivate->nOutStandingFillDones = %ld\n",pComponentPrivate->nOutStandingFillDones );
3066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "AACENC_TransitionToPause:::pComponentPrivate->nOutStandingEmptyDones = %ld\n",pComponentPrivate->nOutStandingEmptyDones );
3067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (pComponentPrivate->nOutStandingFillDones <= 0 && pComponentPrivate->nOutStandingEmptyDones <= 0)
3068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
3069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->curState = OMX_StatePause;
3070eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3071eced958917cca059f5e7222a83a44adc4e259c67Benny Wong        /* Decrement reference count with signal enabled */
3072eced958917cca059f5e7222a83a44adc4e259c67Benny Wong        if(RemoveStateTransition(pComponentPrivate, OMX_TRUE) != OMX_ErrorNone) {
3073eced958917cca059f5e7222a83a44adc4e259c67Benny Wong              return OMX_ErrorUndefined;
3074eced958917cca059f5e7222a83a44adc4e259c67Benny Wong        }
3075eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
3077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                pComponentPrivate->pHandle->pApplicationPrivate,
3078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                OMX_EventCmdComplete,
3079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                OMX_CommandStateSet,
3080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                pComponentPrivate->curState,
3081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                NULL);
3082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bPauseCommandPending = OMX_FALSE;
3083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
3085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
3086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
3089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
3090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* AACENCFill_LCMLInitParamsEx () This function is used by the component thread to
3091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* fill the all of its initialization parameters, buffer deatils  etc
3092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* to LCML structure,
3093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
3094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pComponent  handle for this instance of the component
3095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param plcml_Init  pointer to LCML structure to be filled
3096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
3097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @pre
3098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
3099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @post
3100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
3101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return none
3102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
3103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ========================================================================== */
3104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCFill_LCMLInitParamsEx(OMX_HANDLETYPE pComponent)
3105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
3106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
3107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nIpBuf,nIpBufSize,nOpBuf,nOpBufSize;
3108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 i;
3109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pTemp = NULL;
3110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 size_lcml;
3111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_AACENC_BUFHEADERTYPE *pTemp_lcml = NULL;
3112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_DSP_INTERFACE *pHandle = (LCML_DSP_INTERFACE *)pComponent;
3113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pComponentPrivate = pHandle->pComponentPrivate;
3114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: AACENCFill_LCMLInitParams\n ",__LINE__);
3116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nIpBuf = pComponentPrivate->pInputBufferList->numBuffers;
3117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nIpBufSize = pComponentPrivate->pPortDef[INPUT_PORT]->nBufferSize;
3118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nOpBuf = pComponentPrivate->pOutputBufferList->numBuffers;
3119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nOpBufSize = pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferSize;
3120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details -----------\n",__LINE__);
3122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input  Buffer Count = %ld \n",__LINE__,nIpBuf);
3123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Input  Buffer Size = %ld\n",__LINE__,nIpBufSize);
3124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Count = %ld\n",__LINE__,nOpBuf);
3125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Output Buffer Size = %ld\n",__LINE__,nOpBufSize);
3126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: ------ Buffer Details ------------\n",__LINE__);
3127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    size_lcml = nIpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE);
312936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_MALLOC_SIZE(pTemp_lcml, size_lcml, LCML_AACENC_BUFHEADERTYPE);
3130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP2(pComponentPrivate->dbg, "pTemp_lcml %p to %p \n",pTemp_lcml,(pTemp_lcml + sizeof(pTemp_lcml) ));
3131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->pLcmlBufHeader[INPUT_PORT] = pTemp_lcml;
3133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for (i=0; i<nIpBuf; i++) {
3134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp = pComponentPrivate->pInputBufferList->pBufHdr[i];
3136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE);
3137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nAllocLen = nIpBufSize;
3138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFilledLen = nIpBufSize;
3139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER;
3140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER;
3141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->pPlatformPrivate = pHandle->pComponentPrivate;
3142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nTickCount = NOT_USED;
3143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->buffer = pTemp;
3144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->eDir = OMX_DirInput;
3145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
314636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pIpParam, sizeof(AACENC_UAlgInBufParamStruct), AACENC_UAlgInBufParamStruct);
3147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRDSP2(pComponentPrivate->dbg, "pTemp_lcml %p to %p \n",pTemp_lcml,(pTemp_lcml + sizeof(pTemp_lcml) ));
3148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->pIpParam->bLastBuffer = 0;
3150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* This means, it is not a last buffer. This flag is to be modified by
3151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         * the application to indicate the last buffer */
3152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFlags = NORMAL_BUFFER;
3153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml++;
3154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Allocate memory for all output buffer headers,  This memory pointer will be sent to LCML */
3157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    size_lcml = nOpBuf * sizeof(LCML_AACENC_BUFHEADERTYPE);
3158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
315936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_MALLOC_SIZE(pTemp_lcml, size_lcml, LCML_AACENC_BUFHEADERTYPE);
3160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRDSP2(pComponentPrivate->dbg, "size_lcml %d to %lx \n", (int)size_lcml,(size_lcml + sizeof(size_lcml) ));
3161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->pLcmlBufHeader[OUTPUT_PORT] = pTemp_lcml;
3163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "[AACENCFill_LCMLInitParamsEx] nOpBuf = %d\n", (int)nOpBuf);
3167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "[AACENCFill_LCMLInitParamsEx] pComponentPrivate->pOutputBufferList->numBuffers = %d\n",pComponentPrivate->pOutputBufferList->numBuffers);
3168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for (i=0; i<nOpBuf; i++) {
3169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin           OMX_PRDSP2(pComponentPrivate->dbg, "[AACENCFill_LCMLInitParamsEx] pTemp_lcml = %p\n",pTemp_lcml);
3170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp = pComponentPrivate->pOutputBufferList->pBufHdr[i];
3171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE);
3172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nAllocLen = nOpBufSize;
3173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFilledLen = nOpBufSize;
3174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMajor = AACENC_MAJOR_VER;
3175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nVersion.s.nVersionMinor = AACENC_MINOR_VER;
3176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pComponentPrivate->nVersion = pTemp->nVersion.nVersion;
3177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->pPlatformPrivate = pHandle->pComponentPrivate;
3178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nTickCount = NOT_USED;
3179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* This means, it is not a last buffer. This flag is to be modified by
3180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         * the application to indicate the last buffer */
3181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->buffer = pTemp;
3182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml->eDir = OMX_DirOutput;
3183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
318436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        OMX_MALLOC_SIZE_DSPALIGN(pTemp_lcml->pOpParam, sizeof(AACENC_UAlgOutBufParamStruct), AACENC_UAlgOutBufParamStruct);
3185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRINT2(pComponentPrivate->dbg, "\n pTemp_lcml->pOpParam %p \n",pTemp_lcml->pOpParam);
3187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp->nFlags = NORMAL_BUFFER;
3188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp++;
3189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pTemp_lcml++;
3190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bPortDefsAllocated = 1;
3192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponentPrivate->bBypassDSP = 0;
3193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
3195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting Fill_LCMLInitParams\n",__LINE__);
3196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError);
3197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
3198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
3199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AACENCWriteConfigHeader(AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr){
3202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
3204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nPosition = 0;
3205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nNumBitsWritten = 0;
3206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nBytePosition = 0;
3207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8  nBitPosition =  0;
3208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8  nBits = 0;
3209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 tempData = 0;
3210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 rateIndex = 0;
3211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 nBuf = 0;
3212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_U16 nBuf2 = 0;
3213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    //nBytePosition = nPosition / 8;  //add this back if we need to handle more than 4 bytes (U32).
3214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    //nBitPosition =  nPosition % 8;
3215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    memset(pBufHdr->pBuffer, 0x0, pBufHdr->nAllocLen); // make sure we start with zeroes
3216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBits = 5; //audioObjectType
3218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nPosition += nBits;
3219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRINT2(pComponentPrivate->dbg, "profile is %d\n", pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile);
3220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile == OMX_AUDIO_AACObjectLC)
3221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
3222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tempData = AACENC_OBJ_TYP_LC << (16-nPosition);
3223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_PRINT2(pComponentPrivate->dbg, "profile is LC, tempData = 2 << (32-5) = %ld\n", tempData);
3224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile == OMX_AUDIO_AACObjectHE)
3226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
3227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tempData = AACENC_OBJ_TYP_HEAAC << (16-nPosition);
3228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (pComponentPrivate->aacParams[OUTPUT_PORT]->eAACProfile == OMX_AUDIO_AACObjectHE_PS)
3230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
3231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tempData = AACENC_OBJ_TYP_PS << (16-nPosition);
3232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBuf = tempData;
3234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBits = 4; //SamplingFrequencyIndex
3236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nPosition += nBits;
3237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    rateIndex = AACEnc_GetSampleRateIndexL(pComponentPrivate->aacParams[OUTPUT_PORT]->nSampleRate);
3238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    tempData = rateIndex << (16-nPosition);
3239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBuf |= tempData;
3240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "CONFIG BUFFER = %d\n\n", nBuf);
3241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBits = 4; //channelConfiguration
3243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nPosition += nBits;
3244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    tempData = pComponentPrivate->aacParams[OUTPUT_PORT]->nChannels << (16-nPosition);
3245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nBuf |= tempData;
3246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    //@TODO add the rest of the AudioSpecificConfigData
3248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	nBuf2 =	(nBuf>> 8) | (nBuf << 8); /* Changing Endianess */
3250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRBUFFER2(pComponentPrivate->dbg, "CONFIG BUFFER = %d\n\n", nBuf2);
3252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    memcpy(pBufHdr->pBuffer, &nBuf2, sizeof(OMX_U16));
3254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pBufHdr->nFlags = NORMAL_BUFFER;  // clear any other flags then add the needed ones
3255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pBufHdr->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME;
3256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pBufHdr->nFlags |= OMX_BUFFERFLAG_CODECCONFIG;
3257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pBufHdr->nFilledLen = sizeof(OMX_U16); //need make this dynamic for non basic LC cases.
3258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
3260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
3261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=======================================================================*/
3263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*! @fn AACDec_GetSampleRateIndexL
3264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @brief Gets the sample rate index
3266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @param  aRate : Actual Sampling Freq
3268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @Return  Index
3270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
3272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=======================================================================*/
3273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint AACEnc_GetSampleRateIndexL( const int aRate)
3274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
3275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int index = 0;
3276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    switch( aRate ){
3278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 96000:
3279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 0;
3280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 88200:
3282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 1;
3283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 64000:
3285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 2;
3286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 48000:
3288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 3;
3289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 44100:
3291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 4;
3292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 32000:
3294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 5;
3295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 24000:
3297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 6;
3298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 22050:
3300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 7;
3301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 16000:
3303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 8;
3304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 12000:
3306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 9;
3307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 11025:
3309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 10;
3310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    case 8000:
3312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = 11;
3313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    default:
3315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;
3316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return index;
3319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
3320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
332136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*  =========================================================================*/
332236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*  func    AACENC_HandleUSNError
332336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*
332436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*  desc    Handles error messages returned by the dsp
332536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*
332636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*@return n/a
332736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*
332836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong/*  =========================================================================*/
332936733d62c0d4c565da10b34978e587d0fda0f1adJames Dongvoid AACENC_HandleUSNError (AACENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 arg)
333036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong{
333136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_COMPONENTTYPE *pHandle = NULL;
333236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    OMX_U32 i;
333336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    switch (arg)
333436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    {
3335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
333636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_WARN_CONCEALED:
333736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_WARN_UNDERFLOW:
333836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_WARN_OVERFLOW:
333936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_WARN_ENDOFDATA:
334036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            OMX_ERROR4(pComponentPrivate->dbg,  "Algorithm Error" );
334136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            /* all of these are informative messages, Algo can recover, no need to notify the
334236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong             * IL Client at this stage of the implementation */
334336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            break;
334436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_WARN_PLAYCOMPLETED:
3345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
334636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            {
334736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                OMX_PRINT2(pComponentPrivate->dbg, "%d :: UTIL: IUALG_WARN_PLAYCOMPLETED/USN_ERR_WARNING event received\n", __LINE__);
334836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pComponentPrivate->bPlayCompleteFlag = 1;
334936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong#ifndef UNDER_CE
335036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
335136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       pComponentPrivate->pHandle->pApplicationPrivate,
335236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       OMX_EventBufferFlag,
335336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       (OMX_U32)NULL,
335436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       OMX_BUFFERFLAG_EOS,
335536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       NULL);
335636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pComponentPrivate->pLcmlBufHeader[0]->pIpParam->bLastBuffer = 0;
335736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong#else
335836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                /* add callback to application to indicate SN/USN has completed playing of current set of date */
335936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle,
336036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       pComponentPrivate->pHandle->pApplicationPrivate,
336136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       OMX_EventBufferFlag,
336236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       (OMX_U32)NULL,
336336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       OMX_BUFFERFLAG_EOS,
336436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                                                       NULL);
336536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong#endif
336636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            }
336736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            break;
3368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
336936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong#ifdef _ERROR_PROPAGATION__
337036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_ERR_BAD_HANDLE:
337136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_ERR_DATA_CORRUPT:
337236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_ERR_NOT_SUPPORTED:
337336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_ERR_ARGUMENT:
337436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_ERR_NOT_READY:
337536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        case IUALG_ERR_GENERAL:
337636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong
337736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            {
337836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                /* all of these are fatal messages, Algo can not recover
337936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                 * hence return an error */
338036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                OMX_ERROR4(pComponentPrivate->dbg,  "Algorithm Error, cannot recover" );
338136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pComponentPrivate->bIsInvalidState=OMX_TRUE;
338236733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pComponentPrivate->curState = OMX_StateInvalid;
338336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pHandle = pComponentPrivate->pHandle;
338436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                pComponentPrivate->cbInfo.EventHandler(pHandle,
338536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                        pHandle->pApplicationPrivate,
338636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                        OMX_EventError,
338736733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                        OMX_ErrorInvalidState,
338836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                        OMX_TI_ErrorSevere,
338936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong                        NULL);
339036733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            }
339136733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            break;
3392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
339336733d62c0d4c565da10b34978e587d0fda0f1adJames Dong        default:
339436733d62c0d4c565da10b34978e587d0fda0f1adJames Dong            break;
339536733d62c0d4c565da10b34978e587d0fda0f1adJames Dong    }
339636733d62c0d4c565da10b34978e587d0fda0f1adJames Dong}
3397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
339936733d62c0d4c565da10b34978e587d0fda0f1adJames Dong#ifdef RESOURCE_MANAGER_ENABLED
340036733d62c0d4c565da10b34978e587d0fda0f1adJames Dongvoid AACENC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData)
3401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
3402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMMANDTYPE Cmd = OMX_CommandStateSet;
3403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE state = OMX_StateIdle;
3404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)cbData.hComponent;
3405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    AACENC_COMPONENT_PRIVATE *pCompPrivate = NULL;
3406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivate = (AACENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate;
3408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (*(cbData.RM_Error) == OMX_RmProxyCallback_ResourcesPreempted) {
3410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (pCompPrivate->curState == OMX_StateExecuting ||
3411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pCompPrivate->curState == OMX_StatePause) {
3412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            write (pCompPrivate->cmdPipe[1], &Cmd, sizeof(Cmd));
3413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            write (pCompPrivate->cmdDataPipe[1], &state ,sizeof(OMX_U32));
3414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pCompPrivate->bPreempted = 1;
3416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
3417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (*(cbData.RM_Error) == OMX_RmProxyCallback_ResourcesAcquired){
3419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pCompPrivate->cbInfo.EventHandler (
3420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            pHandle, pHandle->pApplicationPrivate,
3421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            OMX_EventResourcesAcquired, 0,0,
3422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                            NULL);
3423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
3426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
3427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
342836733d62c0d4c565da10b34978e587d0fda0f1adJames Dong#endif
3429eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3430eced958917cca059f5e7222a83a44adc4e259c67Benny WongOMX_ERRORTYPE AddStateTransition(AACENC_COMPONENT_PRIVATE* pComponentPrivate) {
3431eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    OMX_ERRORTYPE eError = OMX_ErrorNone;
3432eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3433eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    if(pthread_mutex_lock(&pComponentPrivate->mutexStateChangeRequest)) {
3434eced958917cca059f5e7222a83a44adc4e259c67Benny Wong       return OMX_ErrorUndefined;
3435eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    }
3436eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    /* Increment state change request reference count */
3437eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    pComponentPrivate->nPendingStateChangeRequests++;
3438eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3439eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) {
3440eced958917cca059f5e7222a83a44adc4e259c67Benny Wong       return OMX_ErrorUndefined;
3441eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    }
3442eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    return eError;
3443eced958917cca059f5e7222a83a44adc4e259c67Benny Wong}
3444eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3445eced958917cca059f5e7222a83a44adc4e259c67Benny WongOMX_ERRORTYPE RemoveStateTransition(AACENC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BOOL bEnableSignal) {
3446eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    OMX_ERRORTYPE eError = OMX_ErrorNone;
3447eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3448eced958917cca059f5e7222a83a44adc4e259c67Benny Wong     /* Decrement state change request reference count*/
3449eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    if(pthread_mutex_lock(&pComponentPrivate->mutexStateChangeRequest)) {
3450eced958917cca059f5e7222a83a44adc4e259c67Benny Wong       return OMX_ErrorUndefined;
3451eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    }
3452eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    pComponentPrivate->nPendingStateChangeRequests--;
3453eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3454eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    /* If there are no more pending requests, signal the thread waiting on this*/
3455eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    if(!pComponentPrivate->nPendingStateChangeRequests && bEnableSignal) {
3456eced958917cca059f5e7222a83a44adc4e259c67Benny Wong       pthread_cond_signal(&(pComponentPrivate->StateChangeCondition));
3457eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    }
3458eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    if(pthread_mutex_unlock(&pComponentPrivate->mutexStateChangeRequest)) {
3459eced958917cca059f5e7222a83a44adc4e259c67Benny Wong       return OMX_ErrorUndefined;
3460eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    }
3461eced958917cca059f5e7222a83a44adc4e259c67Benny Wong
3462eced958917cca059f5e7222a83a44adc4e259c67Benny Wong    return eError;
3463eced958917cca059f5e7222a83a44adc4e259c67Benny Wong}
3464