1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*
3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Copyright 2001-2008 Texas Instruments - http://www.ti.com/
4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Licensed under the Apache License, Version 2.0 (the "License");
6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  you may not use this file except in compliance with the License.
7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  You may obtain a copy of the License at
8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *     http://www.apache.org/licenses/LICENSE-2.0
10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Unless required by applicable law or agreed to in writing, software
12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  distributed under the License is distributed on an "AS IS" BASIS,
13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  See the License for the specific language governing permissions and
15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * limitations under the License.
16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* =============================================================================
18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*             Texas Instruments OMAP (TM) Platform Software
19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  (c) Copyright Texas Instruments, Incorporated.  All Rights Reserved.
20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  Use of this software is controlled by the terms and conditions found
22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  in the license agreement under which this software has been supplied.
23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* =========================================================================== */
24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @file AmrEnc_Test.c
26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* This file implements NBAMR Encoder Component Test Application to verify
28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* which is fully compliant with the Khronos OpenMAX (TM) 1.0 Specification
29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @path  $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\nbamr_enc\tests
31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @rev  1.0
33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ----------------------------------------------------------------------------
35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*!
36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! Revision History
37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! ===================================
38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 21-sept-2006 bk: updated review findings for alpha release
39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 24-Aug-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests some more
40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 18-July-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests validated for few cases
41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 21-Jun-2006 bk: Khronos OpenMAX (TM) 1.0 migration done
42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 22-May-2006 bk: DASF recording quality improved
43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 19-Apr-2006 bk: DASF recording speed issue resloved
44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 23-Feb-2006 bk: DASF functionality added
45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 18-Jan-2006 bk: Repated recording issue fixed and LCML changes taken care
46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 14-Dec-2005 bk: Initial Version
47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 16-Nov-2005 bk: Initial Version
48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 23-Sept-2005 bk: Initial Version
49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 10-Sept-2005 bk: Initial Version
50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 10-Sept-2005 bk:
51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! This is newest file
52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* =========================================================================== */
53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ------compilation control switches -------------------------*/
54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/****************************************************************
55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  INCLUDE FILES
56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin****************************************************************/
57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ----- system and platform files ----------------------------*/
58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <unistd.h>
60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/ioctl.h>
61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/select.h>
62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <errno.h>
63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <linux/vt.h>
64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <signal.h>
65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/stat.h>
66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h>
67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <linux/soundcard.h>
68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <string.h>
70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <fcntl.h>
71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdlib.h>
72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h>
73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Index.h>
75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Types.h>
76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Component.h>
77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Core.h>
78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Audio.h>
79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <TIDspOmx.h>
80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* #include <AudioManagerAPI.h> */
81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <time.h>
82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #include <OMX_Common_Utils.h>
85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #include <OMX_GetTime.h>     /*Headers for Performance & measuremet    */
86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFILE *fpRes;
89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAMRENC_NUM_INPUT_BUFFERS   Default number of input buffers
93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_NUM_INPUT_BUFFERS 1
96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAMRENC_NUM_INPUT_BUFFERS_DASF  Default No.of input buffers DASF
99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_NUM_INPUT_BUFFERS_DASF 2
102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAMRENC_NUM_OUTPUT_BUFFERS   Default number of output buffers
105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_NUM_OUTPUT_BUFFERS 1
108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAMRENC_INPUT_BUFFER_SIZE   	 Default input buffer size
111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *		NBAMRENC_INPUT_BUFFER_SIZE_DASF  Default input buffer size DASF
112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_INPUT_BUFFER_SIZE 320
115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_INPUT_BUFFER_SIZE_DASF 320
116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAMRENC_OUTPUT_BUFFER_SIZE   Default output buffer size
119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_OUTPUT_BUFFER_SIZE 118
122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAMRENC_OUTPUT_BUFFER_SIZE_MIME  Default input buffer size MIME
125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_OUTPUT_BUFFER_SIZE_MIME 34
128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*
131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def	NBAMRENC_APP_ID  App ID Value setting
132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAMRENC_APP_ID 100
135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define SLEEP_TIME 5
137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAMRENC_MIME_HEADER_LEN 6
139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO1 "/dev/fifo.1"
141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO2 "/dev/fifo.2"
142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define APP_INFO
144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_DEBUG
146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_MEMCHECK
148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef USE_BUFFER
150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#define USE_BUFFER*/
151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define STRESS_TEST_ITERATIONS 20
153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef  APP_INFO
155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        #define APP_IPRINT(...)    fprintf(stderr,__VA_ARGS__)			/* Information prints */
156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        #define APP_IPRINT(...)
158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUG
161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_DPRINT(...)
164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_MEMCHECK
167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_MEMPRINT(...)    fprintf(stderr,__VA_ARGS__)
168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_MEMPRINT(...)
170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  OMX_ERRORTYPE eError = OMX_ErrorNone;
174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  int GT_FlagE = 0;  /* Fill Buffer 1 = First Buffer,  0 = Not First Buffer  */
175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  int GT_FlagF = 0;  /*Empty Buffer  1 = First Buffer,  0 = Not First Buffer  */
176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  static OMX_NODE* pListHead = NULL;
177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def    APP_DEBUGMEM   Turns memory leaks messaging on and off.
182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *         NBAMRENC_DEBUGMEM must be defined in OMX Comp in order to get
183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *         this functionality On.
184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_DEBUGMEM
187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#define APP_DEBUGMEM*/
188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM
190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid *arr[500];
191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint lines[500];
192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint bytes[500];
193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinchar file[500][50];
194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint ind=0;
195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newmalloc(x) mynewmalloc(__LINE__,__FILE__,x)
197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newfree(z) mynewfree(z,__LINE__,__FILE__)
198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid * mynewmalloc(int line, char *s, int size)
200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   void *p;
202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   int e=0;
203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   p = calloc(1,size);
204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   if(p==NULL){
205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       APP_IPRINT("Memory not available\n");
206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       exit(1);
207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       }
208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   else{
209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         while((lines[e]!=0)&& (e<500) ){
210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              e++;
211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         arr[e]=p;
213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         lines[e]=line;
214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         bytes[e]=size;
215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         strcpy(file[e],s);
216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         APP_IPRINT("Allocating %d bytes on address %p, line %d file %s pos %d\n", size, p, line, s, e);
217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         return p;
218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint mynewfree(void *dp, int line, char *s){
222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int q;
223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(dp==NULL){
224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 APP_IPRINT("NULL can't be deleted\n");
225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 return 0;
226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(q=0;q<500;q++){
228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(arr[q]==dp){
229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           APP_IPRINT("Deleting %d bytes on address %p, line %d file %s\n", bytes[q],dp, line, s);
230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           free(dp);
231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           dp = NULL;
232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           lines[q]=0;
233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           strcpy(file[q],"");
234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     }
237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     if(500==q)
238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         APP_IPRINT("\n\nPointer not found. Line:%d    File%s!!\n\n",line, s);
239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newmalloc(x) malloc(x)
242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newfree(z) free(z)
243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct NBAMRENC_BUFDATA {
247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_U8 nFrames;
248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}NBAMRENC_BUFDATA;
249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  M A C R O S FOR MALLOC and MEMORY FREE and CLOSING PIPES
253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_NBAPP_CONF_INIT_STRUCT(_s_, _name_)	\
257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    memset((_s_), 0x0, sizeof(_name_));	\
258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nSize = sizeof(_name_);		\
259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMajor = 0x1;	\
260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMinor = 0x0;	\
261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nRevision = 0x0;		\
262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nStep = 0x0
263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_NBAPP_INIT_STRUCT(_s_, _name_)	\
265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    memset((_s_), 0x0, sizeof(_name_));	\
266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_NBAPP_MALLOC_STRUCT(_pStruct_, _sName_)   \
268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    _pStruct_ = (_sName_*)newmalloc(sizeof(_sName_));      \
269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(_pStruct_ == NULL){      \
270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("***********************************\n"); \
271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: Malloc Failed\n",__LINE__); \
272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("***********************************\n"); \
273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources; \
274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;      \
275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } \
276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d :: ALLOCATING MEMORY = %p\n",__LINE__,_pStruct_);
277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** NBAPP_COMP_PORT_TYPE  Port types
280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  @param  NBAPP_INPUT_PORT			Input port
282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  @param  NBAPP_OUTPUT_PORT			Output port
284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*  ====================================================================== */
286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*This enum must not be changed. */
287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum NBAPP_COMP_PORT_TYPE {
288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    NBAPP_INPUT_PORT = 0,
289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    NBAPP_OUTPUT_PORT
290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}NBAPP_COMP_PORT_TYPE;
291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAPP_MAX_NUM_OF_BUFS   	Maximum number of buffers
295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def	NBAPP_NUM_OF_CHANNELS 		Number of Channels
296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def NBAPP_SAMPLING_FREQUENCY    Sampling frequency
297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_MAX_NUM_OF_BUFS 10
300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_NUM_OF_CHANNELS 1
301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NBAPP_SAMPLING_FREQUENCY 8000
302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef  WAITFORRESOURCES
305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_mutex_t WaitForState_mutex;
306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_cond_t  WaitForState_threshold;
307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8          WaitForState_flag;
308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8      TargetedState;
309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_BOOL bInvalidState;
312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid* ArrayOfPointers[6];
313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle);
314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle);
315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle);
316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn);
317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint maxint(int a, int b);
318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint inputPortDisabled = 0;
320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint outputPortDisabled = 0;
321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 NextBuffer[NBAPP_INPUT_BUFFER_SIZE*3];
322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FirstTime = 1;
323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint nRead;
324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinNBAMRENC_BUFDATA* OutputFrames;
325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAM_COMMANDDATATYPE cmd_data;
328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_STRING strAmrEncoder = "OMX.TI.AMR.encode";
330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources( OMX_HANDLETYPE *pHandle,
333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferIn,
334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferOut,
335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                int NIB, int NOB,
336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                FILE* fIn, FILE* fOut);
337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint  FreeAllResources(OMX_HANDLETYPE *pHandle,
339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  OMX_U8* UseInpBuf[],
340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  OMX_U8* UseOutBuf[],
341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  int NIB, int NOB,
342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  FILE* fIn, FILE* fOut);
343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint IpBuf_Pipe[2];
345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint OpBuf_Pipe[2];
346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint Event_Pipe[2];
347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinfd_set rfds;
349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint DasfMode;
350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint TeeMode=0;
351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint mframe=0;
352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint preempted = 0;
354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* safe routine to get the maximum of 2 integers */
356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint maxint(int a, int b)
357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   return (a>b) ? a : b;
359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* This method will wait for the component to get to the state
363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * specified by the DesiredState input. */
364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle,
365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  OMX_STATETYPE DesiredState)
366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     OMX_STATETYPE CurState = OMX_StateInvalid;
368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     OMX_ERRORTYPE eError = OMX_ErrorNone;
369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     /* OMX_S16 nCnt = 0; */
370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;
371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     eError = pComponent->GetState(pHandle, &CurState);
373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     if (CurState == OMX_StateInvalid && bInvalidState == OMX_TRUE)
374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	 {
375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 	eError = OMX_ErrorInvalidState;
376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	 }
377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavineError = OMX_GetState(pHandle, &CurState);
379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (CurState == OMX_StateInvalid) {
380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInvalidState;
381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(CurState != DesiredState){
383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        WaitForState_flag = 1;
384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        TargetedState = DesiredState;
385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_mutex_lock(&WaitForState_mutex);
386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_cond_wait(&WaitForState_threshold, &WaitForState_mutex);/*Going to sleep till signal arrives*/
387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_mutex_unlock(&WaitForState_mutex);
388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	return eError;
391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE EventHandler(
394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_HANDLETYPE hComponent,
395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_PTR pAppData,
396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_EVENTTYPE eEvent,
397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_U32 nData1,
398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_U32 nData2,
399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_PTR pEventData)
400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   APP_DPRINT( "%d :: App: Entering EventHandler \n", __LINE__);
402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_ERRORTYPE eError = OMX_ErrorNone;
403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)hComponent;
404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_STATETYPE state;
405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_U8 writeValue;
407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   eError = pComponent->GetState (hComponent, &state);
409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   if(eError != OMX_ErrorNone) {
410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       APP_DPRINT("%d :: App: Error returned from GetState\n",__LINE__);
411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       goto EXIT;
412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   APP_DPRINT( "%d :: App: Component eEvent = %d\n", __LINE__,eEvent);
414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   switch (eEvent) {
415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	   APP_DPRINT( "%d :: App: Component State Changed To %d\n", __LINE__,state);
416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	   case OMX_EventCmdComplete:
417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           APP_DPRINT( "%d :: App: Component State Changed To %d\n", __LINE__,state);
418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (nData1 == OMX_CommandPortDisable) {
419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (nData2 == NBAPP_INPUT_PORT) {
420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				inputPortDisabled = 1;
421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (nData2 == NBAPP_OUTPUT_PORT) {
423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				outputPortDisabled = 1;
424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if ((nData1 == OMX_CommandStateSet) && (TargetedState == nData2) &&
427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            (WaitForState_flag)){
428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            WaitForState_flag = 0;
429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_lock(&WaitForState_mutex);
430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_cond_signal(&WaitForState_threshold);
431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_unlock(&WaitForState_mutex);
432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventError:
435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   if (nData1 == OMX_ErrorInvalidState) {
436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   		bInvalidState =OMX_TRUE;
437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   		APP_IPRINT("EventHandler: Invalid State!!!!\n");
438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   }
439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   else if(nData1 == OMX_ErrorResourcesPreempted) {
440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            preempted=1;
441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            writeValue = 0;
442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       }
444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       else if (nData1 == OMX_ErrorResourcesLost) {
445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            WaitForState_flag = 0;
446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pthread_mutex_lock(&WaitForState_mutex);
447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pthread_cond_signal(&WaitForState_threshold);/*Sending Waking Up Signal*/
448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pthread_mutex_unlock(&WaitForState_mutex);
449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        }
450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventMax:
453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   APP_DPRINT( "%d :: App: Component OMX_EventMax = %d\n", __LINE__,eEvent);
454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventMark:
456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   APP_DPRINT( "%d :: App: Component OMX_EventMark = %d\n", __LINE__,eEvent);
457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventPortSettingsChanged:
459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   APP_DPRINT( "%d :: App: Component OMX_EventPortSettingsChanged = %d\n", __LINE__,eEvent);
460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   break;
461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventBufferFlag:
462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   APP_DPRINT( "%d :: App: Component OMX_EventBufferFlag = %d\n", __LINE__,eEvent);
463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   writeValue = 2;
464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventResourcesAcquired:
467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   APP_DPRINT( "%d :: App: Component OMX_EventResourcesAcquired = %d\n", __LINE__,eEvent);
468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           writeValue = 1;
469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           preempted=0;
471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   break;
473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       default:
474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT( "%d :: App: Exiting EventHandler \n", __LINE__);
479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	return eError;
480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*    OutputFrames = pBuffer->pOutputPortPrivate;
487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    printf("Receiving %d Frames\n",OutputFrames->nFrames);*/
488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (GT_FlagF == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		GT_END("Call to FillBufferDone  <First: FillBufferDone>");
492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        GT_FlagF = 0 ;   /* 1 = First Buffer,  0 = Not First Buffer  */
493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (!preempted)
500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (GT_FlagE == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>");
506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	  GT_FlagE = 0;   /* 1 = First Buffer,  0 = Not First Buffer  */
507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint main(int argc, char* argv[])
514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CALLBACKTYPE AmrCaBa = {(void *)EventHandler,
516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				(void*)EmptyBufferDone,
517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                (void*)FillBufferDone};
518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE pHandle;
519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 AppData = NBAMRENC_APP_ID;
521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct;
522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_AUDIO_PARAM_AMRTYPE *pAmrParam;
523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pComponent;
524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE state;
525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pInputBufferHeader[NBAPP_MAX_NUM_OF_BUFS];
526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pOutputBufferHeader[NBAPP_MAX_NUM_OF_BUFS];
527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    bInvalidState=OMX_FALSE;
528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER
529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8* pInputBuffer[NBAPP_MAX_NUM_OF_BUFS];
530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_U8* pOutputBuffer[NBAPP_MAX_NUM_OF_BUFS];
531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	TI_OMX_DSP_DEFINITION* audioinfo;
533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	FILE* fIn = NULL;
534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	FILE* fOut = NULL;
535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timeval tv;
536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int retval, i, j, k, kk, tcID = 0;
537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int frmCount = 0;
538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int frmCnt = 1;
539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int testcnt = 0;
540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int testcnt1 = 0;
541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int status = 0;
542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int fdmax = 0;
543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nFrameCount = 1;
544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nFrameLen = 0;
545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nOutBuff = 1;
546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int NoDataRead=0;
547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_INDEXTYPE index;
548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   	OMX_U32	streamId;
549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   	int numInputBuffers=0,numOutputBuffers=0;
550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    TI_OMX_DATAPATH dataPath;
551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int FrameMode=0;
552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint nbamrencdfwrite;
553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint nbamrencfdread;
554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_AUDIO_CONFIG_VOLUMETYPE* pCompPrivateStructGain = NULL;
556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    srand ( time(NULL) );
557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_init(&WaitForState_mutex, NULL);
559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_init (&WaitForState_threshold, NULL);
560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    WaitForState_flag = 0;
561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("------------------------------------------------------\n");
563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("This is Main Thread In NBAMR ENCODER Test Application:\n");
564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n");
565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("------------------------------------------------------\n");
566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("Line %d\n",__LINE__);
569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      GTeError = OMX_ListCreate(&pListHead);
570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("Line %d\n",__LINE__);
571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      APP_IPRINT("eError = %d\n",GTeError);
572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      GT_START();
573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  APP_IPRINT("Line %d\n",__LINE__);
574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* check the input parameters */
577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((argc < 14) || (argc > 15)) {
578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: Usage: [TestApp] [O/P] [FUNC_ID_X] [FM/DM] [NBAMR/EFR] [BITRATE] [DTXON/OFF] [NONMIME/MIME/IF2] [ACDNON/OFF] [FRAMES] [1 to N] [1 to N] [MFON] [1 to N (optional)]\n",__LINE__);
579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* check to see that the input file exists */
583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct stat sb = {0};
584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    status = stat(argv[1], &sb);
585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( status != 0 ) {
586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("Cannot find file %s. (%u)\n", argv[1], errno);
587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Open the file of data to be encoded. */
591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    fIn = fopen(argv[1], "r");
592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( fIn == NULL ) {
593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("Error:  failed to open the input file %s\n", argv[1]);
594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Open the file of data to be written. */
597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    fOut = fopen(argv[2], "w");
598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( fOut == NULL ) {
599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("Error:  failed to open the output file %s\n", argv[2]);
600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!strcmp(argv[3],"FUNC_ID_1")) {
604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing TESTCASE 1 PLAY TILL END ###\n",__LINE__);
605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt = 1;
606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt1 = 1;
607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 1;
608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } else if(!strcmp(argv[3],"FUNC_ID_2")) {
609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing TESTCASE 2 STOP IN THE END ###\n",__LINE__);
610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt = 1;
611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt1 = 1;
612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 2;
613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } else if(!strcmp(argv[3],"FUNC_ID_3")) {
614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing TESTCASE 3 PAUSE - RESUME IN BETWEEN ###\n",__LINE__);
615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt = 1;
616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt1 = 1;
617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 3;
618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } else if(!strcmp(argv[3],"FUNC_ID_4")) {
619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing TESTCASE 4 STOP IN BETWEEN ###\n",__LINE__);
620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt = 2;
621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt1 = 1;
622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 4;
623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("######## testcnt = %d #########\n",testcnt);
624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!strcmp(argv[3],"FUNC_ID_5")){
626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing TESTCASE 5 ENCODE without Deleting component Here ###\n",__LINE__);
627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (argc == 15)
628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testcnt = atoi(argv[14]);
630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testcnt = STRESS_TEST_ITERATIONS;  /*20 cycles by default*/
634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt1 = 1;
636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 5;
637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!strcmp(argv[3],"FUNC_ID_6")) {
639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing TESTCASE 6 ENCODE with Deleting component Here ###\n",__LINE__);
640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (argc == 15)
641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testcnt1 = atoi(argv[14]);
643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testcnt1 = STRESS_TEST_ITERATIONS;  /*20 cycles by default*/
647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt = 1;
649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 6;
650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!strcmp(argv[3],"FUNC_ID_7")) {
652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing TESTCASE 7 ENCODE with Volume Control ###\n",__LINE__);
653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt = 1;
654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt1 = 1;
655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 7;
656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!strcmp(argv[3],"FUNC_ID_8")) {
658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d :: ### Testing PLAY TILL END  WITH TWO FRAMES BY BUFFER###\n",__LINE__);
659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testcnt = 1;
660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        testcnt1 = 1;
661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tcID = 1;
662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        mframe = 1;
663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(j = 0; j < testcnt1; j++) {
665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if((nbamrencdfwrite=open(FIFO1,O_WRONLY))<0) {
668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_IPRINT("[AMRTEST] - failure to open WRITE pipe\n");
669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_IPRINT("[AMRTEST] - opened WRITE pipe\n");
672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((nbamrencfdread=open(FIFO2,O_RDONLY))<0) {
675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_IPRINT("[AMRTEST] - failure to open READ pipe\n");
676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_IPRINT("[AMRTEST] - opened READ pipe\n");
680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Create a pipe used to queue data from the callback. */
685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    retval = pipe(IpBuf_Pipe);
686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( retval != 0) {
687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("Error:Fill Data Pipe failed to open\n");
688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    retval = pipe(OpBuf_Pipe);
692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( retval != 0) {
693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("Error:Empty Data Pipe failed to open\n");
694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	retval = pipe(Event_Pipe);
698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( retval != 0) {
699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    APP_DPRINT( "Error:Empty Event Pipe failed to open\n");
700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    goto EXIT;
701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    }
702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* save off the "max" of the handles for the selct statement */
704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]);
705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	fdmax = maxint(fdmax,Event_Pipe[0]);
706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = TIOMX_Init();
708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: Error returned by OMX_Init()\n",__LINE__);
711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	TI_OMX_STREAM_INFO *streaminfo;
715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_NBAPP_MALLOC_STRUCT(streaminfo, TI_OMX_STREAM_INFO);
716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_NBAPP_MALLOC_STRUCT(audioinfo, TI_OMX_DSP_DEFINITION);
717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_NBAPP_INIT_STRUCT(audioinfo, TI_OMX_DSP_DEFINITION);
718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ArrayOfPointers[0]=(TI_OMX_STREAM_INFO*)streaminfo;
720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ArrayOfPointers[1]=(TI_OMX_DSP_DEFINITION*)audioinfo;
721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(j > 0) {
722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT ("%d :: Encoding the file for %d Time in TESTCASE 6\n",__LINE__,j+1);
723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		fIn = fopen(argv[1], "r");
724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if( fIn == NULL ) {
725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fprintf(stderr, "Error:  failed to open the file %s for read only access\n",argv[1]);
726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		fOut = fopen("TC6_Amr1.amr", "w");
730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if( fOut == NULL ) {
731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fprintf(stderr, "Error:  failed to create the output file %s\n",argv[2]);
732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	 }
735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Load the NBAMR Encoder Component */
737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_GetHandle(&pHandle, strAmrEncoder, &AppData, &AmrCaBa);
742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to GetHandle");
743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = TIOMX_GetHandle(&pHandle, strAmrEncoder, &AppData, &AmrCaBa);
745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((eError != OMX_ErrorNone) || (pHandle == NULL)) {
747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("Error in Get Handle function\n");
748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* Setting No.Of Input and Output Buffers for the Component */
753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	numInputBuffers = atoi(argv[11]);
754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("\n%d :: App: numInputBuffers = %d \n",__LINE__,numInputBuffers);
755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	numOutputBuffers = atoi(argv[12]);
757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("\n%d :: App: numOutputBuffers = %d \n",__LINE__,numOutputBuffers);
758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_NBAPP_MALLOC_STRUCT(pCompPrivateStruct, OMX_PARAM_PORTDEFINITIONTYPE);
761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_NBAPP_CONF_INIT_STRUCT(pCompPrivateStruct, OMX_PARAM_PORTDEFINITIONTYPE);
762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_NBAPP_MALLOC_STRUCT(pAmrParam, OMX_AUDIO_PARAM_AMRTYPE);
763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_NBAPP_CONF_INIT_STRUCT(pAmrParam, OMX_AUDIO_PARAM_AMRTYPE);
764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ArrayOfPointers[2]=(OMX_PARAM_PORTDEFINITIONTYPE*)pCompPrivateStruct;
766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ArrayOfPointers[3] = (OMX_AUDIO_PARAM_AMRTYPE *)pAmrParam;
767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: Setting input port config\n",__LINE__);
769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nSize 							   = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMajor           = 0xF1;
771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMinor 		   = 0xF2;
772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nPortIndex                         = NBAPP_INPUT_PORT;
773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDir                               = OMX_DirInput;
774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountActual                 = numInputBuffers;
775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountMin                    = numInputBuffers;
776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferSize                        = NBAPP_INPUT_BUFFER_SIZE;
777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->bEnabled                           = OMX_TRUE;
778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->bPopulated                         = OMX_FALSE;
779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDomain                            = OMX_PortDomainAudio;
780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.eEncoding             = OMX_AUDIO_CodingAMR;
781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.cMIMEType             = NULL;
782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.pNativeRender         = NULL;
783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.bFlagErrorConcealment = OMX_FALSE;    /*Send input port config*/
784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("%d :: Setting input port config\n",__LINE__);
785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(!(strcmp(argv[8],"NONMIME"))) {
786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStruct->format.audio.cMIMEType = "NONMIME";
787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		FrameMode = 0;
788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatConformance;
789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pCompPrivateStruct->format.audio.cMIMEType --> %s \n",
790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    											__LINE__,pCompPrivateStruct->format.audio.cMIMEType);
791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}else if(!(strcmp(argv[8],"MIME"))) {
792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	pCompPrivateStruct->format.audio.cMIMEType = "MIME";
793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		FrameMode = 1;
794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF;
795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pCompPrivateStruct->format.audio.cMIMEType --> %s \n",
796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    											__LINE__,pCompPrivateStruct->format.audio.cMIMEType);
797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else if(!(strcmp(argv[8],"IF2"))) {
799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	pCompPrivateStruct->format.audio.cMIMEType = "IF2";
800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		FrameMode = 2;
801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatIF2;
802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pCompPrivateStruct->format.audio.cMIMEType --> %s \n",
803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    											__LINE__,pCompPrivateStruct->format.audio.cMIMEType);
804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else {
806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorBadParameter;
807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: Should Be One of these Modes MIME, NONMIME\n",__LINE__);
808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("%d :: Setting input port config\n",__LINE__);
812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*	if(!(strcmp(argv[5],"EFR"))) {
813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXasEFR;
814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pCompPrivateStruct->EFR = %s \n",__LINE__,argv[5]);
816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[5],"NBAMR"))) {
817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXModeOff;
818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pCompPrivateStruct->NBAMR = %s \n",__LINE__,argv[5]);
820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else {
821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorBadParameter;
822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		printf("%d :: App: Should Be One of these Modes EFR, NBAMR\n",__LINE__);
823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(!(strcmp(argv[4],"FM"))) {
828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		audioinfo->dasfMode = 0;
829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		DasfMode = 0;
830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %x \n",__LINE__,audioinfo->dasfMode);
831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[4],"DM"))){
832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 audioinfo->dasfMode =  1;
833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 DasfMode = 1;
834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	 APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %x \n",__LINE__,audioinfo->dasfMode);
835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 APP_DPRINT("%d :: NBAMR ENCODER RUNNING UNDER DASF MODE \n",__LINE__);
836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 pCompPrivateStruct->nBufferCountActual = 0;
837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else if(!(strcmp(argv[4],"TMP"))){
839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 audioinfo->dasfMode =  1;
840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 DasfMode = 1;
841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 audioinfo->teeMode = TEEMODE_PLAYBACK;
842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 TeeMode = TEEMODE_PLAYBACK;
843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	 APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %x \n",__LINE__,audioinfo->dasfMode);
844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 APP_DPRINT("%d :: NBAMR ENCODER RUNNING UNDER DASF MODE \n",__LINE__);
845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 pCompPrivateStruct->nBufferCountActual = 0;
846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else if(!(strcmp(argv[4],"TML"))){
848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 audioinfo->dasfMode =  1;
849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 DasfMode = 1;
850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 		 audioinfo->teeMode = TEEMODE_LOOPBACK;
851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 TeeMode = TEEMODE_LOOPBACK;
852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	 APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %x \n",__LINE__,audioinfo->dasfMode);
853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 APP_DPRINT("%d :: NBAMR ENCODER RUNNING UNDER DASF MODE \n",__LINE__);
854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 pCompPrivateStruct->nBufferCountActual = 0;
855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else if(!(strcmp(argv[4],"TMLP"))){
857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 audioinfo->dasfMode =  1;
858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 		 audioinfo->teeMode = TEEMODE_PLAYLOOPBACK;
859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 DasfMode = 1;
860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 TeeMode = TEEMODE_PLAYLOOPBACK;
861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	 APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %x \n",__LINE__,audioinfo->dasfMode);
862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 APP_DPRINT("%d :: NBAMR ENCODER RUNNING UNDER DASF MODE \n",__LINE__);
863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 pCompPrivateStruct->nBufferCountActual = 0;
864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else {
866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorBadParameter;
867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("\n%d :: App: audioinfo->dasfMode Sending Bad Parameter\n",__LINE__);
868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: Should Be One of these Modes FM, DM\n",__LINE__);
869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(audioinfo->dasfMode == 0) {
873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if((atoi(argv[10])) != 0) {
874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = OMX_ErrorBadParameter;
875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_IPRINT("\n%d :: App: No. of Frames Sending Bad Parameter\n",__LINE__);
876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_IPRINT("%d :: App: For FILE mode argv[10] Should Be --> 0\n",__LINE__);
877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_IPRINT("%d :: App: For DASF mode argv[10] Should be greater than zero depends on number of frames user want to encode\n",__LINE__);
878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else {
881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if((atoi(argv[10])) == 0) {
882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = OMX_ErrorBadParameter;
883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_IPRINT("\n%d :: App: No. of Frames Sending Bad Parameter\n",__LINE__);
884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_IPRINT("%d :: App: For DASF mode argv[10] Should be greater than zero depends on number of frames user want to encode\n",__LINE__);
885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_IPRINT("%d :: App: For FILE mode argv[10] Should Be --> 0\n",__LINE__);
886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(!(strcmp(argv[9],"ACDNOFF"))) {
891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		audioinfo->acousticMode = 0;
892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: audioinfo->acousticMode = %x \n",__LINE__,audioinfo->acousticMode);
893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[9],"ACDNON"))) {
894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		audioinfo->acousticMode = 1;
895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("\n%d :: App: audioinfo->acdnacousticModeMode = %x \n",__LINE__,audioinfo->acousticMode);
896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else {
897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorBadParameter;
898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("\n%d :: App: audioinfo->acdnMode Sending Bad Parameter\n",__LINE__);
899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: Should Be One of these Modes ACDNON, ACDNOFF\n",__LINE__);
900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Set Parameter Test-SetParameter");
906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eError != OMX_ErrorNone) {
910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorBadParameter;
911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__);
912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d :: Setting output port config\n",__LINE__);
915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nSize 							   = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMajor           = 0xF1;
917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMinor 		   = 0xF2;
918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nPortIndex                         = NBAPP_OUTPUT_PORT;
919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDir                               = OMX_DirOutput;
920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountActual                 = numOutputBuffers;
921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountMin                    = numOutputBuffers;
922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferSize                        = NBAPP_OUTPUT_BUFFER_SIZE;
923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->bEnabled                           = OMX_TRUE;
924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->bPopulated                         = OMX_FALSE;
925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDomain                            = OMX_PortDomainAudio;
926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.eEncoding             = OMX_AUDIO_CodingAMR;
927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.cMIMEType             = NULL;
928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.pNativeRender         = NULL;
929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pCompPrivateStruct->format.audio.bFlagErrorConcealment = OMX_FALSE;    /*Send input port config*/
930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Set Parameter Test-SetParameter");
934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eError != OMX_ErrorNone) {
938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorBadParameter;
939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__);
940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nSize                    = sizeof(OMX_AUDIO_PARAM_AMRTYPE);
944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nVersion.s.nVersionMajor = 0xF1;
945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nVersion.s.nVersionMinor = 0xF2;
946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nPortIndex               = NBAPP_OUTPUT_PORT;
947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nChannels                = NBAPP_NUM_OF_CHANNELS;
948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pAmrParam->eAMRBandMode 			= 0;
949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(!(strcmp(argv[6],"BR122"))) {
950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB7;
951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[6],"BR102"))) {
953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB6;
954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[6],"BR795"))) {
956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB5;
957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[6],"BR74"))) {
959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB4;
960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[6],"BR67"))) {
962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB3;
963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[6],"BR59"))) {
965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB2;
966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[6],"BR515"))) {
968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB1;
969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[6],"BR475"))) {
971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRBandMode = OMX_AUDIO_AMRBandModeNB0;
972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode = %d \n",__LINE__,pAmrParam->eAMRBandMode);
973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else {
974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorBadParameter;
975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("\n%d :: App: pAmrParam->eAMRBandMode Sending Bad Parameter\n",__LINE__);
976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: Should Be One of these BitRates BR122, BR102, BR795, BR74, BR67, BR59, BR515, BR475\n",__LINE__);
977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode --> %d \n",__LINE__,pAmrParam->eAMRBandMode);
981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!(strcmp(argv[7],"DTXON"))) {
983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	/**< AMR Discontinuous Transmission Mode is enabled  */
984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXModeOnAuto;
985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__,argv[7]);
986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}else if(!(strcmp(argv[7],"DTXOFF"))) {
987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/**< AMR Discontinuous Transmission Mode is disabled */
988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXModeOff;
989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__,argv[7]);
990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else {
991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorBadParameter;
992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("\n%d :: App: pAmrParam->eAMRDTXMode Sending Bad Parameter\n",__LINE__);
993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: Should Be One of these Modes DTXON, DTXOFF\n",__LINE__);
994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("%d :: Setting input port config\n",__LINE__);
998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(!(strcmp(argv[5],"EFR"))) {
999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXasEFR;
1000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pCompPrivateStruct->EFR = %s \n",__LINE__,argv[5]);
1001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} else if(!(strcmp(argv[5],"NBAMR"))) {
1002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /*Do nothing, leave eAMRDTXMode as specified before*/
1003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pCompPrivateStruct->NBAMR = %s \n",__LINE__,argv[5]);
1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else {
1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorBadParameter;
1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("\n%d :: App: pAmrParam->eAMRDTXMode Sending Bad Parameter\n",__LINE__);
1008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: Should Be One of these Modes NBAMR, EFR\n",__LINE__);
1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_SetParameter (pHandle, OMX_IndexParamAudioAmr, pAmrParam);
1015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Set Parameter Test-SetParameter");
1016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_SetParameter (pHandle, OMX_IndexParamAudioAmr, pAmrParam);
1018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (eError != OMX_ErrorNone) {
1020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorBadParameter;
1021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__);
1022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__);
1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i = 0; i < numInputBuffers; i++) {
1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/* allocate input buffer */
1029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: About to call OMX_AllocateBuffer for pInputBufferHeader[%d]\n",__LINE__, i);
1030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_AllocateBuffer(pHandle, &pInputBufferHeader[i], 0, NULL, NBAPP_INPUT_BUFFER_SIZE*3);/*To allow two frames by buffer*/
1031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(eError != OMX_ErrorNone) {
1032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer for pInputBufferHeader[%d]\n",__LINE__, i);
1033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("\n%d :: App: pCompPrivateStruct->nBufferSize --> %ld \n",__LINE__,pCompPrivateStruct->nBufferSize);
1037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i = 0; i < numOutputBuffers; i++) {
1038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/* allocate output buffer */
1039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: About to call OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i);
1040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_AllocateBuffer(pHandle, &pOutputBufferHeader[i], 1, NULL, NBAPP_OUTPUT_BUFFER_SIZE*3);
1041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(eError != OMX_ErrorNone) {
1042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i);
1043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i = 0; i < numInputBuffers; i++) {
1048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pInputBuffer[i] = (OMX_U8*)newmalloc(NBAPP_INPUT_BUFFER_SIZE*3 + 256);
1049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_MEMPRINT("%d :: [TESTAPP ALLOC] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]);
1050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(NULL == pInputBuffer[i]) {
1051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: Malloc Failed\n",__LINE__);
1052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = OMX_ErrorInsufficientResources;
1053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pInputBuffer[i] = pInputBuffer[i] + 128;
1056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/*	allocate input buffer */
1058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__);
1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_UseBuffer(pHandle, &pInputBufferHeader[i], 0, NULL, NBAPP_INPUT_BUFFER_SIZE*13, pInputBuffer[i]);
1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(eError != OMX_ErrorNone) {
1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i = 0; i < numOutputBuffers; i++) {
1067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pOutputBuffer[i] = newmalloc (NBAPP_OUTPUT_BUFFER_SIZE*3 + 256);
1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_MEMPRINT("%d :: [TESTAPP ALLOC] pOutputBuffer[%d] = %p\n",__LINE__,i,pOutputBuffer[i]);
1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(NULL == pOutputBuffer[i]) {
1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: Malloc Failed\n",__LINE__);
1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = OMX_ErrorInsufficientResources;
1072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pOutputBuffer[i] = pOutputBuffer[i] + 128;
1075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/* allocate output buffer */
1077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__);
1078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_UseBuffer(pHandle, &pOutputBufferHeader[i], 1, NULL, NBAPP_OUTPUT_BUFFER_SIZE*13, pOutputBuffer[i]);
1079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(eError != OMX_ErrorNone) {
1080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
1081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain = newmalloc (sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE));
1088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(pCompPrivateStructGain == NULL)
1089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		{
1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: App: Malloc Failed\n",__LINE__);
1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        ArrayOfPointers[4] = (OMX_AUDIO_CONFIG_VOLUMETYPE*) pCompPrivateStructGain;
1094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/* default setting for gain */
1096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE);
1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->nVersion.s.nVersionMajor	= 0xF1;
1098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->nVersion.s.nVersionMinor	= 0xF2;
1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->nPortIndex					= OMX_DirOutput;
1100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->bLinear						= OMX_FALSE;
1101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->sVolume.nValue				= 50;				/* actual volume */
1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->sVolume.nMin				= 0;				/* min volume */
1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStructGain->sVolume.nMax				= 100;				/* max volume */
1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (audioinfo->acousticMode == OMX_TRUE) {
1106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("Using Acoustic Device Node Path\n");
1107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        dataPath = DATAPATH_ACDN;
1108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (audioinfo->dasfMode) {
1110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RTM_PATH
1111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("Using Real Time Mixer Path\n");
1112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        dataPath = DATAPATH_APPLICATION_RTMIXER;
1113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ETEEDN_PATH
1116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("Using Eteeden Path\n");
1117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (TeeMode == TEEMODE_NONE) {
1118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION;
1119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
1121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION_TEE;
1122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.tispecific",&index);
1127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (eError != OMX_ErrorNone) {
1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("Error returned from OMX_GetExtensionIndex\n");
1129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.hComponent = pHandle;
1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.AM_Cmd = AM_CommandIsInputStreamAvailable;
1135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.param1 = 0;
1137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((write(nbamrencdfwrite, &cmd_data, sizeof(cmd_data)))<0) {
1138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d ::OMX_AmrDecoder.c ::[NBAMR Dec Component] - send command to audio manager\n", __LINE__);
1139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((read(nbamrencfdread, &cmd_data, sizeof(cmd_data)))<0) {
1141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d ::OMX_AmrDecoder.c ::[NBAMR Dec Component] - failure to get data from the audio manager\n", __LINE__);
1142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    audioinfo->streamId = cmd_data.streamID;
1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    streamId = audioinfo->streamId;
1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = OMX_SetConfig (pHandle, index, audioinfo);
1149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorBadParameter;
1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__);
1152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.nbamr.datapath",&index);
1156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (eError != OMX_ErrorNone) {
1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("Error getting extension index\n");
1158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = OMX_SetConfig (pHandle, index, &dataPath);
1162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorBadParameter;
1164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: AmrDecTest.c :: Error from OMX_SetConfig() function\n",__LINE__);
1165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);
1171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("Error from SendCommand-Idle(Init) State function\n");
1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Wait for startup to complete */
1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = WaitForState(pHandle, OMX_StateIdle);
1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateIdle>");
1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Error:  hAmrEncoder->WaitForState reports an eError %X\n", eError);
1184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   if (audioinfo->dasfMode ==  1) {
1188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* get streamID back to application */
1189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.nbamrstreamIDinfo",&index);
1190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     	if (eError != OMX_ErrorNone) {
1191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      		APP_IPRINT("Error getting extension index\n");
1192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        		goto EXIT;
1193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin          	}
1194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	eError = OMX_GetConfig (pHandle, index, streaminfo);
1196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(eError != OMX_ErrorNone) {
1197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            eError = OMX_ErrorBadParameter;
1198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT("%d :: AmrEncTest.c :: Error from OMX_GetConfig() function\n",__LINE__);
1199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
1200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        streamId = streaminfo->streamId;
1203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("***************StreamId=%ld******************\n", streamId);
1204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(i = 0; i < testcnt; i++) {
1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	frmCnt = 1;
1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	nFrameCount = 1;
1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	nOutBuff = 1;
1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(i > 0) {
1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: Encoding the file for %d Time in TESTCASE 5 OR TESTCSE 4\n",__LINE__,i+1);
1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		fIn = fopen(argv[1], "r");
1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(fIn == NULL) {
1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fprintf(stderr, "Error:  failed to open the file %s for readonly access\n", argv[1]);
1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		fOut = fopen("TC5_Amr1.amr", "w");
1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(fOut == NULL) {
1219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fprintf(stderr, "Error:  failed to create the output file %s\n", argv[2]);
1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("%d :: App: Sending OMX_StateExecuting Command\n",__LINE__);
1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
1229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("Error from SendCommand-Executing State function\n");
1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = WaitForState(pHandle, OMX_StateExecuting);
1234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateExecuting>");
1236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Error:  hAmrEncoder->WaitForState reports an eError %X\n", eError);
1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (audioinfo->dasfMode ==  1)
1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: No.of Frames Encoding = %d\n",__LINE__, atoi(argv[10]));
1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponent = (OMX_COMPONENTTYPE *)pHandle;
1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(audioinfo->dasfMode == 0) {
1250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		for (k=0; k < numInputBuffers; k++) {
1251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			OMX_BUFFERHEADERTYPE* pBuffer = pInputBufferHeader[k];
1252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			pBuffer->nFlags=0;
1253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		#ifdef OMX_GETTIME
1254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (k==0)
1255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			{
1256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				GT_FlagE=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				GT_START(); /* Empty Bufffer */
1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		#endif
1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            eError =  send_input_buffer(pHandle, pBuffer, fIn);
1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for (kk = 0; kk < numOutputBuffers; kk++) {
1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: App: Calling FillThisBuffer \n",__LINE__);
1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#ifdef OMX_GETTIME
1267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         if (kk==0)
1268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         {
1269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            GT_FlagF=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            GT_START(); /* Fill Buffer */
1271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#endif
1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pComponent->FillThisBuffer(pHandle, pOutputBufferHeader[kk]);
1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = pComponent->GetState(pHandle, &state);
1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(eError != OMX_ErrorNone) {
1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: pComponent->GetState has returned status %X\n",__LINE__, eError);
1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    retval = 1;
1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef WAITFORRESOURCES
1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    while((eError == OMX_ErrorNone) && (state != OMX_StateIdle) && (state != OMX_StateInvalid) ){
1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(1){
1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    while(1) {
1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((eError == OMX_ErrorNone) && (state != OMX_StateIdle) && (state != OMX_StateInvalid) ){
1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FD_ZERO(&rfds);
1291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FD_SET(IpBuf_Pipe[0], &rfds);
1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FD_SET(OpBuf_Pipe[0], &rfds);
1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		FD_SET(Event_Pipe[0], &rfds);
1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tv.tv_sec = 1;
1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tv.tv_usec = 0;
1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		frmCount++;
1298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        retval = select(fdmax+1, &rfds, NULL, NULL, &tv);
1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(retval == -1) {
1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            perror("select()");
1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT( " :: Error \n");
1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(!retval){
1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              NoDataRead++;
1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              if(NoDataRead==2){
1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                      APP_IPRINT("Stoping component since No data is read from the pipes\n");
1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                      StopComponent(pHandle);
1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                      }
1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              }
1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else{
1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                 NoDataRead=0;
1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             }
1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		switch (tcID) {
1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		case 1:
1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		case 2:
1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		case 3:
1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 4:
1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		case 5:
1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		case 6:
1324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 7:
1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if(audioinfo->dasfMode == 0) {
1326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
1327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					OMX_BUFFERHEADERTYPE* pBuffer;
1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if (frmCount==15 && tcID ==3){ /*Pause the component*/
1330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_IPRINT("App: Pausing Component for 5 Seconds\n");
1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						PauseComponent(pHandle);
1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						sleep(2);
1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_IPRINT("App: Resume Component\n");
1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						PlayComponent(pHandle);
1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if (frmCount==20 && tcID ==4){ /*Stop the component*/
1337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        tcID = 1;
1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						StopComponent(pHandle);
1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						break;
1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					eError =  send_input_buffer(pHandle, pBuffer, fIn);
1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				}
1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			} else {
1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                   if (frmCount==15 && tcID ==3){  /*Pause the component*/
1345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        tcID = 1;
1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_IPRINT("App: Pausing Component for 5 Seconds\n");
1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						PauseComponent(pHandle);
1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						sleep(2);
1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_IPRINT("App: Resume Component\n");
1350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						PlayComponent(pHandle);
1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if (nFrameCount==50 && tcID ==4){ /*Stop the component*/
1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					    APP_IPRINT("Stoping the Component And Starting Again\n");
1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						StopComponent(pHandle);
1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						nFrameCount = 0;
1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						break;
1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if(nFrameCount == 10 && tcID == 7)
1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					{
1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							/* set high gain for record stream */
1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_IPRINT("[NBAMR encoder] --- will set stream gain to high\n");
1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            				pCompPrivateStructGain->sVolume.nValue = 0x8000;
1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							eError = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain);
1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							if (eError != OMX_ErrorNone)
1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							{
1366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								eError = OMX_ErrorBadParameter;
1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								goto EXIT;
1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							}
1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if(nFrameCount == 250 && tcID == 7)
1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					{
1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							/* set low gain for record stream */
1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_IPRINT("[NBAMR encoder] --- will set stream gain to low\n");
1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            				pCompPrivateStructGain->sVolume.nValue = 0x2000;
1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							eError = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain);
1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							if (eError != OMX_ErrorNone)
1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							{
1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								eError = OMX_ErrorBadParameter;
1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								goto EXIT;
1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							}
1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					APP_DPRINT("%d :: NBAMR ENCODER RUNNING UNDER DASF MODE \n",__LINE__);
1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if(nFrameCount == atoi(argv[10])) {
1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						StopComponent(pHandle);
1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					APP_DPRINT("%d :: NBAMR ENCODER READING DATA FROM DASF  \n",__LINE__);
1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				}
1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		break;
1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		default:
1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				APP_DPRINT("%d :: ### Simple DEFAULT Case Here ###\n",__LINE__);
1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if( FD_ISSET(OpBuf_Pipe[0], &rfds) ) {
1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            OMX_BUFFERHEADERTYPE* pBuf;
1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf));
1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT("%d :: App: pBuf->nFilledLen = %ld\n",__LINE__, pBuf->nFilledLen);
1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nFrameLen = pBuf->nFilledLen;
1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(FrameMode==1) { /* Mime Mode */
1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            if(1 == nFrameCount) {
1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                   char MimeHeader[] = {0x23, 0x21, 0x41, 0x4d, 0x52, 0x0a};
1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                   fwrite(MimeHeader, 1, NBAMRENC_MIME_HEADER_LEN, fOut);
1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	               fflush(fOut);
1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                   APP_IPRINT("%d :: App: MIME Supported:: FrameLen = %d\n",__LINE__, nFrameLen);
1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: App: nFrameLen = %d \n",__LINE__, nFrameLen);
1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (nFrameLen != 0) {
1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				APP_DPRINT("%d :: Writing OutputBuffer No: %d to the file nWrite = %d \n",__LINE__, nOutBuff, nFrameLen);
1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				fwrite(pBuf->pBuffer, 1, nFrameLen, fOut);
1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				fflush(fOut);
1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if(pBuf->nFlags == OMX_BUFFERFLAG_EOS) {
1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				   APP_IPRINT("%d :: App: OMX_BUFFERFLAG_EOS is received\n",__LINE__);
1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				   APP_IPRINT("%d :: App: Shutting down ---------- \n",__LINE__);
1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				   StopComponent(pHandle);
1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				   pBuf->nFlags = 0;
1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			else{
1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				nFrameCount++;
1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				nOutBuff++;
1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pComponent->FillThisBuffer(pHandle, pBuf);
1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				APP_DPRINT("%d :: App: pBuf->nFlags = %ld\n",__LINE__, pBuf->nFlags);
1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinif( FD_ISSET(Event_Pipe[0], &rfds) ) {
1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                OMX_U8 pipeContents;
1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                read(Event_Pipe[0], &pipeContents, sizeof(OMX_U8));
1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pipeContents == 0) {
1433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    APP_IPRINT("Test app received OMX_ErrorResourcesPreempted\n");
1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateIdle);
1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				for(i=0; i < numInputBuffers; i++) {
1437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					APP_DPRINT("%d :: App: About to newfree pInputBufferHeader[%d]\n",__LINE__, i);
1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					eError = OMX_FreeBuffer(pHandle, NBAPP_INPUT_PORT, pInputBufferHeader[i]);
1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if((eError != OMX_ErrorNone)) {
1440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__);
1441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						goto EXIT;
1442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				}
1445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				for(i=0; i < numOutputBuffers; i++) {
1447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					APP_DPRINT("%d :: App: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i);
1448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					eError = OMX_FreeBuffer(pHandle, NBAPP_OUTPUT_PORT, pOutputBufferHeader[i]);
1449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if((eError != OMX_ErrorNone)) {
1450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__);
1451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						goto EXIT;
1452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			    }
1455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER
1457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		for(i=0; i < numInputBuffers; i++) {
1459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if(pInputBuffer[i] != NULL){
1460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       		APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]);
1461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pInputBuffer[i] = pInputBuffer[i] - 128;
1462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				newfree(pInputBuffer[i]);
1463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				pInputBuffer[i] = NULL;
1464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                	OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle, OMX_StateLoaded);
1470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateWaitForResources,NULL);
1472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateWaitForResources);
1473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else if (pipeContents == 1) {
1475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    APP_IPRINT("Test app received OMX_ErrorResourcesAcquired\n");
1476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL);
1478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    	for(i = 0; i < numOutputBuffers; i++) {
1479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							/* allocate output buffer */
1480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_DPRINT("%d :: About to call OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i);
1481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							eError = OMX_AllocateBuffer(pHandle, &pOutputBufferHeader[i], 1, NULL, NBAPP_OUTPUT_BUFFER_SIZE*3);
1482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							if(eError != OMX_ErrorNone) {
1483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i);
1484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								goto EXIT;
1485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							}
1486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateIdle);
1489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateExecuting,NULL);
1491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateExecuting);
1492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    rewind(fIn);
1494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    for(i = 0; i < numOutputBuffers; i++) {
1496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						send_input_buffer (pHandle, pOutputBufferHeader[i], fIn);
1497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    }
1498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pipeContents == 2) {
1501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    GT_START();
1504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL);
1507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateIdle);
1508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    GT_END("Call to SendCommand <OMX_StateIdle>");
1511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES
1514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					for(i=0; i < numInputBuffers; i++) {
1515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d :: App: About to newfree pInputBufferHeader[%d]\n",__LINE__, i);
1516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						eError = OMX_FreeBuffer(pHandle, NBAPP_INPUT_PORT, pInputBufferHeader[i]);
1517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if((eError != OMX_ErrorNone)) {
1518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__);
1519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					for(i=0; i < numOutputBuffers; i++) {
1525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d :: App: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i);
1526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						eError = OMX_FreeBuffer(pHandle, NBAPP_OUTPUT_PORT, pOutputBufferHeader[i]);
1527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if((eError != OMX_ErrorNone)) {
1528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__);
1529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				    }
1533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                	OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle, OMX_StateLoaded);
1536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto SHUTDOWN;
1538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            eError = pComponent->GetState(pHandle, &state);
1546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(eError != OMX_ErrorNone) {
1547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                APP_DPRINT("%d :: pComponent->GetState has returned status %X\n",__LINE__, eError);
1548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
1549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }
1552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else if (preempted) {
1553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                sched_yield();
1554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else {
1556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto SHUTDOWN;
1557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } /* While Loop Ending Here */
1560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_IPRINT("%d :: App: The current state of the component = %d \n",__LINE__,state);
1561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	fclose(fOut);
1562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	fclose(fIn);
1563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FirstTime = 1;
1564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        NoDataRead = 0;
1565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(tcID == 4)
1566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    tcID =1;
1567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d :: App: NBAMR Encoded = %d Frames \n",__LINE__,(nOutBuff));
1568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } /*Test Case 4 & 5 Inner for loop ends here  */
1569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* newfree the Allocate and Use Buffers */
1571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("%d :: App: Freeing the Allocate OR Use Buffers in TestApp\n",__LINE__);
1572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < numInputBuffers; i++) {
1573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: App: About to newfree pInputBufferHeader[%d]\n",__LINE__, i);
1574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_FreeBuffer(pHandle, NBAPP_INPUT_PORT, pInputBufferHeader[i]);
1575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if((eError != OMX_ErrorNone)) {
1576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__);
1577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pInputBufferHeader[i] = NULL;
1580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < numOutputBuffers; i++) {
1583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: App: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i);
1584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_FreeBuffer(pHandle, NBAPP_OUTPUT_PORT, pOutputBufferHeader[i]);
1585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if((eError != OMX_ErrorNone)) {
1586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__);
1587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pOutputBufferHeader[i] = NULL;
1590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER
1593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* newfree the App Allocated Buffers */
1594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("%d :: App: Freeing the App Allocated Buffers in TestApp\n",__LINE__);
1595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < numInputBuffers; i++) {
1597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(pInputBuffer[i] != NULL){
1598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]);
1599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        pInputBuffer[i] = pInputBuffer[i] - 128;
1600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			newfree(pInputBuffer[i]);
1601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			pInputBuffer[i] = NULL;
1602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < numOutputBuffers; i++) {
1606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(pOutputBuffer[i] != NULL){
1607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    		APP_MEMPRINT("%d :: App: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]);
1608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    	pOutputBuffer[i] = pOutputBuffer[i] - 128;
1609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			newfree(pOutputBuffer[i]);
1610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			pOutputBuffer[i] = NULL;
1611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT ("%d :: App: Sending the OMX_StateLoaded Command\n",__LINE__);
1616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d:: Error from SendCommand-Idle State function\n",__LINE__);
1622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = WaitForState(pHandle, OMX_StateLoaded);
1625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateLoaded>");
1627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if ( eError != OMX_ErrorNone ){
1629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("Error: WaitForState has timed out %d", eError);
1630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT ("%d :: App: Sending the OMX_CommandPortDisable Command\n",__LINE__);
1634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = OMX_SendCommand(pHandle, OMX_CommandPortDisable, -1, NULL);
1635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d:: Error from SendCommand OMX_CommandPortDisable\n",__LINE__);
1637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES
1642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateWaitForResources, NULL);
1643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
1644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("%d Error from SendCommand-Idle State function\n",__LINE__);
1645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = WaitForState(pHandle, OMX_StateWaitForResources);
1648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* temporarily put this here until I figure out what should really happen here */
1650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    sleep(10);
1651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* temporarily put this here until I figure out what should really happen here */
1652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinSHUTDOWN:
1654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("%d :: App: Freeing the Memory Allocated in TestApp\n",__LINE__);
1656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pAmrParam);
1658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(pAmrParam != NULL){
1659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    newfree(pAmrParam);
1660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    pAmrParam = NULL;
1661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct);
1663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(pCompPrivateStruct != NULL){
1664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		newfree(pCompPrivateStruct);
1665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pCompPrivateStruct = NULL;
1666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,audioinfo);
1668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(audioinfo != NULL){
1669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		newfree(audioinfo);
1670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		audioinfo = NULL;
1671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,streaminfo);
1673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(streaminfo != NULL){
1674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		newfree(streaminfo);
1675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		streaminfo = NULL;
1676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("%d :: App: Closing the Input and Output Pipes\n",__LINE__);
1679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = close (IpBuf_Pipe[0]);
1680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (0 != eError && OMX_ErrorNone == eError) {
1681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorHardware;
1682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: Error while closing IpBuf_Pipe[0]\n",__LINE__);
1683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = close (IpBuf_Pipe[1]);
1686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (0 != eError && OMX_ErrorNone == eError) {
1687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorHardware;
1688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: Error while closing IpBuf_Pipe[1]\n",__LINE__);
1689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = close (OpBuf_Pipe[0]);
1692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (0 != eError && OMX_ErrorNone == eError) {
1693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorHardware;
1694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: Error while closing OpBuf_Pipe[0]\n",__LINE__);
1695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = close (OpBuf_Pipe[1]);
1698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (0 != eError && OMX_ErrorNone == eError) {
1699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorHardware;
1700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: Error while closing OpBuf_Pipe[1]\n",__LINE__);
1701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = close(Event_Pipe[0]);
1705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (0 != eError && OMX_ErrorNone == eError) {
1706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorHardware;
1707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: Error while closing Event_Pipe[0]\n",__LINE__);
1708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	eError = close(Event_Pipe[1]);
1712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (0 != eError && OMX_ErrorNone == eError) {
1713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = OMX_ErrorHardware;
1714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: Error while closing Event_Pipe[1]\n",__LINE__);
1715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("%d :: App: Free the Component handle\n",__LINE__);
1719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Unload the NBAMR Encoder Component */
1720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = TIOMX_FreeHandle(pHandle);
1721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if((eError != OMX_ErrorNone)) {
1722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: Error in Free Handle function\n",__LINE__);
1723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("%d :: App: Free Handle returned Successfully\n",__LINE__);
1726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
1728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.hComponent = pHandle;
1729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.AM_Cmd = AM_Exit;
1730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((write(nbamrencdfwrite, &cmd_data, sizeof(cmd_data)))<0)
1732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_IPRINT("%d ::- send command to audio manager\n",__LINE__);
1733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    close(nbamrencdfwrite);
1735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    close(nbamrencfdread);
1736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	newfree(pCompPrivateStructGain);
1741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} /*Outer for loop ends here */
1743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pthread_mutex_destroy(&WaitForState_mutex);
1745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_destroy(&WaitForState_threshold);
1746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("%d :: *********************************************************************\n",__LINE__);
1748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("%d :: NOTE: An output file %s has been created in file system\n",__LINE__,argv[2]);
1749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("%d :: *********************************************************************\n",__LINE__);
1750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
1751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(bInvalidState==OMX_TRUE)
1752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	{
1753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
1754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = FreeAllResources(pHandle,
1755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								pInputBufferHeader[0],
1756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								pOutputBufferHeader[0],
1757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								numInputBuffers,
1758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								numOutputBuffers,
1759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								fIn,
1760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                fOut);
1761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = FreeAllResources(pHandle,
1763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									pInputBuffer,
1764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									pOutputBuffer,
1765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									numInputBuffers,
1766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									numOutputBuffers,
1767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									fIn,
1768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                    fOut);
1769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
1771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM
1772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_IPRINT("\n-Printing memory not deleted-\n");
1773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(i=0;i<500;i++){
1774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (lines[i]!=0){
1775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             APP_IPRINT(" --->%d Bytes allocated on File:%s Line: %d\n",bytes[i],file[i],lines[i]);
1776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             }
1777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("AMR_Enc test <End>");
1781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_ListDestroy(pListHead);
1782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return eError;
1784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn)
1787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_ERRORTYPE error = OMX_ErrorNone;
1789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;
1790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(FirstTime){
1792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(mframe){
1793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			nRead = fread(pBuffer->pBuffer, 1, NBAPP_INPUT_BUFFER_SIZE*2, fIn);
1794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		else{
1796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			nRead = fread(pBuffer->pBuffer, 1, NBAPP_INPUT_BUFFER_SIZE, fIn);
1797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pBuffer->nFilledLen = nRead;
1799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else{
1801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		memcpy(pBuffer->pBuffer, NextBuffer,nRead);
1802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pBuffer->nFilledLen = nRead;
1803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(mframe){
1806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			nRead = fread(NextBuffer, 1, NBAPP_INPUT_BUFFER_SIZE*2, fIn);
1807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else{
1809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			nRead = fread(NextBuffer, 1, NBAPP_INPUT_BUFFER_SIZE, fIn);
1810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(nRead < NBAPP_INPUT_BUFFER_SIZE && !DasfMode){
1813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#ifdef OMX_GETTIME
1816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		GT_START();
1817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#endif
1818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	error = WaitForState(pHandle, OMX_StateIdle);
1820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#ifdef OMX_GETTIME
1821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		GT_END("Call to SendCommand <OMX_StateIdle>");
1822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#endif
1823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(error != OMX_ErrorNone) {
1824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__);
1825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pBuffer->nFlags = OMX_BUFFERFLAG_EOS;
1830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}else{
1831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin          pBuffer->nFlags = 0;
1832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin          }
1833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(pBuffer->nFilledLen!=0){
1835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	/*APP_DPRINT("pBuffer->nFilledLen %d \n",pBuffer->nFilledLen);*/
1836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	if(pBuffer->nFlags == OMX_BUFFERFLAG_EOS){
1837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                           APP_IPRINT("Sending Last Input Buffer from App\n");
1838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*        APP_DPRINT("Sending %d bytes to Comp\n", pBuffer->nFilledLen);*/
1840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pBuffer->nTimeStamp = rand() % 100;
1841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (!preempted) {
1843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    error = pComponent->EmptyThisBuffer(pHandle, pBuffer);
1844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (error == OMX_ErrorIncorrectStateOperation)
1845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				error = 0;
1846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   	FirstTime=0;
1849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
1850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	return error;
1851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle)
1853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(error != OMX_ErrorNone) {
1860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n");
1861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto EXIT;
1862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error =	WaitForState(pHandle, OMX_StateIdle);
1864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateIdle>");
1866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					fprintf(stderr, "\nError:  hAmrEncoder->WaitForState reports an error %X!!!!!!!\n", error);
1869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					goto EXIT;
1870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
1872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return error;
1873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle)
1876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StatePause, NULL);
1882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(error != OMX_ErrorNone) {
1883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n");
1884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto EXIT;
1885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error =	WaitForState(pHandle, OMX_StatePause);
1887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StatePause>");
1889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					fprintf(stderr, "\nError:  hAmrEncoder->WaitForState reports an error %X!!!!!!!\n", error);
1892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					goto EXIT;
1893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
1895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return error;
1896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle)
1899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateExecuting, NULL);
1905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(error != OMX_ErrorNone) {
1906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n");
1907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto EXIT;
1908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error =	WaitForState(pHandle, OMX_StateExecuting);
1910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateExecuting>");
1912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					fprintf(stderr, "\nError:  hAmrEncoder->WaitForState reports an error %X!!!!!!!\n", error);
1915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					goto EXIT;
1916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
1918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return error;
1919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=================================================================
1922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							Freeing All allocated resources
1924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin==================================================================*/
1926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
1927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources( OMX_HANDLETYPE *pHandle,
1928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferIn,
1929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferOut,
1930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                int NIB, int NOB,
1931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                FILE* fileIn, FILE* fileOut)
1932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_IPRINT("%d::Freeing all resources by state invalid \n",__LINE__);
1934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_ERRORTYPE eError = OMX_ErrorNone;
1935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_U16 i;
1936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < NIB; i++) {
1938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   if(pBufferIn+i!=NULL){
1939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                APP_IPRINT("%d :: APP: About to newfree pInputBufferHeader[%d]\n",__LINE__, i);
1940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		        eError = OMX_FreeBuffer(pHandle, OMX_DirInput, pBufferIn+i);
1941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
1942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < NOB; i++) {
1947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin          if(pBufferOut+i!=NULL){
1948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   APP_IPRINT("%d :: APP: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i);
1949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   eError = OMX_FreeBuffer(pHandle, OMX_DirOutput, pBufferOut+i);
1950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
1951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/*i value is fixed by the number calls to newmalloc in the App */
1954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i<5;i++)
1955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	{
1956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (ArrayOfPointers[i] != NULL)
1957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			newfree(ArrayOfPointers[i]);
1958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	TIOMX_FreeHandle(pHandle);
1961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	return eError;
1963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=================================================================
1967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							Freeing the resources with USE_BUFFER define
1969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin==================================================================*/
1971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources(OMX_HANDLETYPE *pHandle,
1974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							OMX_U8* UseInpBuf[],
1975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							OMX_U8* UseOutBuf[],
1976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							int NIB,int NOB,
1977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							FILE* fileIn, FILE* fileOut)
1978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		OMX_ERRORTYPE eError = OMX_ErrorNone;
1981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		OMX_U16 i;
1982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_IPRINT("%d::Freeing all resources by state invalid \n",__LINE__);
1983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	/* newfree the UseBuffers */
1984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    for(i=0; i < NIB; i++) {
1985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   UseInpBuf[i] = UseInpBuf[i] - 128;
1986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   APP_IPRINT("%d :: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,(UseInpBuf[i]));
1987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   if(UseInpBuf[i] != NULL){
1988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  newfree(UseInpBuf[i]);
1989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  UseInpBuf[i] = NULL;
1990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   }
1991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    for(i=0; i < NOB; i++) {
1994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   UseOutBuf[i] = UseOutBuf[i] - 128;
1995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   APP_IPRINT("%d :: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, UseOutBuf[i]);
1996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   if(UseOutBuf[i] != NULL){
1997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  newfree(UseOutBuf[i]);
1998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  UseOutBuf[i] = NULL;
1999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   }
2000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/*i value is fixed by the number calls to newmalloc in the App */
2003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		for(i=0; i<4;i++)
2004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		{
2005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (ArrayOfPointers[i] != NULL)
2006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				newfree(ArrayOfPointers[i]);
2007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		OMX_FreeHandle(pHandle);
2010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		return eError;
2012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2016