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 PcmEncTest.c
26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* This file implements Test for PCM encoder OMX Component, which is fully
28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* compliant with the Khronos 1.0 specification.
29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @path  $(CSLPATH)\
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*! 24-Jan-2006 rg:  Initial Version. Change required per OMAPSWxxxxxxxxx
39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! to provide _________________.
40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*!
41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ============================================================================= */
42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <unistd.h>
44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdlib.h>
45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/ioctl.h>
46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/select.h>
47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <string.h>
48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h>
49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <fcntl.h>
50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <errno.h>
51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <linux/vt.h>
52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <signal.h>
53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/stat.h>
54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Index.h>
56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Types.h>
57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Component.h>
58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Core.h>
59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Audio.h>
60b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/*#include <TIDspOmx.h>*/
61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h>
63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h>
64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <linux/soundcard.h>
65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <AudioManagerAPI.h>
67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <time.h>
69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Common_Utils.h>
71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_GetTime.h>     /*Headers for Performance & measuremet    */
72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFILE *fpRes;
75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**flush*/
76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint num_flush = 0;
77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint nNextFlushFrame = 100;
78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/***/
79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_AMRDEC_NonMIME 0
81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MIME_HEADER_LEN 6
82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_DEBUG
84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_MEMCHECK
85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define DASF 1
86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef USE_BUFFER
87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUG
89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_DPRINT(...)
92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_MEMCHECK
95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_MEMPRINT(...)    fprintf(stderr,__VA_ARGS__)
96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define APP_MEMPRINT(...)
98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Borrowed from http://www.dtek.chalmers.se/groups/dvd/dist/oss_audio.c */
101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* AFMT_AC3 is really IEC61937 / IEC60958, mpeg/ac3/dts over spdif */
102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef AFMT_AC3
103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define AFMT_AC3        0x00000400  /* Dolby Digital AC3 */
104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef AFMT_S32_LE
106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define AFMT_S32_LE     0x00001000  /* 32/24-bits, in 24bit use the msbs */
107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef AFMT_S32_BE
109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define AFMT_S32_BE     0x00002000  /* 32/24-bits, in 24bit use the msbs */
110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO1 "/dev/fifo.1"
114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO2 "/dev/fifo.2"
115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def    OUTPUT_WBAMRDEC_BUFFER_SIZE   Default output buffer size
120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OUTPUT_WBAMRDEC_BUFFER_SIZE 640
124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def    INPUT_WBAMRDEC_BUFFER_SIZE   Default input buffer size
128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define INPUT_WBAMRDEC_BUFFER_SIZE 116
132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def    APP_DEBUGMEM    This Macro turns On the logic to detec memory
136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                         leaks on the App. To debug the component,
137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                         WBAMRDEC_DEBUGMEM must be defined.
138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_DEBUGMEM
141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#define APP_DEBUGMEM*/
142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM
145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid *arr[500];
146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint lines[500];
147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint bytes[500];
148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinchar file[500][50];
149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint ind=0;
150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newmalloc(x) mymalloc(__LINE__,__FILE__,x)
152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newfree(z) myfree(z,__LINE__,__FILE__)
153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid * mymalloc(int line, char *s, int size);
155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint myfree(void *dp, int line, char *s);
156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newmalloc(x) malloc(x)
160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newfree(z) free(z)
161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  OMX_ERRORTYPE eError = OMX_ErrorNone;
166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  int GT_FlagE = 0;  /* Fill Buffer 1 = First Buffer,  0 = Not First Buffer  */
167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  int GT_FlagF = 0;  /*Empty Buffer  1 = First Buffer,  0 = Not First Buffer  */
168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  static OMX_NODE* pListHead = NULL;
169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinenum
172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    NEXT_BITRATE_UNCHANGED = 0,
174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    NEXT_BITRATE_CHANGED
175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin};
176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum
178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    MIME_NO_SUPPORT = 0,
180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    MIME_SUPPORTED
181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}MIME_Settings;
182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */
185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** WBAMRDEC_BUFDATA
186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  @param  nFrames           # of Frames processed on the Output Buffer.
188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*  ==================================================================== */
191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct WBAMRDEC_BUFDATA {
192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_U8 nFrames;
193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}WBAMRDEC_BUFDATA;
194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint GetInfoFromBufferHeader(unsigned char **pBufPtr, int *pCurBitRate,
196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                int *pNextBitRateFlag);
197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid ResetBufferPointers(unsigned char **pBuffer);
199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint maxint(int a, int b);
200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*int gMimeFlag = 0;*/
202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_S16 WBAmrFrameFormat = 0;
203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint gStateNotifi = 0;
204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint gState;
205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint inputPortDisabled = 0;
206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint outputPortDisabled = 0;
207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint alternate = 0;
208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint numRead;
209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint cnn=1;
210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint cnnn=1;
211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint testCaseNo = 0;
212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 NextBuffer[INPUT_WBAMRDEC_BUFFER_SIZE*3];
213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 TempBuffer[INPUT_WBAMRDEC_BUFFER_SIZE];
214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef  WAITFORRESOURCES
216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_mutex_t WaitForState_mutex;
217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_cond_t  WaitForState_threshold;
218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8          WaitForState_flag;
219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8      TargetedState;
220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**flush*/
221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_mutex_t WaitForOUTFlush_mutex;
222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_cond_t  WaitForOUTFlush_threshold;
223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_mutex_t WaitForINFlush_mutex;
224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_cond_t  WaitForINFlush_threshold;
225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*****/
226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FirstTime = 1;
227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint nRead=0;
228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_BOOL bInvalidState;
229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid* ArrayOfPointers[6];
230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinWBAMRDEC_BUFDATA* OutputFrames;
231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAM_COMMANDDATATYPE cmd_data;
234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint fill_data (OMX_U8 *pBuf, int mode, FILE *fIn);
236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources( OMX_HANDLETYPE *pHandle,
239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferIn,
240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferOut,
241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                int NIB, int NOB,
242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                FILE* fIn, FILE* fOut);
243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint  FreeAllResources(OMX_HANDLETYPE *pHandle,
245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  OMX_U8* UseInpBuf[],
246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  OMX_U8* UseOutBuf[],
247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  int NIB, int NOB,
248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						  FILE* fIn, FILE* fOut);
249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum COMPONENTS {
251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    COMP_1,
252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    COMP_2
253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}COMPONENTS;
254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid ConfigureAudio();
255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_STRING strAmrEncoder = "OMX.TI.WBAMR.decode";
257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint IpBuf_Pipe[2];
258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint OpBuf_Pipe[2];
259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint Event_Pipe[2];
260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint preempted = 0;
262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer (OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn);
264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle);
265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle);
266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle);
267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinfd_set rfds;
269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_S16 dasfmode = 0;
271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* safe routine to get the maximum of 2 integers */
273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint maxint(int a, int b)
274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         return (a>b) ? a : b;
276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* This method will wait for the component to get to the state
279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * specified by the DesiredState input. */
280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle,
281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  OMX_STATETYPE DesiredState)
282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     OMX_STATETYPE CurState = OMX_StateInvalid;
284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     OMX_ERRORTYPE eError = OMX_ErrorNone;
285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;
286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     eError = pComponent->GetState(pHandle, &CurState);
287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     if (CurState == OMX_StateInvalid && bInvalidState == OMX_TRUE)
288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	 {
289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		 	eError = OMX_ErrorInvalidState;
290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	 }
291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(CurState != DesiredState){
293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        WaitForState_flag = 1;
294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        TargetedState = DesiredState;
295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_mutex_lock(&WaitForState_mutex);
296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_cond_wait(&WaitForState_threshold, &WaitForState_mutex);/*Going to sleep till signal arrives*/
297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_mutex_unlock(&WaitForState_mutex);
298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	return eError;
301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn EventHandler() description for SendCommand
306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEventHandler().
307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinApp event handler
308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  @see         OMX_Core.h
310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE EventHandler(
314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_HANDLETYPE hComponent,
315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_PTR pAppData,
316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_EVENTTYPE eEvent,
317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_U32 nData1,
318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_U32 nData2,
319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_PTR pEventData)
320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)hComponent;
323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_STATETYPE state;
324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_ERRORTYPE eError;
325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   OMX_U8 writeValue;
327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUG
329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   int iComp = *((int *)(pAppData));
330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   eError = pComponent->GetState (hComponent, &state);
332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   if(eError != OMX_ErrorNone) {
333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       APP_DPRINT("%d :: App: Error returned from GetState\n",__LINE__);
334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   switch (eEvent) {
337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventCmdComplete:
338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	   	  /**flush*/
339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (nData1 == OMX_CommandFlush){
340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            if(nData2 == 0){
341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	                pthread_mutex_lock(&WaitForINFlush_mutex);
342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	                pthread_cond_signal(&WaitForINFlush_threshold);
343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	                pthread_mutex_unlock(&WaitForINFlush_mutex);
344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            }
345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            if(nData2 == 1){
346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	                pthread_mutex_lock(&WaitForOUTFlush_mutex);
347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	                pthread_cond_signal(&WaitForOUTFlush_threshold);
348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	                pthread_mutex_unlock(&WaitForOUTFlush_mutex);
349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            }
350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        }
351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/****/
352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           APP_DPRINT ( "%d :: App: Component State Changed To %d\n", __LINE__,state);
353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (nData1 == OMX_CommandPortDisable) {
355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (nData2 == OMX_DirInput) {
356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				inputPortDisabled = 1;
357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (nData2 == OMX_DirOutput) {
359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				outputPortDisabled = 1;
360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if ((nData1 == OMX_CommandStateSet) && (TargetedState == nData2) &&
363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            (WaitForState_flag)){
364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            WaitForState_flag = 0;
365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_lock(&WaitForState_mutex);
366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_cond_signal(&WaitForState_threshold);
367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_unlock(&WaitForState_mutex);
368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventError:
372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   if (nData1 == OMX_ErrorInvalidState) {
373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   		bInvalidState =OMX_TRUE;
374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   }
375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   else if(nData1 == OMX_ErrorResourcesPreempted) {
377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            preempted=1;
378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            writeValue = 0;
379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       }
381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       else if (nData1 == OMX_ErrorResourcesLost) {
382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            WaitForState_flag = 0;
383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pthread_mutex_lock(&WaitForState_mutex);
384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pthread_cond_signal(&WaitForState_threshold);/*Sending Waking Up Signal*/
385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pthread_mutex_unlock(&WaitForState_mutex);
386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        }
387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventMax:
390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventMark:
392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES
394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	   case OMX_EventBufferFlag:
395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   APP_DPRINT( "%d :: App: Component OMX_EventBufferFlag = %d\n", __LINE__,eEvent);
396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   writeValue = 2;
397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       case OMX_EventResourcesAcquired:
401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   APP_DPRINT( "%d :: App: Component OMX_EventResourcesAcquired = %d\n", __LINE__,eEvent);
402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   writeValue = 1;
403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           preempted=0;
405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       	   break;
407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       default:
409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	return eError;
412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn FillBufferDone() description for FillBufferDone
416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFillBufferDone().
417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinCalled by the component when an output buffer has been filled
418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  @see         OMX_Core.h
420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT ("APP:::: OUTPUT BUFFER = %p && %p\n",pBuffer, pBuffer->pBuffer);
426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT ("APP:::: pBuffer->nFilledLen = %ld\n",pBuffer->nFilledLen);
427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*    OutputFrames = pBuffer->pOutputPortPrivate;
428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    printf("Receiving output %d Frames\n",OutputFrames->nFrames);*/
429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#ifdef OMX_GETTIME
432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      if (GT_FlagF == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      {
434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        GT_END("Call to FillBufferDone  <First: FillBufferDone>");
435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        GT_FlagF = 0 ;   /* 1 = First Buffer,  0 = Not First Buffer  */
436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      }
437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #endif
438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn EmptyBufferDone() description for EmptyBufferDone
443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEmptyBufferDone().
444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinCalled by the component when an input buffer has been emptied
445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  @see         OMX_Core.h
447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_S16 ret;
453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT ("APP:::: INPUT BUFFER = %p && %p\n",pBuffer, pBuffer->pBuffer);
454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (!preempted)
456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		ret = write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (GT_FlagE == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>");
461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	  GT_FlagE = 0;   /* 1 = First Buffer,  0 = Not First Buffer  */
462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFILE *inputToSN;
468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn main() description for main
472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinmain().
473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinTest app main function
474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  @see         OMX_Core.h
476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint main(int argc, char* argv[])
480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      {
481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CALLBACKTYPE AmrCaBa = {(void *)EventHandler,
484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				(void*)EmptyBufferDone,
485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                (void*)FillBufferDone};
486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE pHandle;
487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 AppData = 100;
489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct;
490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_AUDIO_PARAM_AMRTYPE *pAmrParam;
491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;
492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE state;
493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* TODO: Set a max number of buffers */
494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pInputBufferHeader[10];
495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* TODO: Set a max number of buffers */
496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pOutputBufferHeader[10];
497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pBuf;
498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    bInvalidState=OMX_FALSE;
499b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    /* TI_OMX_DATAPATH dataPath;*/
500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    FILE* fOut = NULL;
501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    FILE* fIn = fopen(argv[1], "r");
502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER
505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8* pInputBuffer[10];
506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8* pOutputBuffer[10];
507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int numInputBuffers = 0;
512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int numOutputBuffers = 0;
513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timeval tv;
514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int retval, i, j,k;
515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int frmCount = 0;
516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int testcnt = 1;
517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	int testcnt1 = 1;
518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_INDEXTYPE index;
519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32	streamId;
520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int count=0;
521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int wbamrdecfdwrite;
523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int wbamrdecfdread;
524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
526b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    /*TI_OMX_DSP_DEFINITION* audioinfo;*/
527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_AUDIO_CONFIG_MUTETYPE* pCompPrivateStructMute = NULL;
528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_AUDIO_CONFIG_VOLUMETYPE* pCompPrivateStructVolume = NULL;
529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
530b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	/*TI_OMX_STREAM_INFO *streaminfo;
531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    streaminfo = newmalloc(sizeof(TI_OMX_STREAM_INFO));
532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	audioinfo = newmalloc(sizeof(TI_OMX_DSP_DEFINITION));
533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d :: [TESTAPPALLOC] audioinfo = %p\n",__LINE__,audioinfo);
535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(NULL == audioinfo) {
536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: Malloc Failed\n",__LINE__);
537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_ErrorInsufficientResources;
538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
540b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ArrayOfPointers[0]=(TI_OMX_STREAM_INFO*)streaminfo;
542b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    ArrayOfPointers[1]=(TI_OMX_DSP_DEFINITION*)audioinfo;*/
543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_init(&WaitForState_mutex, NULL);
545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_init (&WaitForState_threshold, NULL);
546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    WaitForState_flag = 0;
547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/**flush*/
548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pthread_mutex_init(&WaitForOUTFlush_mutex, NULL);
549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_init (&WaitForOUTFlush_threshold, NULL);
550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_init(&WaitForINFlush_mutex, NULL);
551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_init (&WaitForINFlush_threshold, NULL);
552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/*****/
553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("------------------------------------------------------\n");
555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("This is Main Thread In WBAMR DECODER Test Application:\n");
556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n");
557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("------------------------------------------------------\n");
558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    printf("Line %d\n",__LINE__);
561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      GTeError = OMX_ListCreate(&pListHead);
562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf("Line %d\n",__LINE__);
563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      printf("eError = %d\n",GTeError);
564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      GT_START();
565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  printf("Line %d\n",__LINE__);
566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* check the input parameters */
569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((argc < 11) || (argc > 12))
570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf( "Usage:  test infile [outfile]\n");
572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	numInputBuffers = atoi(argv[9]);
576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	numOutputBuffers = atoi(argv[10]);
577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if ( (numInputBuffers < 1) || (numInputBuffers >4)){
579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("%d :: App: ERROR: No. of input buffers not valid (0-4) \n",__LINE__);
580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if ( (numOutputBuffers< 1) || (numOutputBuffers>4)){
584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("%d :: App: ERROR: No. of output buffers not valid (0-4) \n",__LINE__);
585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* check to see that the input file exists */
589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct stat sb = {0};
590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_S16 status = stat(argv[1], &sb);
591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( status != 0 ) {
592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Cannot find file %s. (%u)\n", argv[1], errno);
593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Open the file of data to be rendered. */
597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( fIn == NULL ) {
598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Error:  failed to open the file %s for readonly\access\n", argv[1]);
599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else{
602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         printf("------------\n");
603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("file is %x\n",fIn);
606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*FILE* fOut = NULL;*/
608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        fOut = fopen(argv[2], "w");
609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if( fOut == NULL ) {
610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT( "Error:  failed to create the output file %s\n", argv[2]);
611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Create a pipe used to queue data from the callback. */
615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    retval = pipe(IpBuf_Pipe);
616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( retval != 0) {
617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Error:Fill Data Pipe failed to open\n");
618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    retval = pipe(OpBuf_Pipe);
622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( retval != 0) {
623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	retval = pipe(Event_Pipe);
628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( retval != 0) {
629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    APP_DPRINT( "Error:Empty Event Pipe failed to open\n");
630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    goto EXIT;
631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* save off the "max" of the handles for the selct statement */
634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_S16 fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]);
635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	fdmax = maxint(fdmax,Event_Pipe[0]);
636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = TIOMX_Init();
639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: Error returned by OMX_Init()\n",__LINE__);
642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int command;
645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    command = atoi(argv[6]);
646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    switch (command ) {
648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 1:
649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------\n");
650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Simple PLAY till EOF \n");
651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------\n");
652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 2:
654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------\n");
655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Stop and Play \n");
656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------\n");
657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testcnt = 2;
658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 3:
660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------\n");
661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing PAUSE & RESUME Command\n");
662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------\n");
663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 4:
665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("---------------------------------------------\n");
666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing STOP Command by Stopping In-Between\n");
667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("---------------------------------------------\n");
668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 5:
670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------------------\n");
671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Repeated PLAY without Deleting Component\n");
672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("-------------------------------------------------\n");
673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (argc == 12)
674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                testcnt = atoi(argv[11]);
676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                testcnt = 20;  /*20 cycles by default*/
680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 6:
683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------\n");
684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Repeated PLAY with Deleting Component\n");
685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------\n");
686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if (argc == 12)
687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                testcnt1 = atoi(argv[11]);
689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            else
691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            {
692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                testcnt1 = 20;  /*20 cycles by default*/
693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 7:
696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("----------------------------------------------------------\n");
697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Multiframe with each buffer size = 2 x frameLength\n");
698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("----------------------------------------------------------\n");
699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testCaseNo = 7;
700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 8:
702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Multiframe with each buffer size = 1/2 x frameLength\n");
704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testCaseNo = 8;
706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 9:
708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Multiframe with alternating buffer sizes\n");
710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            testCaseNo = 9;
712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 10:
714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Mute/Unmute for Playback Stream\n");
716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 11:
719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Testing Set Volume for Playback Stream\n");
721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("------------------------------------------------------------\n");
722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        case 12:
724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	printf ("------------------------------------------------------------\n");
725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	printf ("Testing Frame Lost Suport\n");
726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	printf ("------------------------------------------------------------\n");
727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	break;
728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		case 13:
729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   printf ("------------------------------------------------------------\n");
730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   printf ("Testing Ringtone test\n");
731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   printf ("------------------------------------------------------------\n");
732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   testcnt = 10;
733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   break;
734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		dasfmode = atoi(argv[7]);
738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(j = 0; j < testcnt1; j++) {
741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #ifdef DSP_RENDERING_ON
743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((wbamrdecfdwrite=open(FIFO1,O_WRONLY))<0) {
745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf("[AMRTEST] - failure to open WRITE pipe\n");
746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf("[AMRTEST] - opened WRITE pipe\n");
749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((wbamrdecfdread=open(FIFO2,O_RDONLY))<0) {
752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf("[AMRTEST] - failure to open READ pipe\n");
753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf("[AMRTEST] - opened READ pipe\n");
757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#endif
760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(j >= 1) {
762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Decoding the file for %d Time\n",j+1);
763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(IpBuf_Pipe[0]);
764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(IpBuf_Pipe[1]);
765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(OpBuf_Pipe[0]);
766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(OpBuf_Pipe[1]);
767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	APP_DPRINT("file is %x\n",fIn);
768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    /* Create a pipe used to queue data from the callback. */
769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			retval = pipe(IpBuf_Pipe);
770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if( retval != 0) {
771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				APP_DPRINT( "Error:Fill Data Pipe failed to open\n");
772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				goto EXIT;
773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			retval = pipe(OpBuf_Pipe);
776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if( retval != 0) {
777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				goto EXIT;
779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fIn = fopen(argv[1], "r");
781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if( fIn == NULL ) {
782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                fprintf(stderr, "Error:  failed to open the file %s for readonly\
783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   access\n", argv[1]);
784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fOut = fopen(argv[2], "a");
788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if( fOut == NULL ) {
789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                fprintf(stderr, "Error:  failed to create the output file \n");
790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    error = TIOMX_Init();
793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			inputToSN = fopen("outputSecondTime.log","w");
794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		else {
797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			inputToSN = fopen("outputFirstTime.log","w");
798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Load the WBAMR Encoder Component */
801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_GetHandle(&pHandle, strAmrEncoder, &AppData, &AmrCaBa);
806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to GetHandle");
807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error = TIOMX_GetHandle(&pHandle, strAmrEncoder, &AppData, &AmrCaBa);
809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((error != OMX_ErrorNone) || (pHandle == NULL)) {
812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("Error in Get Handle function\n");
813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct = newmalloc (sizeof (OMX_PARAM_PORTDEFINITIONTYPE));
818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (pCompPrivateStruct == 0) {
819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		printf("Malloc failed\n");
820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = -1;
821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ArrayOfPointers[2]=(OMX_PARAM_PORTDEFINITIONTYPE*)pCompPrivateStruct;
824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStructMute = newmalloc (sizeof(OMX_AUDIO_CONFIG_MUTETYPE));
826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(pCompPrivateStructMute == NULL) {
827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         printf("%d :: App: Malloc Failed\n",__LINE__);
828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         goto EXIT;
829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     }
830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     ArrayOfPointers[3] = (OMX_AUDIO_CONFIG_MUTETYPE*)pCompPrivateStructMute;
831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume = newmalloc (sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE));
833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     if(pCompPrivateStructVolume == NULL) {
834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         printf("%d :: App: Malloc Failed\n",__LINE__);
835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         goto EXIT;
836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     }
837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     ArrayOfPointers[4] = (OMX_AUDIO_CONFIG_VOLUMETYPE*)pCompPrivateStructVolume;
838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pCompPrivateStruct);
840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: AmrTest\n",__LINE__);
842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1;
844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2;
845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nPortIndex = OMX_DirInput;
846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_GetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct);
847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Send input port config */
849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!(strcmp(argv[3],"MIME")))
851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        WBAmrFrameFormat = OMX_AUDIO_AMRFrameFormatFSF;
853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if(!(strcmp(argv[3],"NONMIME")))
855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    WBAmrFrameFormat = OMX_AUDIO_AMRFrameFormatConformance;
857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if(!(strcmp(argv[3],"IF2")))
859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		WBAmrFrameFormat = OMX_AUDIO_AMRFrameFormatIF2;
861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else
863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		printf("Enter proper Frame Format Type MIME, NON MIME or IF2\nExit\n");
865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDir = OMX_DirInput;
870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountActual = numInputBuffers;
871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountMin                    = numInputBuffers;
872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferSize = INPUT_WBAMRDEC_BUFFER_SIZE;
873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDomain                            = OMX_PortDomainAudio;
874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingAMR;
875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct);
878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Set Parameter Test-SetParameter");
879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct);
881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (error != OMX_ErrorNone) {
883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_ErrorBadParameter;
884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1;
890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2;
891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nPortIndex = OMX_DirOutput;
892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_GetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct);
893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Send output port config */
895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDir = OMX_DirOutput;
896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountActual = numOutputBuffers;
897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferCountMin                    = numOutputBuffers;
898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->nBufferSize = OUTPUT_WBAMRDEC_BUFFER_SIZE;
899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pCompPrivateStruct->eDomain                            = OMX_PortDomainAudio;
900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(dasfmode )
902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           pCompPrivateStruct->nBufferCountActual = 0;
904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct);
908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Set Parameter Test-SetParameter");
909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct);
911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (error != OMX_ErrorNone) {
913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_ErrorBadParameter;
914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pAmrParam = newmalloc (sizeof (OMX_AUDIO_PARAM_AMRTYPE));
919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pAmrParam);
920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nSize = sizeof (OMX_AUDIO_PARAM_AMRTYPE);
921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nVersion.s.nVersionMajor = 0xF1;
922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nVersion.s.nVersionMinor = 0xF2;
923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nPortIndex = OMX_DirInput;
924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nChannels = 1;
925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nBitRate = 8000;
926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pAmrParam->eAMRBandMode = atoi(argv[5]);
927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode --> %d \n",__LINE__,
928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    												pAmrParam->eAMRBandMode);
929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      ArrayOfPointers[5] = (OMX_AUDIO_PARAM_AMRTYPE *)pAmrParam;
931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for (i=0; i < numInputBuffers; i++) {
935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/* allocate input buffer */
936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__);
937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = OMX_AllocateBuffer(pHandle,&pInputBufferHeader[i],0,NULL,INPUT_WBAMRDEC_BUFFER_SIZE*3);
938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__);
939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(error != OMX_ErrorNone) {
940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        for (i=0; i < numOutputBuffers; i++) {
946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	          /* allocate output buffer */
947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	          APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__);
948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	          printf("About to call OMX_AllocateBuffer\n");
949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	          if ((testCaseNo != 7)&&(testCaseNo != 9))
950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	          error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*1);
951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              else
952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                  error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*2);
953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	          APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__);
954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	          if(error != OMX_ErrorNone) {
955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			      APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			      goto EXIT;
957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		      }
958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    }
959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	printf("%d::USE BUFFER\n",__LINE__);
963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__);
964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for (i=0; i < numInputBuffers; i++) {
966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pInputBuffer[i] = (OMX_U8*)newmalloc(INPUT_WBAMRDEC_BUFFER_SIZE*3 + 256);
967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pInputBuffer[i]);
968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pInputBuffer[i] = pInputBuffer[i] + 128;
969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /* allocate input buffer */
970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__);
971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_UseBuffer(pHandle,&pInputBufferHeader[i],0,NULL,INPUT_WBAMRDEC_BUFFER_SIZE*3,pInputBuffer[i]);
972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__);
973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(error != OMX_ErrorNone) {
974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for (i=0; i < numOutputBuffers; i++) {
980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if ((testCaseNo != 7)&&(testCaseNo != 9)){
981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pOutputBuffer[i]= newmalloc (OUTPUT_WBAMRDEC_BUFFER_SIZE*1 + 256);
982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pOutputBuffer[i]);
983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pOutputBuffer[i] = pOutputBuffer[i] + 128;
984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = OMX_UseBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*1,pOutputBuffer[i]);
985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__);
986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(error != OMX_ErrorNone) {
987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else{
992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pOutputBuffer[i]= newmalloc (OUTPUT_WBAMRDEC_BUFFER_SIZE*2 + 256);
993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pOutputBuffer[i]);
994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pOutputBuffer[i] = pOutputBuffer[i] + 128;
995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = OMX_UseBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*2,pOutputBuffer[i]);
996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__);
997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(error != OMX_ErrorNone) {
998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
1000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!(strcmp(argv[4],"DTXON"))) {
1008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	/**< AMR Discontinuous Transmission Mode is enabled  */
1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXModeOnVAD1;
1010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__,
1011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    												argv[4]);
1012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(!(strcmp(argv[4],"DTXOFF"))) {
1014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/**< AMR Discontinuous Transmission Mode is disabled */
1015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXModeOff;
1016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__,
1017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    												argv[4]);
1018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!(strcmp(argv[4],"WBAMR_EFR"))) {
1021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	/**< DTX as WBAMR_EFR instead of AMR standard  */
1022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXasEFR;
1023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__,
1024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    												argv[4]);
1025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->eAMRFrameFormat = WBAmrFrameFormat;
1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/*if(gMimeFlag == 1){
1030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			pAmrParam->eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF;
1031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else if(gMimeFlag == 0){
1033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			 pAmrParam->eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatConformance;
1034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	else {
1036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			printf("Enter proper MIME mode\n");
1037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			printf("MIME:0\n");
1038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			printf("NON MIME:1\n");
1039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}*/
1041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr,pAmrParam);
1046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Set Parameter Test-SetParameter");
1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr,pAmrParam);
1049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (error != OMX_ErrorNone) {
1051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
1053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nPortIndex = OMX_DirOutput;
1056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nChannels = 1;
1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pAmrParam->nBitRate = 8000;
1058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr,
1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pAmrParam);
1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Set Parameter Test-SetParameter");
1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr,
1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                           pAmrParam);
1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (error != OMX_ErrorNone) {
1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* get TeeDN or ACDN mode */
1074b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	/*audioinfo->acousticMode = atoi(argv[8]);*/
1075b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	/*
1076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (audioinfo->acousticMode == OMX_TRUE) {
1077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf("Using Acoustic Device Node Path\n");
1078b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	dataPath = DATAPATH_ACDN;
1079b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    }*/
1080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (dasfmode) {
1081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RTM_PATH
1082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf("Using Real Time Mixer Path\n");
1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        dataPath = DATAPATH_APPLICATION_RTMIXER;
1084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ETEEDN_PATH
1087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf("Using Eteedn Path\n");
1088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        dataPath = DATAPATH_APPLICATION;
1089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1092b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    /*audioinfo->dasfMode = dasfmode;*/
1093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamrheaderinfo",&index);
1094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (error != OMX_ErrorNone) {
1095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		printf("Error getting extension index\n");
1096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
1100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	cmd_data.hComponent = pHandle;
1101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.AM_Cmd = AM_CommandIsOutputStreamAvailable;
1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* for encoder, using AM_CommandIsInputStreamAvailable */
1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.param1 = 0;
1105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((write(wbamrdecfdwrite, &cmd_data, sizeof(cmd_data)))<0) {
1107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf("%d ::OMX_WbAmrDecoder.c ::[WBAMR Dec Component] - send command to audio manager\n", __LINE__);
1108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((read(wbamrdecfdread, &cmd_data, sizeof(cmd_data)))<0) {
1110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf("%d ::OMX_WbAmrDecoder.c ::[WBAMR Dec Component] - failure to get data from the audio manager\n", __LINE__);
1111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    audioinfo->streamId = cmd_data.streamID;
1115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    streamId = audioinfo->streamId;
1116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1118b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	/*error = OMX_SetConfig (pHandle, index, audioinfo);
1119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__);
1122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1124b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	*/
1125b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    /*error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamr.datapath",&index);
1126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (error != OMX_ErrorNone) {
1127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		printf("Error getting extension index\n");
1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		goto EXIT;
1129b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	}*/
1130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1132b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	/*error = OMX_SetConfig (pHandle, index, &dataPath);
1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT("%d :: AmrDecTest.c :: Error from OMX_SetConfig() function\n",__LINE__);
1136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1137b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    }*/
1138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     /* default setting for Mute/Unmute */
1141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructMute->nSize = sizeof (OMX_AUDIO_CONFIG_MUTETYPE);
1142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructMute->nVersion.s.nVersionMajor    = 0xF1;
1143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructMute->nVersion.s.nVersionMinor    = 0xF2;
1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructMute->nPortIndex                  = OMX_DirInput;
1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructMute->bMute                       = OMX_FALSE;
1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     /* default setting for volume */
1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE);
1149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->nVersion.s.nVersionMajor  = 0xF1;
1150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->nVersion.s.nVersionMinor  = 0xF2;
1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->nPortIndex                = OMX_DirInput;
1152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->bLinear                   = OMX_FALSE;
1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->sVolume.nValue            = 50;               /* actual volume */
1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->sVolume.nMin              = 0;                /* min volume */
1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     pCompPrivateStructVolume->sVolume.nMax              = 100;              /* max volume */
1156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);
1160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("Error from SendCommand-Idle(Init) State function\n");
1162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Wait for startup to complete */
1165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = WaitForState(pHandle, OMX_StateIdle);
1166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateIdle>");
1168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Error:  WaitForState reports an error %X\n", error);
1171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  if (dasfmode) {
1174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	/* get streamID back to application */
1175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     	error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamrstreamIDinfo",&index);
1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin      	if (error != OMX_ErrorNone) {
1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       		printf("Error getting extension index\n");
1178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         		goto EXIT;
1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           	}
1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    printf("***************StreamId=%ld******************\n", streamId);
1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(i = 0; i < testcnt; i++) {
1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(i > 0) {
1184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf ("Decoding the file for %d Time\n",i+1);
1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(IpBuf_Pipe[0]);
1187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(IpBuf_Pipe[1]);
1188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(OpBuf_Pipe[0]);
1189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			close(OpBuf_Pipe[1]);
1190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    /* Create a pipe used to queue data from the callback. */
1192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			retval = pipe(IpBuf_Pipe);
1193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if( retval != 0) {
1194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				APP_DPRINT( "Error:Fill Data Pipe failed to open\n");
1195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				goto EXIT;
1196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			retval = pipe(OpBuf_Pipe);
1199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if( retval != 0) {
1200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
1201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				goto EXIT;
1202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fIn = fopen(argv[1], "r");
1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(fIn == NULL) {
1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                fprintf(stderr, "Error:  failed to open the file %s for readonly access\n", argv[1]);
1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fOut = fopen(argv[2], "a");
1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(fOut == NULL) {
1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                fprintf(stderr, "Error:  failed to create the output file \n");
1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((command == 13)){
1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (i == 0){
1219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			printf ("Basic Function:: Sending OMX_StateExecuting Command\n");
1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			GT_START();
1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    if(error != OMX_ErrorNone) {
1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		        APP_DPRINT ("Error from SendCommand-Executing State function\n");
1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		        goto EXIT;
1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    }
1228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    pComponent = (OMX_COMPONENTTYPE *)pHandle;
1229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    error = WaitForState(pHandle, OMX_StateExecuting);
1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			GT_END("Call to SendCommand <OMX_StateExecuting>");
1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    if(error != OMX_ErrorNone) {
1235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		        APP_DPRINT( "Error:  WaitForState reports an error %X\n", error);
1236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		        goto EXIT;
1237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		    }
1238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}else{
1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		printf ("Basic Function(else):: Sending OMX_StateExecuting Command\n");
1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		GT_START();
1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(error != OMX_ErrorNone) {
1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT ("Error from SendCommand-Executing State function\n");
1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pComponent = (OMX_COMPONENTTYPE *)pHandle;
1250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = WaitForState(pHandle, OMX_StateExecuting);
1252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		GT_END("Call to SendCommand <OMX_StateExecuting>");
1254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(error != OMX_ErrorNone) {
1256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT( "Error:  WaitForState reports an error %X\n", error);
1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for (k=0; k < numInputBuffers; k++) {
1264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#ifdef OMX_GETTIME
1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (k==0)
1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			GT_FlagE=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            GT_START(); /* Empty Bufffer */
1269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	#endif
1271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = send_input_buffer (pHandle, pInputBufferHeader[k], fIn);
1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if (dasfmode == 0) {
1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		for (k=0; k < numOutputBuffers; k++) {
1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		#ifdef OMX_GETTIME
1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (k==0)
1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			{
1280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				GT_FlagF=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				GT_START(); /* Fill Buffer */
1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		#endif
1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			pComponent->FillThisBuffer(pHandle,  pOutputBufferHeader[k]);
1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pComponent->GetState(pHandle, &state);
1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    retval = 1;
1290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef WAITFORRESOURCES
1291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   while( (error == OMX_ErrorNone) && ((state != OMX_StateIdle) || (count < 2))  )
1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(1)
1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   while(1)
1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   {
1298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((eError == OMX_ErrorNone) && (state != OMX_StateIdle) || (count < 2))  )
1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FD_ZERO(&rfds);
1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FD_SET(IpBuf_Pipe[0], &rfds);
1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FD_SET(OpBuf_Pipe[0], &rfds);
1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		FD_SET(Event_Pipe[0], &rfds);
1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tv.tv_sec = 1;
1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        tv.tv_usec = 0;
1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        retval = select(fdmax+1, &rfds, NULL, NULL, &tv);
1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(retval == -1)
1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            perror("select()");
1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_DPRINT ( " : Error \n");
1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            break;
1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (retval == 0)
1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           count++;
1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (count ==3){
1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(command != 13){
1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fprintf(stderr, "Shutting down Since there is nothing else to send nor read---------- \n");
1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			StopComponent(pHandle);
1324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}else{
1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if(i != 9){
1326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				printf("**RING_TONE: Lets play again!\n");
1327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				printf("counter= %d \n",i);
1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				goto my_exit;
1329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}else{
1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				StopComponent(pHandle);
1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				printf("stopcomponent\n");
1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(FD_ISSET(IpBuf_Pipe[0], &rfds)){
1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		OMX_BUFFERHEADERTYPE* pBuffer;
1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		frmCount++;
1341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		pBuffer->nFlags = 0;
1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if( ((2==command) || (4==command) ) && (50 == frmCount)){ /*Stop Tests*/
1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				fprintf(stderr, "Send Stop Command to component ---------- \n");
1345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				StopComponent(pHandle);
1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/**flush*/
1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/*if ((frmCount >= nNextFlushFrame) && (num_flush < 5000)){*/
1350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		/*
1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (frmCount >= nNextFlushFrame){
1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			printf("Flush #%d\n", num_flush++);
1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StatePause, NULL);
1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				fprintf (stderr,"Error from SendCommand-Pasue State function\n");
1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = WaitForState(pHandle, OMX_StatePause);
1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				fprintf(stderr, "Error:  WBAmrDecoder->WaitForState reports an error %X\n", error);
1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				goto EXIT;
1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = OMX_SendCommand(pHandle, OMX_CommandFlush, 0, NULL);
1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_lock(&WaitForINFlush_mutex);
1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_cond_wait(&WaitForINFlush_threshold,
1366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							&WaitForINFlush_mutex);
1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_unlock(&WaitForINFlush_mutex);
1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = OMX_SendCommand(pHandle, OMX_CommandFlush, 1, NULL);
1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_lock(&WaitForOUTFlush_mutex);
1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_cond_wait(&WaitForOUTFlush_threshold,
1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							&WaitForOUTFlush_mutex);
1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pthread_mutex_unlock(&WaitForOUTFlush_mutex);
1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL);
1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				fprintf (stderr,"Error from SendCommand-Executing State function\n");
1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				goto EXIT;
1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            error = WaitForState(pHandle, OMX_StateExecuting);
1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                fprintf(stderr, "Error:  AmrDecoder->WaitForState reports an error %X\n", error);
1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                goto EXIT;
1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fseek(fIn, 0, SEEK_SET);
1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            frmCount = 0;
1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nNextFlushFrame = 5 + 50 * ((rand() * 1.0) / RAND_MAX);
1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf("nNextFlushFrame d= %d\n", nNextFlushFrame);
1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }*/
1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (state == OMX_StateExecuting){/**/
1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			error = send_input_buffer (pHandle, pBuffer, fIn);
1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				if (error != OMX_ErrorNone) {
1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					printf("goto EXIT %d\n",__LINE__);
1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					goto EXIT;
1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				}
1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	     }/**/
1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(3 == command){ /*Pause Test*/
1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if(frmCount == 100) {   /*100 Frames processed */
1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				printf ("Sending Pause command to Codec \n");
1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				PauseComponent(pHandle);
1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				printf("5 secs sleep...\n");
1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				sleep(5);
1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				printf ("Sending Resume command to Codec \n");
1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				PlayComponent(pHandle);
1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        		}
1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		else if ( 10 == command ){	/*Mute and UnMuteTest*/
1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				if(frmCount == 50){
1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					printf("************Mute the playback stream*****************\n");
1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					pCompPrivateStructMute->bMute = OMX_TRUE;
1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioMute, pCompPrivateStructMute);
1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if (error != OMX_ErrorNone)
1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					{
1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_ErrorBadParameter;
1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						goto EXIT;
1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				}
1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				else if(frmCount == 120) {
1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						printf("************Unmute the playback stream*****************\n");
1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						pCompPrivateStructMute->bMute = OMX_FALSE;
1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioMute, pCompPrivateStructMute);
1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if (error != OMX_ErrorNone) {
1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							error = OMX_ErrorBadParameter;
1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		else if ( 11 == command ) { /*Set Volume Test*/
1432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if(frmCount == 35) {
1433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						printf("************Set stream volume to high*****************\n");
1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						pCompPrivateStructVolume->sVolume.nValue = 0x8000;
1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructVolume);
1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if (error != OMX_ErrorNone) {
1437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							error = OMX_ErrorBadParameter;
1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if(frmCount == 120) {
1442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						printf("************Set stream volume to low*****************\n");
1443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						pCompPrivateStructVolume->sVolume.nValue = 0x1000;
1444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructVolume);
1445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if (error != OMX_ErrorNone) {
1446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							error = OMX_ErrorBadParameter;
1447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       else if (command == 12) { /* frame lost test */
1452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	          if(frmCount == 35 || frmCount == 120) {
1453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	             printf("************Sending lost frame*****************\n");
1454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	             error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamr.framelost",&index);
1455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	                 error = OMX_SetConfig(pHandle, index, NULL);
1456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	    	     if (error != OMX_ErrorNone) {
1457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  		             error = OMX_ErrorBadParameter;
1458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  		             goto EXIT;
1459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  		         }
1460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	           }
1461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	  	  	}
1462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if( FD_ISSET(OpBuf_Pipe[0], &rfds) ) {
1465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf));
1466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            if(pBuf->nFlags == OMX_BUFFERFLAG_EOS){
1467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    /*printf("EOS received by App, Stopping the component\n");*/
1468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    pBuf->nFlags = 0;
1469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                   /* StopComponent(pHandle);*/
1470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			/**/fwrite(pBuf->pBuffer, 1, pBuf->nFilledLen, fOut);
1472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fflush(fOut);
1473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (state == OMX_StateExecuting ) {
1474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				pComponent->FillThisBuffer(pHandle, pBuf);
1475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if( FD_ISSET(Event_Pipe[0], &rfds) ) {
1479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                OMX_U8 pipeContents;
1480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                read(Event_Pipe[0], &pipeContents, sizeof(OMX_U8));
1481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            if (pipeContents == 0) {
1482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    printf("Test app received OMX_ErrorResourcesPreempted\n");
1483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateIdle);
1484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					for(i=0; i < numInputBuffers; i++) {
1486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d :: App: About to newfree pInputBufferHeader[%d]\n",__LINE__, i);
1487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_FreeBuffer(pHandle, OMX_DirInput, pInputBufferHeader[i]);
1488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if((error != OMX_ErrorNone)) {
1489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__);
1490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					for(i=0; i < numOutputBuffers; i++) {
1496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d :: App: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i);
1497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_FreeBuffer(pHandle, OMX_DirOutput, pOutputBufferHeader[i]);
1498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if((error != OMX_ErrorNone)) {
1499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__);
1500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				    }
1504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER
1505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		for(i=0; i < numOutputBuffers; i++) {
1507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if(pInputBuffer[i] != NULL){
1508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	       		APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]);
1509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	            pInputBuffer[i] = pInputBuffer[i] - 128;
1510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				newfree(pInputBuffer[i]);
1511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				pInputBuffer[i] = NULL;
1512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                	OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle, OMX_StateLoaded);
1519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateWaitForResources,NULL);
1521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateWaitForResources);
1522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else if (pipeContents == 1) {
1524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    printf("Test app received OMX_ErrorResourcesAcquired\n");
1525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL);
1527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			 		for (i=0; i < numOutputBuffers; i++) {
1528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				          /* allocate output buffer */
1529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				          APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__);
1530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                  error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*2);
1531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				          APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__);
1532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				          if(error != OMX_ErrorNone) {
1533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						      APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
1534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						      goto EXIT;
1535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					      }
1536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				    }
1537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateIdle);
1539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateExecuting,NULL);
1541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle,OMX_StateExecuting);
1542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    rewind(fIn);
1544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    send_input_buffer (pHandle, (OMX_BUFFERHEADERTYPE*)pOutputBufferHeader, fIn);
1546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                }
1547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pipeContents == 2) {
1549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				if(command !=13){
1551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					APP_DPRINT("%d :: AmrDecTest.c :: StopComponent\n",__LINE__);
1552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                     StopComponent(pHandle);
1553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES
1554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					for(i=0; i < numInputBuffers; i++) {
1555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d :: App: About to newfree pInputBufferHeader[%d]\n",__LINE__, i);
1556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_FreeBuffer(pHandle, OMX_DirInput, pInputBufferHeader[i]);
1557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if((error != OMX_ErrorNone)) {
1558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__);
1559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					}
1563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					for(i=0; i < numOutputBuffers; i++) {
1565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						APP_DPRINT("%d :: App: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i);
1566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						error = OMX_FreeBuffer(pHandle, OMX_DirOutput, pOutputBufferHeader[i]);
1567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						if((error != OMX_ErrorNone)) {
1568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__);
1569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							goto EXIT;
1570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						}
1571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				    }
1573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                	OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    WaitForState(pHandle, OMX_StateLoaded);
1576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto SHUTDOWN;
1578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				}else{
1580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				printf("**RING_TONE: !!!!\n");
1581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					if(i != 9){
1582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						printf("**RING_TONE: Lets play again!\n");
1583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						printf("counter= %d \n",i);
1584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		                goto my_exit;
1585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		            }else{
1587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						StopComponent(pHandle);
1588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin						printf("stopcomponent\n");
1589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		            }
1590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				}
1591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              }
1592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            }
1593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        error = pComponent->GetState(pHandle, &state);
1594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              APP_DPRINT("%d:: Warning:  hAmrEncoder->GetState has returned status %X\n",
1596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              																  __LINE__, error);
1597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              goto EXIT;
1598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else if (preempted) {
1601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            sched_yield();
1602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
1604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto SHUTDOWN;
1605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} /* While Loop Ending Here */
1608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-----------------------------------------*/
1609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    printf ("The current state of the component = %d \n",state);
1610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinmy_exit:
1611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    fclose(fOut);
1612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    fclose(fIn);
1613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    FirstTime = 1;
1614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    count=0;
1615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } /*Inner for loop ends here */
1617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* newfree buffers */
1618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for (i=0; i < numInputBuffers; i++) {
1619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader[i]);
1620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if( (error != OMX_ErrorNone)) {
1621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for (i=0; i < numOutputBuffers; i++) {
1626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader[i]);
1627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if( (error != OMX_ErrorNone)) {
1628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	        APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER
1634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/* newfree the App Allocated Buffers */
1636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	printf("%d :: App: Freeing the App Allocated Buffers in TestApp\n",__LINE__);
1637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < numInputBuffers; i++) {
1638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(pInputBuffer[i] != NULL){
1639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]);
1640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    	pInputBuffer[i] = pInputBuffer[i] - 128;
1641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			newfree(pInputBuffer[i]);
1642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			pInputBuffer[i] = NULL;
1643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < numOutputBuffers; i++) {
1647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if(pOutputBuffer[i] != NULL){
1648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    		APP_MEMPRINT("%d :: App: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]);
1649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    	pOutputBuffer[i] = pOutputBuffer[i] - 128;
1650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			newfree(pOutputBuffer[i]);
1651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			pOutputBuffer[i] = NULL;
1652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
1654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	printf ("Sending the StateLoaded Command\n");
1657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
1660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("%d:: Error from SendCommand-Idle State function\n",__LINE__);
1664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = WaitForState(pHandle, OMX_StateLoaded);
1667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateLoaded>");
1669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT( "Error:  WaitForState reports an error %X\n", error);
1672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error = OMX_SendCommand(pHandle, OMX_CommandPortDisable, -1, NULL);
1676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES
1680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateWaitForResources, NULL);
1681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("%d Error from SendCommand-Idle State function\n",__LINE__);
1683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = WaitForState(pHandle, OMX_StateWaitForResources);
1686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* temporarily put this here until I figure out what should really happen here */
1688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    sleep(10);
1689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* temporarily put this here until I figure out what should really happen here */
1690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinSHUTDOWN:
1692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON
1693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	cmd_data.hComponent = pHandle;
1694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    cmd_data.AM_Cmd = AM_Exit;
1695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if((write(wbamrdecfdwrite, &cmd_data, sizeof(cmd_data)))<0)
1697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        printf("%d ::OMX_AmrDecoder.c :: [NBAMR Dec Component] - send command to audio manager\n",__LINE__);
1698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	close(wbamrdecfdwrite);
1699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    close(wbamrdecfdread);
1700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    printf ("Free the Component handle\n");
1702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Unload the WBAMR Encoder Component */
1704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pAmrParam);
1706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    newfree(pAmrParam);
1707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct);
1709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    newfree(pCompPrivateStruct);
1710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStructMute);
1711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    newfree(pCompPrivateStructMute);
1712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStructVolume);
1713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    newfree(pCompPrivateStructVolume);
1714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = TIOMX_FreeHandle(pHandle);
1716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if( (error != OMX_ErrorNone)) {
1718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;
1720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	close(IpBuf_Pipe[0]);
1723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	close(IpBuf_Pipe[1]);
1724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	close(OpBuf_Pipe[0]);
1725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	close(OpBuf_Pipe[1]);
1726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	fclose(inputToSN);
1728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP_DPRINT ("%d:: Free Handle returned Successfully \n\n\n\n",__LINE__);
1729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	} /*Outer for loop ends here */
1731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pthread_mutex_destroy(&WaitForState_mutex);
1733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_destroy(&WaitForState_threshold);
1734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/**flush	*/
1736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pthread_mutex_destroy(&WaitForOUTFlush_mutex);
1737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pthread_cond_destroy(&WaitForOUTFlush_threshold);
1738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pthread_mutex_destroy(&WaitForINFlush_mutex);
1739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	pthread_cond_destroy(&WaitForINFlush_threshold);
1740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/***/
1741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  	error = TIOMX_Deinit();
1743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if( (error != OMX_ErrorNone))
1744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			APP_DPRINT("APP: Error in Deinit Core function\n");
1746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			goto EXIT;
1747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1749b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    /*newfree(audioinfo);
1750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1751b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    newfree(streaminfo);*/
1752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
1756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(bInvalidState==OMX_TRUE)
1757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	{
1758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
1759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = FreeAllResources(pHandle,
1760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								pInputBufferHeader[0],
1761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								pOutputBufferHeader[0],
1762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								numInputBuffers,
1763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								numOutputBuffers,
1764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin								fIn,
1765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                fOut);
1766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
1767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		error = FreeAllResources(pHandle,
1768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									pInputBuffer,
1769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									pOutputBuffer,
1770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									numInputBuffers,
1771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									numOutputBuffers,
1772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin									fIn,
1773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                    fOut);
1774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
1776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM
1777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    printf("\n-Printing memory not deleted-\n");
1778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(i=0;i<500;i++){
1779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (lines[i]!=0){
1780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             printf(" --->%d Bytes allocated on %p File:%s Line: %d\n",bytes[i], arr[i],file[i],lines[i]);
1781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin             }
1782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
1786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("WBAMR_DEC test <End>");
1787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_ListDestroy(pListHead);
1788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
1789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return error;
1790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }
1792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
1794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
1795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn send_input_buffer() description for send_input_buffer
1796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinsend_input_buffer().
1797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinSends input buffer to component
1798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
1799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
1800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
1801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn)
1802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_ERRORTYPE error = OMX_ErrorNone;
1804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;
1805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("*************************\n");
1806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("%d :: pBuffer = %p nRead = %d\n",__LINE__,pBuffer,nRead);
1807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        APP_DPRINT ("*************************\n");
1808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(FirstTime)
1810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        nRead = fill_data (pBuffer->pBuffer, WBAmrFrameFormat, fIn);
1812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pBuffer->nFilledLen = nRead;
1813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
1815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            memcpy(pBuffer->pBuffer, NextBuffer,nRead);
1817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            pBuffer->nFilledLen = nRead;
1818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         nRead = fill_data (NextBuffer, WBAmrFrameFormat, fIn);
1821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         if (WBAmrFrameFormat == OMX_AUDIO_AMRFrameFormatConformance)
1823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         {
1824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if( nRead<numRead )
1825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                      pBuffer->nFlags = OMX_BUFFERFLAG_EOS;
1826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else
1827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                      pBuffer->nFlags = 0;
1828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
1829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else
1831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if( 0 == nRead )
1833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                      pBuffer->nFlags = OMX_BUFFERFLAG_EOS;
1834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                else
1835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                   pBuffer->nFlags = 0;
1836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(pBuffer->nFilledLen!=0)
1839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (pBuffer->nFlags == OMX_BUFFERFLAG_EOS)
1841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    printf("EOS send on last data buffer\n");
1842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                pBuffer->nTimeStamp = rand() % 100;
1844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                error = pComponent->EmptyThisBuffer(pHandle, pBuffer);
1845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                if (error == OMX_ErrorIncorrectStateOperation)
1846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                        error = 0;
1847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        FirstTime=0;
1852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        /*printf("Fin de send_input buffer...");*/
1853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        return error;
1855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */
1858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
1859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn fill_data() description for fill_data
1860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinfill_data().
1861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFills input buffer
1862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
1863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
1864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */
1865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint fill_data (OMX_U8 *pBuf, int mode, FILE *fIn)
1867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
1868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nBytesRead = 0;
1869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    static unsigned long totalRead = 0;
1870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    static int fileHdrReadFlag = 0;
1871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (OMX_AUDIO_AMRFrameFormatConformance == mode)
1873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
1874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         if (!fileHdrReadFlag)
1875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         {
1876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fprintf (stderr, "Reading the file in Frame Format Conformance Mode\n");
1877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fileHdrReadFlag = 1;
1878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
1879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (testCaseNo == 7) {
1881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			numRead = 2*INPUT_WBAMRDEC_BUFFER_SIZE;
1882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		else if (testCaseNo == 8) {
1884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			numRead = INPUT_WBAMRDEC_BUFFER_SIZE/2;
1885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		else if (testCaseNo == 9) {
1887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (alternate == 0) {
1888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				numRead = 2*INPUT_WBAMRDEC_BUFFER_SIZE;
1889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				alternate = 1;
1890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			else {
1892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				numRead = INPUT_WBAMRDEC_BUFFER_SIZE/2;
1893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				alternate = 0;
1894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			}
1895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		else {
1897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			numRead = INPUT_WBAMRDEC_BUFFER_SIZE;
1898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
1899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        nBytesRead = fread(pBuf, 1, numRead , fIn);
1900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if(OMX_AUDIO_AMRFrameFormatFSF == mode)
1904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    { /*Mime Mode*/
1905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        static const unsigned char FrameLength[] = {18, 24, 33, 37, 41, 47, 51, 59, 61,6};
1906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        char size = 0;
1907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        int index = 45; /* some invalid value*/
1908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        signed char first_char;
1909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (!fileHdrReadFlag) {
1910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           fprintf (stderr, "Reading the file in MIME Mode\n");
1911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           /* Read the file header */
1912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           if((fgetc(fIn) != 0x23) || (fgetc(fIn) != 0x21) ||
1913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              (fgetc(fIn) != 0x41) || (fgetc(fIn) != 0x4d) ||
1914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              (fgetc(fIn) != 0x52) || (fgetc(fIn) != 0x2d) ||
1915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              (fgetc(fIn) != 0x57) || (fgetc(fIn) != 0x42) ||
1916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              (fgetc(fIn) != 0x0a)) {
1917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                   fprintf(stderr, "Error:  File does not have correct header\n");
1918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           }
1919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           fileHdrReadFlag = 1;
1920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        first_char = fgetc(fIn);
1922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (EOF == first_char) {
1923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fprintf(stderr, "Got EOF character\n");
1924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = 0;
1925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
1926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = (first_char>>3) & 0xf;
1928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((index>=0) && (index<10))
1930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            size = FrameLength[index];
1932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *((OMX_S8*)(pBuf)) = first_char;
1933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = fread(((char*)(pBuf))+1, 1, size - 1, fIn);
1934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead += 1;
1935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else if (index == 14) {
1937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *((char*)(pBuf)) = first_char;
1938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = 1;
1939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else if (index == 15) {
1941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *((char*)(pBuf)) = first_char;
1942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = 1;
1943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        else {
1945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = 0;
1946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fprintf(stderr, "Invalid Index in the frame index1 = %d \n", index);
1947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
1948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if(OMX_AUDIO_AMRFrameFormatIF2 == mode)
1952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {/*IF2*/
1953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        static const OMX_U8 FrameLength[] = {18, 23, 33, 37, 41, 47, 51, 59, 61, 6};/*List of valid IF2 frame length*/
1954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_S8 size = 0;
1955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_S16 index = 45; /* some invalid value*/
1956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_S8 first_char;
1957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (!fileHdrReadFlag) {
1959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           fprintf (stderr, "Reading the file in IF2 Mode\n");
1960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           fileHdrReadFlag = 1;
1961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        first_char = fgetc(fIn);
1964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if (EOF == first_char) {
1965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            fprintf(stderr, "Got EOF character\n");
1966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = 0;
1967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
1968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        index = (first_char>>4) & 0xf;
1970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if((index>=0) && (index<=9))
1971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        {
1972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            size = FrameLength[index];
1973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *((OMX_S8*)(pBuf)) = first_char;
1974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = fread(((OMX_S8*)(pBuf))+1, 1, size - 1, fIn);
1975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead += 1;
1976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		} else if (index == 14) {
1977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *((char*)(pBuf)) = first_char;
1978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = 1;
1979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        } else if (index == 15) {
1980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            *((OMX_S8*)(pBuf)) = first_char;
1981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nBytesRead = 1;
1982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        } else {
1983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            nRead = 0;
1984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            printf("Invalid Index in the frame index2 = %d \n", index);
1985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin            goto EXIT;
1986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
1987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
1992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    totalRead += nBytesRead;
1994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
1995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return nBytesRead;
1996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
1997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
1998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle)
1999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
2001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
2002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
2003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
2005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(error != OMX_ErrorNone) {
2006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n");
2007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto EXIT;
2008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error =	WaitForState(pHandle, OMX_StateIdle);
2010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
2011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateIdle>");
2012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
2014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					fprintf(stderr, "\nError:  WaitForState reports an error %X!!!!!!!\n", error);
2015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					goto EXIT;
2016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return error;
2019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle)
2022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
2024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
2025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
2026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StatePause, NULL);
2028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(error != OMX_ErrorNone) {
2029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    fprintf (stderr,"\nError from SendCommand-Pasue State function!!!!!!\n");
2030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto EXIT;
2031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error =	WaitForState(pHandle, OMX_StatePause);
2033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
2034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StatePause>");
2035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
2037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					fprintf(stderr, "\nError:  WaitForState reports an error %X!!!!!!!\n", error);
2038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					goto EXIT;
2039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return error;
2042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle)
2045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
2047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
2049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_START();
2050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateExecuting, NULL);
2052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(error != OMX_ErrorNone) {
2053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    fprintf (stderr,"\nError from SendCommand-Executing State function!!!!!!!\n");
2054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                    goto EXIT;
2055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	error =	WaitForState(pHandle, OMX_StateExecuting);
2057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME
2058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	GT_END("Call to SendCommand <OMX_StateExecuting>");
2059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(error != OMX_ErrorNone) {
2061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					fprintf(stderr, "\nError:  WaitForState reports an error %X!!!!!!!\n", error);
2062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin					goto EXIT;
2063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT:
2065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    return error;
2066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM
2069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid * mymalloc(int line, char *s, int size)
2070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   void *p;
2072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   int e=0;
2073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   p = malloc(size);
2074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   if(p==NULL){
2075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       printf("Memory not available\n");
2076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       exit(1);
2077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       }
2078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   else{
2079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         while((lines[e]!=0)&& (e<500) ){
2080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin              e++;
2081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         }
2082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         arr[e]=p;
2083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         lines[e]=line;
2084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         bytes[e]=size;
2085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         strcpy(file[e],s);
2086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         printf("Allocating %d bytes on address %p, line %d file %s\n", size, p, line, s);
2087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         return p;
2088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   }
2089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint myfree(void *dp, int line, char *s){
2092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int q;
2093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (dp==NULL){
2094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       printf("Null Memory can not be deleted line: %d  file: %s\n", line, s);
2095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin       return 0;
2096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
2097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    for(q=0;q<500;q++){
2099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        if(arr[q]==dp){
2100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           printf("Deleting %d bytes on address %p, line %d file %s\n", bytes[q],dp, line, s);
2101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           free(dp);
2102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           dp = NULL;
2103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           lines[q]=0;
2104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           strcpy(file[q],"");
2105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin           break;
2106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }
2107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     }
2108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     if(500==q)
2109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin         printf("\n\nPointer not found. Line:%d    File%s!!\n\n",line, s);
2110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin     return 1;
2111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=================================================================
2114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							Freeing All allocated resources
2116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin==================================================================*/
2118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER
2119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources( OMX_HANDLETYPE *pHandle,
2120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferIn,
2121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                OMX_BUFFERHEADERTYPE* pBufferOut,
2122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                int NIB, int NOB,
2123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			                FILE* fileIn, FILE* fileOut)
2124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	printf("%d::Freeing all resources by state invalid \n",__LINE__);
2126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_ERRORTYPE eError = OMX_ErrorNone;
2127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_U16 i;
2128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < NIB; i++) {
2129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   printf("%d :: APP: About to free pInputBufferHeader[%d]\n",__LINE__, i);
2130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   eError = OMX_FreeBuffer(pHandle, OMX_DirInput, pBufferIn+i);
2131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i < NOB; i++) {
2136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   printf("%d :: APP: About to free pOutputBufferHeader[%d]\n",__LINE__, i);
2137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   eError = OMX_FreeBuffer(pHandle, OMX_DirOutput, pBufferOut+i);
2138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/*i value is fixed by the number calls to malloc in the App */
2141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	for(i=0; i<6;i++)
2142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	{
2143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (ArrayOfPointers[i] != NULL)
2144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			free(ArrayOfPointers[i]);
2145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    eError = close (IpBuf_Pipe[0]);
2149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    eError = close (IpBuf_Pipe[1]);
2150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    eError = close (OpBuf_Pipe[0]);
2151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    eError = close (OpBuf_Pipe[1]);
2152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = close (Event_Pipe[0]);
2153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		eError = close (Event_Pipe[1]);
2154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(fileOut != NULL)	/* Could have been closed  previously */
2155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	{
2156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		fclose(fileOut);
2157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		fileOut=NULL;
2158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	if(fileIn != NULL)
2161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	{	fclose(fileIn);
2162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		fileIn=NULL;
2163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	}
2164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	TIOMX_FreeHandle(pHandle);
2166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	return eError;
2168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*=================================================================
2173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							Freeing the resources with USE_BUFFER define
2175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin==================================================================*/
2177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
2178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources(OMX_HANDLETYPE *pHandle,
2180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							OMX_U8* UseInpBuf[],
2181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							OMX_U8* UseOutBuf[],
2182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							int NIB,int NOB,
2183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin							FILE* fileIn, FILE* fileOut)
2184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
2185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		OMX_ERRORTYPE eError = OMX_ErrorNone;
2187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		OMX_U16 i;
2188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		printf("%d::Freeing all resources by state invalid \n",__LINE__);
2189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    	/* free the UseBuffers */
2190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    for(i=0; i < NIB; i++) {
2191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   UseInpBuf[i] = UseInpBuf[i] - 128;
2192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   printf("%d :: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,(UseInpBuf[i]));
2193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   if(UseInpBuf[i] != NULL){
2194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  newfree(UseInpBuf[i]);
2195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  UseInpBuf[i] = NULL;
2196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   }
2197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	    for(i=0; i < NOB; i++) {
2200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   UseOutBuf[i] = UseOutBuf[i] - 128;
2201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   printf("%d :: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, UseOutBuf[i]);
2202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   if(UseOutBuf[i] != NULL){
2203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  newfree(UseOutBuf[i]);
2204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			  UseOutBuf[i] = NULL;
2205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		   }
2206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	/*i value is fixed by the number calls to malloc in the App */
2209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		for(i=0; i<6;i++)
2210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		{
2211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			if (ArrayOfPointers[i] != NULL)
2212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin				free(ArrayOfPointers[i]);
2213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = close (IpBuf_Pipe[0]);
2216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = close (IpBuf_Pipe[1]);
2217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = close (OpBuf_Pipe[0]);
2218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			eError = close (OpBuf_Pipe[1]);
2219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (fileOut != NULL)	/* Could have been closed  previously */
2221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		{
2222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fclose(fileOut);
2223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fileOut=NULL;
2224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		if (fileIn != NULL)
2227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		{	fclose(fileIn);
2228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin			fileIn=NULL;
2229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		}
2230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		OMX_FreeHandle(pHandle);
2232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin		return eError;
2234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
2235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
2237