1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*
3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  Copyright 2001-2008 Texas Instruments - http://www.ti.com/
4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  Licensed under the Apache License, Version 2.0 (the "License");
6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  you may not use this file except in compliance with the License.
7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  You may obtain a copy of the License at
8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *     http://www.apache.org/licenses/LICENSE-2.0
10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  Unless required by applicable law or agreed to in writing, software
12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  distributed under the License is distributed on an "AS IS" BASIS,
13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  See the License for the specific language governing permissions and
15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * limitations under the License.
16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================
18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *             Texas Instruments OMAP(TM) Platform Software
19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  (c) Copyright Texas Instruments, Incorporated.  All Rights Reserved.
20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  Use of this software is controlled by the terms and conditions found
22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  in the license agreement under which this software has been supplied.
23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ================================================================================ */
24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @file G722EncTest.c
26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This File contains the G722 ENCODER OMX tests
28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path  $(OMAPSW_MPU)\linux\audio\src\openmax_il\g722_enc\tests
30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev  0.1
32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* -----------------------------------------------------------------------------
34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *!
35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History
36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! ===================================
37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Date         Author(s)            Version  Description
38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! ---------    -------------------  -------  ---------------------------------
39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 08-Mar-2007  A.Donjon             0.1      Code update for G722 ENCODER
40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 21-Mar-2007  A.Donjon             0.2      Test fwk change for pause and stop cmd
41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *!
42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *!
43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ================================================================================= */
44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*define OMX_GETTIME*/
45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef  WAITFORRESOURCES
47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h>
50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h>
51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h>
52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h>
53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h>
54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h>
55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h>
56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h>
57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/vt.h>
58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h>
59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h>
60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h>
61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h>
62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/soundcard.h>
63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Index.h>
65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Types.h>
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Core.h>
67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Audio.h>
68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <TIDspOmx.h>
69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h>
70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Common_Utils.h>
74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_GetTime.h>     /*Headers for Performance & measuremet    */
75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *fpRes = NULL;
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *outputDebugFile = NULL;
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *fOut= NULL, *fIn = NULL;
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_DEBUG
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_MEMCHECK
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USE_BUFFER
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...)
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_MEMCHECK
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...)    fprintf(stderr,__VA_ARGS__)
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...)
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_NUM_INPUT_BUFFERS 1 /*Component default number of input buffers*/
98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_NUM_OUTPUT_BUFFERS 1 /*Component default number of output buffers*/
99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MIN_INPUT_BUFFER_SIZE 16    /*G722ENC minimum input buffer size in bytes*/
100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MAX_INPUT_BUFFER_SIZE 320   /*G722ENC maximum input buffer size in bytes*/
101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MIN_OUTPUT_BUFFER_SIZE 4    /*G722ENC minimum output buffer size in bytes*/
102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MAX_OUTPUT_BUFFER_SIZE 80   /*G722ENC maximum output buffer size in bytes*/
103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SAMPLING_RATE   16000
104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SAMPLE_SIZE     16
105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_CACHE_ALIGN_MALLOC 256
106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_CACHE_ALIGN_OFFSET 128
107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define strG722Encoder "OMX.TI.G722.encode"
108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1 "/dev/fifo.1"
109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2 "/dev/fifo.2"
110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE eError = OMX_ErrorNone;
113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagE = 0;  /* Fill Buffer 1 = First Buffer,  0 = Not First Buffer  */
114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagF = 0;  /*Empty Buffer  1 = First Buffer,  0 = Not First Buffer  */
115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_NODE* pListHead = NULL;
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Gt_k = 0 ;
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b);
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fill_data (OMX_BUFFERHEADERTYPE *pBuf, FILE *fIn);
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint IpBuf_Pipe[2] = {0};
125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OpBuf_Pipe[2] = {0};
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Event_Pipe[2] = {0};
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint lastbuffer=0;
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint nbInCbPending=0;
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer (OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn);
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinfd_set rfds;
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint done = 0;
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint whileloopdone = 0;
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint preempted = 0;
137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* safe routine to get the maximum of 2 integers */
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b)
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (a>b) ? a : b;
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* This method will wait for the component to get to the state
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * specified by the DesiredState input. */
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle,
148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                  OMX_STATETYPE DesiredState)
149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE CurState = OMX_StateInvalid;
151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nCnt = 0;
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;*/
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    eError = OMX_GetState(pHandle, &CurState);
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    while( (eError == OMX_ErrorNone) && (CurState != DesiredState)  ) {
157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        sched_yield();
158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(nCnt++ == 10) {
159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Still Waiting, press CTL-C to continue\n");
160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_GetState(pHandle, &CurState);
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( eError != OMX_ErrorNone ) return eError;
166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return OMX_ErrorNone;
167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */
171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn EventHandler() description for SendCommand
173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EventHandler().
174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin App event handler
175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         OMX_Core.h
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */
179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE EventHandler(OMX_HANDLETYPE hComponent,OMX_PTR pAppData,OMX_EVENTTYPE eEvent,
180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                           OMX_U32 nData1, OMX_U32 nData2, OMX_PTR pEventData)
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 writeValue = 0;
184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    switch (eEvent)
186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventCmdComplete:
188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* State change notification. Do Nothing */
189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventError:
191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Error notification */
192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(nData1==OMX_ErrorOverflow){
193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("EventHandler: Overflow Error\n");
194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_START();
196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_SendCommand(hComponent,OMX_CommandStateSet, OMX_StateIdle, NULL);
198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone){
199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__);
200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            done = 1;
202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = WaitForState(hComponent, OMX_StateIdle);
203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_END("Call to SendCommand <OMX_StateIdle>");
205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT( "Error:  G722Encoder->WaitForState reports an error %X\n", error);
208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }else if(nData1 == OMX_ErrorResourcesPreempted) {
211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            writeValue = 0;
212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            preempted = 1;
213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventMax:
217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventMark:
218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventPortSettingsChanged:
219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventComponentResumed:
220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventDynamicResourcesAvailable:
221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventPortFormatDetected:
222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventBufferFlag:
223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        writeValue = 2;
224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventResourcesAcquired:
227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        writeValue = 1;
228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        preempted = 0;
229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } /* end of switch */
233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT:
234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return OMX_ErrorNone;
235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */
239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn FillBufferDone() description for FillBufferDone
241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FillBufferDone().
242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Called by the component when an output buffer has been filled
243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         OMX_Core.h
245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */
247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (GT_FlagF == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to FillBufferDone  <First: FillBufferDone>");
254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_FlagF = 0 ;   /* 1 = First Buffer,  0 = Not First Buffer  */
255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */
261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn EmptyBufferDone() description for EmptyBufferDone
263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EmptyBufferDone().
264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Called by the component when an input buffer has been emptied
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         OMX_Core.h
267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */
269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (!preempted)
272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (GT_FlagE == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>");
277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_FlagE = 0;   /* 1 = First Buffer,  0 = Not First Buffer  */
278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */
283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn main() description for main
285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin main().
286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Test app main function
287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         OMX_Core.h
289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */
291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint main(int argc, char* argv[])
292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CALLBACKTYPE PcmCaBa = {(void *)EventHandler,
294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                (void*)EmptyBufferDone,
295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                (void*)FillBufferDone};
296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE pHandle = NULL;
297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 AppData = 100;
299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct = NULL;
300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_ADPCMTYPE *pG722Param = NULL;
301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_COMPONENTTYPE *pComponent = NULL;
302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_CONFIG_VOLUMETYPE* pCompPrivateStructGain = NULL;
303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*OMX_STATETYPE state;*/
304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pInputBufferHeader = NULL;
305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pOutputBufferHeader = NULL;
306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TI_OMX_DATAPATH dataPath;
307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER
309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8* pInputBuffer = NULL;
310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8* pOutputBuffer = NULL;
311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TI_OMX_DSP_DEFINITION *pAppPrivate = NULL;
313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int inBufSize = 0;
314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int outBufSize = 0;
315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 numOutputBuffers = 0;
316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 numInputBuffers = 0;
317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TI_OMX_STREAM_INFO *streaminfo = NULL;
318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_INDEXTYPE index = 0;
319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE testAppState = OMX_StateInvalid;
320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct timeval tv;
322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int retval = 0, i = 0, j = 0;
323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int frmCount = 0;
324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int frmCount1 = 0;
325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int frmCnt = 1;
326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int testcnt = 1;
327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int testcnt1 = 1;
328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nbDASFframes = 0;
329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int fdmax = 0;
330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int testCaseNo = 0;
331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int g722encfdwrite = 0;
333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int g722encfdread = 0;
334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    streaminfo = malloc(sizeof(TI_OMX_STREAM_INFO));
337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pAppPrivate = malloc(sizeof(TI_OMX_DSP_DEFINITION));
338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("------------------------------------------------------\n");
340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("This is Main Thread In G722 ENCODER Test Application:\n");
341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n");
342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("------------------------------------------------------\n");
343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Line %d\n",__LINE__);
345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GTeError = OMX_ListCreate(&pListHead);
346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Line %d\n",__LINE__);
347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("eError = %d\n",GTeError);
348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Line %d\n",__LINE__);
350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if((g722encfdwrite=open(FIFO1,O_WRONLY))<0) {
353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("[G722TEST] - failure to open WRITE pipe\n");
354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else {
356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("[G722TEST] - opened WRITE pipe\n");
357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if((g722encfdread=open(FIFO2,O_RDONLY))<0) {
360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("[G722TEST] - failure to open READ pipe\n");
361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else {
364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("[G722TEST] - opened READ pipe\n");
365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("File = %s, Function = %s, Line = %d\n",__FILE__,__FUNCTION__,__LINE__);
369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if((argc != 11)) {
370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("    =========================================== \n");
371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Usage:  TestApp inFile outFile TestCaseNo nbInSamp nbOutSamp opMode nbInBuf nbOutBuf DASF nbFramesToEncode\n");
372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Example: G722EncTest speeche.pcm output.bit 1 160 40 0 1 1 1 1000\n");
373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("opMode: 0=64kps 1=56kbps 2=48kbps\n");
374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("DASF mode: 1=DASF 0=file-to-file mode\n");
375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("nbFramesToEncode: number of frames to encode in DASF mode\n");
376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* check to see that the input file exists */
380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct stat sb = {0};
381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int status = stat(argv[1], &sb);
382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( status != 0 ) {
383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Cannot find file %s. (%u)\n", argv[1], errno);
384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = TIOMX_Init();
388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: Error returned by TIOMX_Init()\n",__LINE__);
390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    inBufSize = atoi(argv[4])<<1;
394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    outBufSize = atoi(argv[5])<<1;
395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    numInputBuffers = atoi(argv[7]);
397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    numOutputBuffers = atoi(argv[8]);
398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    nbDASFframes = atoi(argv[10]);
400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (atoi(argv[3]) > 0 && atoi(argv[3]) < 7) {
401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        switch (atoi(argv[3])) {
402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        case 1:
403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("Testing Simple RECORD till EOF or predefined frame number\n");
405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            break;
407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        case 2:
408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("Testing RECORD and STOP at predefined frame number\n");
410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            testCaseNo = 2;
412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            break;
413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        case 3:
414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("Testing PAUSE & RESUME Command                    \n");
416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            testCaseNo = 3;
418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            break;
419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        case 4:
420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("Testing Repeated RECORD without Deleting Component\n");
422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            testcnt = 15;
424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            break;
425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        case 5:
426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("Testing Repeated RECORD with Deleting Component   \n");
428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            testcnt1 = 15;
430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            break;
431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        case 6:
432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("Testing Set Volume for record stream \n");
434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------------------------------------------------\n");
435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            break;
436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else {
439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Bad parameter for test case\n");
440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for(j = 0; j < testcnt1; j++) {
444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        whileloopdone = 0;
445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Create the handle of the G722 Encoder Component */
446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /*pHandle = malloc(sizeof(OMX_HANDLETYPE));*/
447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pHandle);
448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = TIOMX_GetHandle(&pHandle, strG722Encoder, &AppData, &PcmCaBa);
451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to GetHandle");
452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = TIOMX_GetHandle(&pHandle, strG722Encoder, &AppData, &PcmCaBa);
454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((error != OMX_ErrorNone) || (pHandle == NULL)) {
456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("Error in Get Handle function\n");
457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Create a pipe used to queue data from the callback. */
461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        retval = pipe(IpBuf_Pipe);
462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( retval != 0) {
463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Error:Fill Data Pipe failed to open\n");
464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        retval = pipe(OpBuf_Pipe);
467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( retval != 0) {
468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        retval = pipe(Event_Pipe);
472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( retval != 0) {
473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* save off the "max" of the handles for the selct statement */
478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]);
479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fdmax = maxint(fdmax,Event_Pipe[0]);
480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (atoi(argv[3]) == 5){
482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("%d :: Encoding the file [%d] Time\n",__LINE__, j+1);
483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (atoi(argv[9]) == 0 || atoi(argv[9]) == 1) {
487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pAppPrivate->dasfMode = atoi(argv[9]);
488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else {
490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Bad value for DASF mode\n");
491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* add to config TeeDN */
494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pAppPrivate->teeMode = 0;
495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct = malloc (sizeof (OMX_PARAM_PORTDEFINITIONTYPE));
496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pCompPrivateStruct);
497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nVersion.s.nVersionMajor = 1;
499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nVersion.s.nVersionMinor = 1;
500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = OMX_DirInput;
501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_GetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct);
502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send input port config */
504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->eDir = OMX_DirInput;
505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->bEnabled = OMX_TRUE;
506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferCountMin = G722ENC_NUM_INPUT_BUFFERS;
507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferSize = inBufSize;
508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingADPCM;
509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = 0x0;
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferCountActual = G722ENC_NUM_INPUT_BUFFERS;
511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->bEnabled = OMX_TRUE;
512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition, pCompPrivateStruct);
515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition, pCompPrivateStruct);
518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__);
522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send output port config */
526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = OMX_DirOutput;
527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->eDir = OMX_DirOutput;
528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->bEnabled = OMX_TRUE;
529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferCountMin = G722ENC_NUM_OUTPUT_BUFFERS;
530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = 0x1;
531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferCountActual =  G722ENC_NUM_OUTPUT_BUFFERS;
532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->bEnabled = OMX_TRUE;
533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferSize = outBufSize;
534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__);
544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param = malloc (sizeof (OMX_AUDIO_PARAM_ADPCMTYPE));
548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pG722Param);
549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nSize = sizeof (OMX_AUDIO_PARAM_ADPCMTYPE);
550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nVersion.s.nVersionMajor = 1;
551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nVersion.s.nVersionMinor = 1;
552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nPortIndex = OMX_DirOutput;
553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nChannels = 1;
554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Codec rate selection */
555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nSampleRate = atoi(argv[6]);
556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((atoi(argv[6])<0)||(atoi(argv[6])>2)){
557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error in input arguments\n");
558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("opMode: 0=64kps 1=56kbps 2=48kbps\n");
559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("opMode set to 64kbps\n");
560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pG722Param->nSampleRate = 0;
561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nBitsPerSample = SAMPLE_SIZE;
563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param);
566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param);
569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__);
573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nPortIndex = OMX_DirInput;
577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG722Param->nSampleRate = SAMPLING_RATE;
578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param);
581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param);
584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__);
588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* setting for stream gain */
592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain = malloc (sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE));
593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pCompPrivateStructGain == NULL)
594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: App: Malloc Failed\n",__LINE__);
596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* default setting for gain */
599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE);
600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->nVersion.s.nVersionMajor    = 0xF1;
601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->nVersion.s.nVersionMinor    = 0xF2;
602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->nPortIndex                  = OMX_DirOutput;
603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->bLinear                     = OMX_FALSE;
604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->sVolume.nValue              = 50;               /* actual volume */
605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->sVolume.nMin                = 0;                /* min volume */
606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain->sVolume.nMax                = 100;              /* max volume */
607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g722headerinfo",&index);
609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error getting extension index\n");
611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_SetConfig(pHandle, index, pAppPrivate);
614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef USE_BUFFER
616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* allocate input buffer */
617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_AllocateBuffer(pHandle,&pInputBufferHeader,0,NULL,inBufSize);
618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* allocate output buffer */
623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader,1,NULL,outBufSize);
624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pInputBuffer = (OMX_U8*)malloc(inBufSize+G722ENC_CACHE_ALIGN_MALLOC);
631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pInputBuffer = pInputBuffer+G722ENC_CACHE_ALIGN_OFFSET;
632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pInputBuffer);
633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* allocate input buffer */
634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_UseBuffer(pHandle,&pInputBufferHeader,0,NULL,inBufSize,pInputBuffer);
635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pOutputBuffer= (OMX_U8*)malloc (outBufSize+G722ENC_CACHE_ALIGN_MALLOC);
640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pOutputBuffer = pOutputBuffer+G722ENC_CACHE_ALIGN_OFFSET;
641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pOutputBuffer);
642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* allocate output buffer */
643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_UseBuffer(pHandle,&pOutputBufferHeader,1,NULL,outBufSize,pOutputBuffer);
644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* get streamID back to application */
651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g722streamIDinfo",&index);
652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error getting extension index\n");
654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetConfig (pHandle, index, streaminfo);
658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: G722EncTest.c :: Error from OMX_GetConfig() function\n",__LINE__);
661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((write(g722encfdwrite, &cmd_data, sizeof(cmd_data)))<0) {
666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((read(g722encfdread, &cmd_data, sizeof(cmd_data)))<0) {
668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetConfig (pHandle, index, pAppPrivate);
673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__);
676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (pAppPrivate->dasfMode) {
680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RTM_PATH
681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION_RTMIXER;
682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef ETEEDN_PATH
685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION;
686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g722.datapath",&index);
690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error getting extension index\n");
692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetConfig (pHandle, index, &dataPath);
695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);
703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("Error from SendCommand-Idle(Init) State function - error = %d\n",error);
705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Wait for startup to complete */
708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = WaitForState(pHandle, OMX_StateIdle);
709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to SendCommand <OMX_StateIdle>");
711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Error:  G722Encoder->WaitForState reports an error %X\n", error);
714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        Gt_k = 0 ;
718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for(i = 0; i < testcnt; i++) {
720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            whileloopdone = 0;
721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            frmCount1 = 0;
722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            frmCount = 0;
723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            nbInCbPending = 0;
724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fIn = fopen(argv[1], "r");
726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(fIn == NULL) {
727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fprintf(stderr, "Error:  failed to open the file %s for readonly access\n", argv[1]);
728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fOut = fopen(argv[2], "w");
732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(fOut == NULL) {
733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fprintf(stderr, "Error:  failed to create the output file \n");
734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(atoi(argv[3]) == 4) {
738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf ("%d :: Encoding the file [%d] Time\n",__LINE__, i+1);
739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            done = 0;
742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d :: Sending OMX_StateExecuting Command\n",__LINE__);
744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_START();
746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT ("Error from SendCommand-Executing State function\n");
750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pComponent = (OMX_COMPONENTTYPE *)(pHandle);
753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = WaitForState(pHandle, OMX_StateExecuting);
754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_END("Call to SendCommand <OMX_StateExecuting>");
756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT( "Error:  hAmrEncoder->WaitForState reports an error %X\n", error);
759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (Gt_k==0)
764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                GT_FlagE=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                GT_START(); /* Fill Buffer */
767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (pAppPrivate->dasfMode == 0) {
770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                send_input_buffer(pHandle, pInputBufferHeader, fIn);
771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (Gt_k==0)
774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                GT_FlagF=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                GT_START(); /* Fill Buffer */
777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_FillThisBuffer(pComponent,pOutputBufferHeader);
780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_GetState (pHandle, &testAppState);
781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            Gt_k=1;
783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES
786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(1){
787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            while((error == OMX_ErrorNone) && (whileloopdone != 1)) {
788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        while((error == OMX_ErrorNone) && (testAppState != OMX_StateIdle)) {
790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(1){
791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if ((testAppState == OMX_StateIdle)&&(nbInCbPending==0)) {
794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    whileloopdone = 1;
795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_ZERO(&rfds);
798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_SET(IpBuf_Pipe[0], &rfds);
799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_SET(OpBuf_Pipe[0], &rfds);
800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_SET(Event_Pipe[0], &rfds);
801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                tv.tv_sec = 1;
802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                tv.tv_usec = 0;
803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                retval = select(fdmax+1, &rfds, NULL, NULL, &tv);
804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(retval == -1) {
805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    perror("select()");
806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT ("%d :: Error \n",__LINE__);
807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(retval == 0) {
811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT ("%d :: BasicFn App Timeout !!!!!!!!!!! \n",__LINE__);
812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                /* === input buffer === */
815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                switch (atoi(argv[3])){
816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    case 1:     /* simple record till EOF or predefined frame number */
818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    case 4:     /* repeated record without deleting component */
819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    case 5:     /* repeated record with deleting component */
820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(pAppPrivate->dasfMode == 0) { /* file-to-file mode */
821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(FD_ISSET(IpBuf_Pipe[0], &rfds)){
822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                OMX_BUFFERHEADERTYPE* pBuffer = NULL;
823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                nbInCbPending--;
825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                frmCount++;
826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = send_input_buffer (pHandle, pBuffer, fIn);
827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if (error != OMX_ErrorNone) {
828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT ("%d :: Error While reading input pipe\n",__LINE__);
829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        else{   /* DASF mode */
834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if((frmCount1 == nbDASFframes) && (done == 0)){
835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__);
836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_START();
838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);
840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(error != OMX_ErrorNone){
841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__);
842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = WaitForState(pHandle, OMX_StateIdle);
845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_END("Call to SendCommand <OMX_StateIdle>");
847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(error != OMX_ErrorNone) {
849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT( "Error:  G722Encoder->WaitForState reports an error %X\n",error);
850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    }
852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                done = 1;
853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__);
854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        break;
858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    case 2: /* Stop */
860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(pAppPrivate->dasfMode == 0) {  /* file-to-file mode */
861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(frmCount1 > 149) {
863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    nbInCbPending--;
864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    if(nbInCbPending == 0){
865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__);
866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    #ifdef OMX_GETTIME
867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        GT_START();
868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    #endif
869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        if(error != OMX_ErrorNone) {
871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                            APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__);
872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                            goto EXIT;
873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        }
874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        error = WaitForState(pHandle, OMX_StateIdle);
875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    #ifdef OMX_GETTIME
876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        GT_END("Call to SendCommand <OMX_StateIdle>");
877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    #endif
878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        if(error != OMX_ErrorNone) {
879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                            APP_DPRINT( "Error:  G722Encoder->WaitForState reports an error %X\n", error);
880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                            goto EXIT;
881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        }
882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        done = 1;
883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__);
884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    }
885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                else{
887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    OMX_BUFFERHEADERTYPE* pBuffer = NULL;
888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    nbInCbPending--;
890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    frmCount++;
891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    error = send_input_buffer (pHandle, pBuffer, fIn);
892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    if (error != OMX_ErrorNone) {
893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        APP_DPRINT ("%d :: Error While reading input pipe\n",__LINE__);
894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                        goto EXIT;
895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    }
896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    frmCnt++;
897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        else { /* DASF mode */
901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(frmCount1 == 300) {
902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__);
903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_START();
905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(error != OMX_ErrorNone) {
908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__);
909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                done = 1;
912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = WaitForState(pHandle, OMX_StateIdle);
913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_END("Call to SendCommand <OMX_StateIdle>");
915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(error != OMX_ErrorNone) {
917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT( "Error:  G722Encoder->WaitForState reports an error %X\n", error);
918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__);
921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        break;
924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    case 3: /* pause and resume */
926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        /*if (frmCount == 320) {
927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT ("%d :: Sending Resume command to Codec \n",__LINE__);
928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #ifdef OMX_GETTIME
929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            GT_START();
930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #endif
931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL);
932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT ("%d :: Error from SendCommand-Executing State function\n",__LINE__);
934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("Calling Wait For State Line %d\n",__LINE__);
937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = WaitForState(pHandle, OMX_StateExecuting);
938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #ifdef OMX_GETTIME
939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            GT_END("Call to SendCommand <OMX_StateExecuting>");
940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #endif
941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("After Wait For State Line %d\n",__LINE__);
942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("%d :: Error: hPcmEncoder->WaitForState reports an error\n",__LINE__);
944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }*/
947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(frmCount == 300) {
948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT ("%d :: Sending Pause command to Codec \n",__LINE__);
949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #ifdef OMX_GETTIME
950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            GT_START();
951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #endif
952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StatePause, NULL);
953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT ("%d :: Error from SendCommand-Pasue State function\n",__LINE__);
955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            /* Wait for state to complete */
958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("Calling Wait For State Line %d\n",__LINE__);
959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = WaitForState(pHandle, OMX_StatePause);
960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #ifdef OMX_GETTIME
961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            GT_END("Call to SendCommand <OMX_StatePause>");
962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #endif
963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("After Wait For State Line %d\n",__LINE__);
964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("%d :: Error: hPcmEncoder->WaitForState reports an error\n", __LINE__);
966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            puts("Sleeping for 3 secs...");
970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            sleep(3);
971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            puts("Resuming...");
972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL);
973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT ("%d :: Error from SendCommand-Executing State function\n",__LINE__);
975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("Calling Wait For State Line %d\n",__LINE__);
978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = WaitForState(pHandle, OMX_StateExecuting);
979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #ifdef OMX_GETTIME
980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            GT_END("Call to SendCommand <OMX_StateExecuting>");
981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        #endif
982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("After Wait For State Line %d\n",__LINE__);
983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("%d :: Error: hPcmEncoder->WaitForState reports an error\n",__LINE__);
985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(pAppPrivate->dasfMode == 0) {   /* file-to-file mode */
989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                OMX_BUFFERHEADERTYPE* pBuffer = NULL;
991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                nbInCbPending--;
993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                frmCount++;
994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = send_input_buffer (pHandle, pBuffer, fIn);
995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if (error != OMX_ErrorNone) {
996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT ("%d :: Error While reading input pipe\n",__LINE__);
997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                frmCnt++;
1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        else {  /* DASF mode */
1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(frmCount1 == nbDASFframes) {
1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__);
1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_START();
1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(error != OMX_ErrorNone) {
1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__);
1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                done = 1;
1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = WaitForState(pHandle, OMX_StateIdle);
1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_END("Call to SendCommand <OMX_StateIdle>");
1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(error != OMX_ErrorNone) {
1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT( "Error:  G722Encoder->WaitForState reports an error %X\n", error);
1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    }
1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__);
1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        break;
1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    case 6: /* Set Volume */
1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(pAppPrivate->dasfMode == 0){ /* file-to-file mode */
1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("%d :: This test is not applied to file mode\n",__LINE__);
1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        else{  /* DASF mode */
1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(frmCount1 == 500){
1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                /* set high gain for record stream */
1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("[G722 encoder] --- will set stream gain to high\n");
1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                pCompPrivateStructGain->sVolume.nValue = 0x8000;
1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain);
1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if (error != OMX_ErrorNone)
1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                {
1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    error = OMX_ErrorBadParameter;
1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(frmCount1 == 800){
1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                /* set low gain for record stream */
1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("[G722 encoder] --- will set stream gain to low\n");
1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                pCompPrivateStructGain->sVolume.nValue = 0x1000;
1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain);
1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if (error != OMX_ErrorNone)
1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                {
1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    error = OMX_ErrorBadParameter;
1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                }
1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(frmCount1 == nbDASFframes) {
1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf("frmCount1 == nbDASFFrames\n\n");
1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                               APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__);
1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_START();
1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                               error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);
1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                               if(error != OMX_ErrorNone) {
1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                   APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__);
1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                   goto EXIT;
1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                               }
1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                done = 1;
1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                error = WaitForState(pHandle, OMX_StateIdle);
1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #ifdef OMX_GETTIME
1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                GT_END("Call to SendCommand <OMX_StateIdle>");
1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            #endif
1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                if(error != OMX_ErrorNone) {
1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    APP_DPRINT( "Error:  G722Encoder->WaitForState reports an error %X\n", error);
1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    goto EXIT;
1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    }
1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__);
1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        break;
1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        default:
1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("%d :: ### Running Simple DEFAULT Case Here ###\n",__LINE__);
1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                /* === output buffer === */
1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(FD_ISSET(OpBuf_Pipe[0], &rfds)) {
1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_BUFFERHEADERTYPE* pBuf = NULL;
1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf));
1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (pBuf->nAllocLen != pBuf->nFilledLen) {
1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        APP_DPRINT("%d :: WARNING: Different Size, %ld\n", __LINE__, pBuf->nFilledLen);
1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    fwrite(pBuf->pBuffer, 1, pBuf->nFilledLen, fOut);
1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    fflush(fOut);
1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    frmCount1++;
1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_FillThisBuffer(pHandle, pBuf);
1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if( FD_ISSET(Event_Pipe[0], &rfds) ) {
1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_U8 pipeContents;
1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    /*OMX_BUFFERHEADERTYPE* pBuffer;*/
1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    read(Event_Pipe[0], &pipeContents, sizeof(OMX_U8));
1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (pipeContents == 0) {
1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf("Test app received OMX_ErrorResourcesPreempted\n");
1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        WaitForState(pHandle,OMX_StateIdle);
1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader);
1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if( (error != OMX_ErrorNone)) {
1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader);
1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if( (error != OMX_ErrorNone)) {
1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER
1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        /* free the App Allocated Buffers */
1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pInputBuffer = pInputBuffer-G722ENC_CACHE_ALIGN_OFFSET;
1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pOutputBuffer = pOutputBuffer-G722ENC_CACHE_ALIGN_OFFSET;
1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        free(pOutputBuffer);
1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        free(pInputBuffer);
1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pOutputBuffer = NULL;
1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pInputBuffer = NULL;
1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateLoaded,NULL);
1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        WaitForState(pHandle,OMX_StateLoaded);
1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateWaitForResources,NULL);
1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        WaitForState(pHandle,OMX_StateWaitForResources);
1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (pipeContents == 1) {
1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES
1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf("Test app received OMX_ErrorResourcesAcquired\n");
1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL);
1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        /* allocate input buffer */
1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_AllocateBuffer(pHandle,&pInputBufferHeader,0,NULL,inBufSize);
1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(error != OMX_ErrorNone) {
1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        WaitForState(pHandle,OMX_StateIdle);
1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateExecuting,NULL);
1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        WaitForState(pHandle,OMX_StateExecuting);
1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        rewind(fIn);
1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        send_input_buffer (pHandle, pBuffer, fIn);
1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (pipeContents == 2) {
1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        /* Send component to Idle */
1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        WaitForState(pHandle, OMX_StateIdle);
1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES
1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader);
1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if( (error != OMX_ErrorNone)) {
1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader);
1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if( (error != OMX_ErrorNone)) {
1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER
1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        /* free the App Allocated Buffers */
1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pInputBuffer = pInputBuffer-G722ENC_CACHE_ALIGN_OFFSET;
1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pOutputBuffer = pOutputBuffer-G722ENC_CACHE_ALIGN_OFFSET;
1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        free(pOutputBuffer);
1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        free(pInputBuffer);
1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pOutputBuffer = NULL;
1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pInputBuffer = NULL;
1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(error != OMX_ErrorNone) {
1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT ("%d Error from SendCommand-Idle State function\n",__LINE__);
1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf("goto EXIT %d\n",__LINE__);
1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = WaitForState(pHandle, OMX_StateLoaded);
1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        GT_END("Call to SendCommand <OMX_StateLoaded>");
1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(error != OMX_ErrorNone) {
1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            APP_DPRINT( "%d Error:  WaitForState reports an error %X\n",__LINE__, error);
1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf("goto EXIT %d\n",__LINE__);
1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        goto SHUTDOWN;
1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                /*if(done == 1) {
1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT("Calling GetState Line %d\n",__LINE__);
1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    error = OMX_GetState(pHandle, &state);
1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(error != OMX_ErrorNone) {
1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        APP_DPRINT("%d :: Warning:  OMX_GetState has returned status %X\n", __LINE__, error);
1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        goto EXIT;
1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }*/
1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_GetState (pHandle, &testAppState);
1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            else if (preempted){
1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                sched_yield();
1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            else{
1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto SHUTDOWN;
1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        } /* While Loop Ending Here */
1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d :: The current state of the component = %d \n",__LINE__,state);
1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fclose(fOut);
1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fclose(fIn);
1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fOut = NULL;
1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fIn = NULL;
1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        frmCnt = 1;
1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((atoi(argv[3]) == 4) || (atoi(argv[3]) == 5)) {
1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("Pause 6 seconds\n");
1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /*sleep (6);*/
1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else {
1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            sleep (0);
1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } /*Inner for loop ends here */
1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef WAITFORRESOURCES
1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* free buffers */
1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader);
1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( (error != OMX_ErrorNone)) {
1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader);
1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( (error != OMX_ErrorNone)) {
1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER
1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* free the App Allocated Buffers */
1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pInputBuffer = pInputBuffer-G722ENC_CACHE_ALIGN_OFFSET;
1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pOutputBuffer = pOutputBuffer-G722ENC_CACHE_ALIGN_OFFSET;
1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    free(pOutputBuffer);
1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    free(pInputBuffer);
1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pOutputBuffer = NULL;
1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pInputBuffer = NULL;
1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("%d :: Sending the OMX_StateLoaded Command\n",__LINE__);
1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("%d :: Sent the OMX_StateLoaded Command\n",__LINE__);
1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = WaitForState(pHandle, OMX_StateLoaded);
1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Call to SendCommand <OMX_StateLoaded>");
1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES
1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateWaitForResources, NULL);
1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d Error from SendCommand-Idle State function\n",__LINE__);
1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("goto EXIT %d\n",__LINE__);
1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = WaitForState(pHandle, OMX_StateWaitForResources);
1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* temporarily put this here until I figure out what should really happen here */
1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        sleep(10);
1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* temporarily put this here until I figure out what should really happen here */
1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: Free the Component handle\n",__LINE__);
1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinSHUTDOWN:
1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Unload the G722 Encoder Component */
1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = TIOMX_FreeHandle(pHandle);
1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if((error != OMX_ErrorNone)) {
1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d :: Error in Free Handle function\n",__LINE__);
1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("%d :: Free Handle returned Successfully \n",__LINE__);
1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct);
1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(pCompPrivateStructGain != NULL) {
1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        free(pCompPrivateStructGain);
1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructGain = NULL;
1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    free(pCompPrivateStruct);
1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct = NULL;
1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    free(pG722Param);
1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param = NULL;
1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(IpBuf_Pipe[0]);
1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(IpBuf_Pipe[1]);
1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(OpBuf_Pipe[0]);
1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(OpBuf_Pipe[1]);
1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(Event_Pipe[0]);
1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(Event_Pipe[1]);
1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } /*Outer for loop ends here */
1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT:
1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if((write(g722encfdwrite, &cmd_data, sizeof(cmd_data)))<0)
1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d ::- send command to audio manager\n",__LINE__);
1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(g722encfdwrite);
1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    close(g722encfdread);
1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(streaminfo){
1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        free(streaminfo);
1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        streaminfo = NULL;
1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    free(pAppPrivate);
1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pAppPrivate = NULL;
1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("G722_ENC test <End>");
1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ListDestroy(pListHead);
1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return error;
1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */
1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @fn send_input_buffer() description for send_input_buffer
1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinsend_input_buffer().
1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinSends input buffer to component
1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*
1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/
1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */
1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn)
1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*    OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;*/
1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nRead = fill_data (pBuffer, fIn);
1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if((nRead == 0) && (done == 0)){
1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        done = 1;
1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nFlags = OMX_BUFFERFLAG_EOS;
1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nFilledLen = nRead;
1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_EmptyThisBuffer(pHandle, pBuffer);
1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        nbInCbPending++;
1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(done==0){
1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nFlags = 0;
1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nFilledLen = nRead;
1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(!preempted){
1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_EmptyThisBuffer(pHandle, pBuffer);
1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            nbInCbPending++;
1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin     return error;
1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */
1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @fn fill_data() description for fill_data
1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinfill_data().
1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFills input buffer
1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*
1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/
1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */
1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fill_data (OMX_BUFFERHEADERTYPE *pBuf,FILE *fIn)
1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nRead = 0;
1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static int totalRead = 0;
1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    nRead = fread(pBuf->pBuffer, 1, pBuf->nAllocLen , fIn);
1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    totalRead += nRead;
1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pBuf->nFilledLen = nRead;
1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return nRead;
1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1391