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 G729Enc_Test.c 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file implements G729 Encoder Component Test Application to verify 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * which is fully compliant with the Khronos OpenMAX (TM) 1.0 Specification 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\g729_enc\tests 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 1.0 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ---------------------------------------------------------------------------- 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! =================================== 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 21-sept-2006 bk: updated review findings for alpha release 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 24-Aug-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests some more 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 18-July-2006 bk: Khronos OpenMAX (TM) 1.0 Conformance tests validated for few cases 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 21-Jun-2006 bk: Khronos OpenMAX (TM) 1.0 migration done 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 22-May-2006 bk: DASF recording quality improved 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 19-Apr-2006 bk: DASF recording speed issue resloved 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 23-Feb-2006 bk: DASF functionality added 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 18-Jan-2006 bk: Repated recording issue fixed and LCML changes taken care 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 14-Dec-2005 bk: Initial Version 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 16-Nov-2005 bk: Initial Version 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 23-Sept-2005 bk: Initial Version 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 10-Sept-2005 bk: Initial Version 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 10-Sept-2005 bk: 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! This is newest file 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * =========================================================================== */ 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * INCLUDE FILES 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h> 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/vt.h> 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h> 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/soundcard.h> 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Index.h> 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Types.h> 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Core.h> 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Audio.h> 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h> 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <TIDspOmx.h> 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Common_Utils.h> 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_GetTime.h> /*Headers for Performance & measuremet */ 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *fpRes = NULL; 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G729ENC_INPUT_BUFFER_SIZE Default input buffer size 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G729ENC_INPUT_BUFFER_SIZE_DASF Default input buffer size DASF 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729APP_INPUT_BUFFER_SIZE 160 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729APP_INPUT_BUFFER_SIZE_DASF 160 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G729ENC_OUTPUT_BUFFER_SIZE Default output buffer size 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729APP_OUTPUT_BUFFER_SIZE 66 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G729ENC_APP_ID App ID Value setting 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729ENC_APP_ID 100 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SLEEP_TIME 5 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729ENC_HEADER_LEN 2 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729_NO_TX_FRAME_TYPE 0 /* No Data: 0 bytes */ 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729_SPEECH_FRAME_TYPE 1 /* Speech: 10 bytes */ 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729_SID_FRAME_TYPE 2 /* SID: 2 bytes */ 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729_ERASURE_FRAME_TYPE 3 /* Erasure frame */ 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define BIT_0 0x007f 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define BIT_1 0x0081 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1 "/dev/fifo.1" 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2 "/dev/fifo.2" 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_DEBUG 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_MEMCHECK 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef USE_BUFFER 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define STRESS_TEST_ITERATIONS 20 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...) fprintf(stderr,__VA_ARGS__) 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...) 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_MEMCHECK 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...) fprintf(stderr,__VA_ARGS__) 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...) 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE eError = OMX_ErrorNone; 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagE = 0; /* Fill Buffer 1 = First Buffer, 0 = Not First Buffer */ 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagF = 0; /*Empty Buffer 1 = First Buffer, 0 = Not First Buffer */ 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_NODE* pListHead = NULL; 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct AUDIO_INFO { 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 efrMode; 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 g729Mode; 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 acdnMode; 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 dasfMode; 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 mimeMode; 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nIpBufs; 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nOpBufs; 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nMFrameMode; 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} AUDIO_INFO; 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * M A C R O S FOR MALLOC and MEMORY FREE and CLOSING PIPES 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G729APP_CONF_INIT_STRUCT(_s_, _name_) \ 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset((_s_), 0x0, sizeof(_name_)); \ 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nSize = sizeof(_name_); \ 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nVersionMajor = 0x1; \ 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nVersionMinor = 0x1; \ 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nRevision = 0x0; \ 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nStep = 0x0 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G729APP_INIT_STRUCT(_s_, _name_) \ 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset((_s_), 0x0, sizeof(_name_)); \ 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G729APP_MALLOC_STRUCT(_pStruct_, _sName_) \ 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin _pStruct_ = (_sName_*)malloc(sizeof(_sName_)); \ 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(_pStruct_ == NULL){ \ 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Malloc Failed\n",__LINE__); \ 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; \ 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; \ 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } \ 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: ALLOCATING MEMORY = %p\n",__LINE__,_pStruct_); 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G729APP_COMP_PORT_TYPE Port types 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param G729APP_INPUT_PORT Input port 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param G729APP_OUTPUT_PORT Output port 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ====================================================================== */ 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*This enum must not be changed. */ 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum G729APP_COMP_PORT_TYPE { 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729APP_INPUT_PORT = 0, 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729APP_OUTPUT_PORT 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G729APP_COMP_PORT_TYPE; 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G729APP_MAX_NUM_OF_BUFS Maximum number of buffers 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G729APP_NUM_OF_CHANNELS Number of Channels 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G729APP_SAMPLING_FREQUENCY Sampling frequency 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729APP_MAX_NUM_OF_BUFS 10 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729APP_NUM_OF_CHANNELS 1 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G729APP_SAMPLING_FREQUENCY 8000 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b); 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint inputPortDisabled = 0; 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint outputPortDisabled = 0; 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_STRING strG729Encoder = "OMX.TI.G729.encode"; 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint IpBuf_Pipe[2] = {0}; 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OpBuf_Pipe[2] = {0}; 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinfd_set rfds; 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint done = 0; 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint doneWriting = 0; 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint tcID = 0; 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_BOOL bExitOnError = OMX_TRUE; 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint ebd = 0; 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fbd = 0; 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid writeITUFormat(OMX_U8* buffer, OMX_U32 length, FILE* fOut) ; 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE FreeResources(OMX_AUDIO_PARAM_G729TYPE* pG729Param, 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct, 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AUDIO_INFO* audioinfo, 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pInputBuffer[G729APP_MAX_NUM_OF_BUFS], 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pOutputBuffer[G729APP_MAX_NUM_OF_BUFS]); 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE FreeResources(OMX_AUDIO_PARAM_G729TYPE* pG729Param, 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct, 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AUDIO_INFO* audioinfo, 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pInputBufferHeader[G729APP_MAX_NUM_OF_BUFS], 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pOutputBufferHeader[G729APP_MAX_NUM_OF_BUFS], 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle); 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* safe routine to get the maximum of 2 integers */ 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b) 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return (a>b) ? a : b; 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* This method will wait for the component to get to the state 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * specified by the DesiredState input. */ 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle, 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE DesiredState) 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE CurState = OMX_StateInvalid; 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nCnt = 0; 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pComponent->GetState(pHandle, &CurState); 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Error returned from GetState\n",__LINE__); 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while( (eError == OMX_ErrorNone) && (CurState != DesiredState) ) { 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(2); 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nCnt++ == 10) { 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Still Waiting, press CTL-C to continue\n",__LINE__); 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pComponent->GetState(pHandle, &CurState); 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Error returned from GetState\n",__LINE__); 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE EventHandler( 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE hComponent, 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pAppData, 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EVENTTYPE eEvent, 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nData1, 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nData2, 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pEventData) 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Entering EventHandler \n", __LINE__); 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)hComponent; 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE state = OMX_StateInvalid; 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pComponent->GetState (hComponent, &state); 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Error returned from GetState\n",__LINE__); 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component eEvent = %d\n", __LINE__,eEvent); 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (eEvent) { 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component State Changed To %d\n", __LINE__,state); 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventCmdComplete: 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component State Changed To %d\n", __LINE__,state); 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData1 == OMX_CommandPortDisable) { 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData2 == G729APP_INPUT_PORT) { 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inputPortDisabled = 1; 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData2 == G729APP_OUTPUT_PORT) { 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin outputPortDisabled = 1; 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventError: 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMax: 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventMax = %d\n", __LINE__,eEvent); 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMark: 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventMark = %d\n", __LINE__,eEvent); 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventPortSettingsChanged: 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventPortSettingsChanged = %d\n", __LINE__,eEvent); 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventBufferFlag: 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventBufferFlag = %d\n", __LINE__,eEvent); 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventResourcesAcquired: 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventResourcesAcquired = %d\n", __LINE__,eEvent); 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Exiting EventHandler \n", __LINE__); 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fbd++; 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (GT_FlagF == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to FillBufferDone <First: FillBufferDone>"); 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagF = 0 ; /* 1 = First Buffer, 0 = Not First Buffer */ 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ebd++; 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (GT_FlagE == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>"); 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagE = 0; /* 1 = First Buffer, 0 = Not First Buffer */ 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint main(int argc, char* argv[]) 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE G729CaBa = {(void *)EventHandler, 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)EmptyBufferDone, 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)FillBufferDone}; 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle; 367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 AppData = G729ENC_APP_ID; 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct = NULL; 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_G729TYPE *pG729Param = NULL; 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = NULL; 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE state = OMX_StateInvalid; 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pInputBufferHeader[G729APP_MAX_NUM_OF_BUFS] = {NULL}; 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pOutputBufferHeader[G729APP_MAX_NUM_OF_BUFS] = {NULL}; 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pInputBuffer[G729APP_MAX_NUM_OF_BUFS] = {NULL}; 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pOutputBuffer[G729APP_MAX_NUM_OF_BUFS] = {NULL}; 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AUDIO_INFO* audioinfo = NULL; 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DSP_DEFINITION tiOmxDspDefinition; 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FILE* fIn = NULL; 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FILE* fOut = NULL; 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct timeval tv; 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int retval = 0, i = 0, j = 0, k = 0, kk = 0; 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frmCount = 0; 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frmCnt = 1; 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int testcnt = 0; 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int testcnt1 = 0; 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int status = 0; 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int fdmax = 0; 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nRead = 0; 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nFrameCount = 1; 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nFrameLen = 0; 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nIpBuff = 1; 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nOutBuff = 1; 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE index = 0; 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frameLengthInBytes = 0; 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frameType = 0; 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int framesPerBuffer=1; 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DATAPATH dataPath; 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int g729encfdwrite = 0; 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int g729encfdread = 0; 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("------------------------------------------------------\n"); 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("This is Main Thread In G729 ENCODER Test Application:\n"); 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n"); 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("------------------------------------------------------\n"); 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GTeError = OMX_ListCreate(&pListHead); 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("eError = %d\n",GTeError); 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_FALSE; 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((g729encfdwrite=open(FIFO1,O_WRONLY))<0) { 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("[G729TEST] - failure to open WRITE pipe\n"); 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("[G729TEST] - opened WRITE pipe\n"); 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((g729encfdread=open(FIFO2,O_RDONLY))<0) { 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("[G729TEST] - failure to open READ pipe\n"); 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("[G729TEST] - opened READ pipe\n"); 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* check the input parameters */ 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(argc != 11) { 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Usage: [TestApp] [O/P] [FUNC_ID_X] [FM/DM] [DTXON/OFF] [ACDNON/OFF] [FRAMES] [1 to N] [1 to N] [MFON]\n",__LINE__); 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* check to see that the input file exists */ 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct stat sb = {0}; 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = stat(argv[1], &sb); 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( status != 0 ) { 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Cannot find file %s. (%u)\n", argv[1], errno); 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Open the file of data to be encoded. */ 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(argv[1], "r"); 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fIn == NULL ) { 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error: failed to open the input file %s\n", argv[1]); 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Open the file of data to be written. */ 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen(argv[2], "w"); 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fOut == NULL ) { 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error: failed to open the output file %s\n", argv[2]); 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_0")) { 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### Testing TESTCASE 1 PLAY TILL END ###\n",__LINE__); 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 0; 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!strcmp(argv[3],"FUNC_ID_1")) { 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### Testing TESTCASE 1 PLAY TILL END ###\n",__LINE__); 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!strcmp(argv[3],"FUNC_ID_2")) { 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### Testing TESTCASE 2 STOP IN THE END ###\n",__LINE__); 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 2; 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!strcmp(argv[3],"FUNC_ID_3")) { 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### Testing TESTCASE 3 PAUSE - RESUME IN BETWEEN ###\n",__LINE__); 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 3; 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!strcmp(argv[3],"FUNC_ID_4")) { 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### Testing TESTCASE 4 STOP IN BETWEEN ###\n",__LINE__); 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 2; 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 4; 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("######## testcnt = %d #########\n",testcnt); 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_5")){ 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### Testing TESTCASE 5 ENCODE without Deleting component Here ###\n",__LINE__); 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = STRESS_TEST_ITERATIONS; 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 5; 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_6")) { 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### Testing TESTCASE 6 ENCODE with Deleting component Here ###\n",__LINE__); 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = STRESS_TEST_ITERATIONS; 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 6; 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_Init(); 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_Init()\n",__LINE__); 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(j = 0; j < testcnt1; j++) { 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Create a pipe used to queue data from the callback. */ 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(IpBuf_Pipe); 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( retval != 0) { 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error:Fill Data Pipe failed to open\n"); 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(OpBuf_Pipe); 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( retval != 0) { 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error:Empty Data Pipe failed to open\n"); 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* save off the "max" of the handles for the selct statement */ 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]); 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(j > 0) { 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: Encoding the file for %d Time in TESTCASE 6\n",__LINE__,j+1); 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(argv[1], "r"); 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fIn == NULL ) { 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to open the file %s for read only access\n",argv[1]); 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen("TC6_G7291.g729", "w"); 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fOut == NULL ) { 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to create the output file %s\n",argv[2]); 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Load the G729 Encoder Component */ 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetHandle(&pHandle, strG729Encoder, &AppData, &G729CaBa); 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to GetHandle"); 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_GetHandle(&pHandle, strG729Encoder, &AppData, &G729CaBa); 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone) || (pHandle == NULL)) { 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error in Get Handle function\n"); 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729APP_MALLOC_STRUCT(audioinfo, AUDIO_INFO); 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729APP_INIT_STRUCT(audioinfo, AUDIO_INFO); 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Setting No.Of Input and Output Buffers for the Component */ 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(atoi(argv[8]) <1 || atoi(argv[8]) > 4) 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Please enter a valid number of buffers between 1 and 4\n"); 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = 1; 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->nIpBufs = atoi(argv[8]); 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->nIpBufs = %ld \n",__LINE__,audioinfo->nIpBufs); 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(atoi(argv[9]) <1 || atoi(argv[9]) > 4) 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Please enter a valid number of buffers between 1 and 4\n"); 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = 1; 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->nOpBufs = atoi(argv[9]); 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->nOpBufs = %ld \n",__LINE__,audioinfo->nOpBufs); 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(atoi(argv[10]) <1 || atoi(argv[10]) > 8) 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Please enter a valid number of frames per buffer between 1 and 8\n"); 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = 1; 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin framesPerBuffer = atoi(argv[10]); 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729APP_MALLOC_STRUCT(pCompPrivateStruct, OMX_PARAM_PORTDEFINITIONTYPE); 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729APP_CONF_INIT_STRUCT(pCompPrivateStruct, OMX_PARAM_PORTDEFINITIONTYPE); 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729APP_MALLOC_STRUCT(pG729Param, OMX_AUDIO_PARAM_G729TYPE); 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G729APP_CONF_INIT_STRUCT(pG729Param, OMX_AUDIO_PARAM_G729TYPE); 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Setting input port config\n",__LINE__); 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE); 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1; 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2; 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = G729APP_INPUT_PORT; 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirInput; 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = audioinfo->nIpBufs; 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = audioinfo->nIpBufs; 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferSize = G729APP_INPUT_BUFFER_SIZE*framesPerBuffer; 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bPopulated = OMX_FALSE; 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDomain = OMX_PortDomainAudio; 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingG729; 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.cMIMEType = NULL; 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.pNativeRender = NULL; 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.bFlagErrorConcealment = OMX_FALSE; /*Send input port config*/ 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Setting input port config\n",__LINE__); 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(strcmp(argv[4],"FM"))) { 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->dasfMode = 0; 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tiOmxDspDefinition.dasfMode = OMX_FALSE; 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %ld \n",__LINE__,audioinfo->dasfMode); 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(argv[4],"DM"))){ 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->dasfMode = 1; 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tiOmxDspDefinition.dasfMode = OMX_TRUE; 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %ld \n",__LINE__,audioinfo->dasfMode); 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER RUNNING UNDER DASF MODE \n",__LINE__); 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = 0; 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n%d :: App: audioinfo->dasfMode Sending Bad Parameter\n",__LINE__); 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Should Be One of these Modes FM, DM\n",__LINE__); 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 0) { 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((atoi(argv[7])) != 0) { 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n%d :: App: No. of Frames Sending Bad Parameter\n",__LINE__); 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: For FILE mode argv[7] Should Be --> 0\n",__LINE__); 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: For DASF mode argv[7] Should be greater than zero depends on number of frames user want to encode\n",__LINE__); 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((atoi(argv[7])) == 0) { 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n%d :: App: No. of Frames Sending Bad Parameter\n",__LINE__); 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: For DASF mode argv[7] Should be greater than zero depends on number of frames user want to encode\n",__LINE__); 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: For FILE mode argv[7] Should Be --> 0\n",__LINE__); 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(strcmp(argv[6],"ACDNOFF"))) { 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->acdnMode = 0; 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tiOmxDspDefinition.acousticMode = OMX_FALSE; 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->acdnMode = %ld \n",__LINE__,audioinfo->acdnMode); 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(argv[6],"ACDNON"))) { 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->acdnMode = 1; 657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tiOmxDspDefinition.acousticMode = OMX_TRUE; 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->acdnMode = %ld \n",__LINE__,audioinfo->acdnMode); 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n%d :: App: audioinfo->acdnMode Sending Bad Parameter\n",__LINE__); 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Should Be One of these Modes ACDNON, ACDNOFF\n",__LINE__); 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__); 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: Setting output port config\n",__LINE__); 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE); 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMajor = 0x1; 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMinor = 0x1; 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = G729APP_OUTPUT_PORT; 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirOutput; 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = audioinfo->nOpBufs; 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = audioinfo->nOpBufs; 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferSize = G729APP_OUTPUT_BUFFER_SIZE; 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bPopulated = OMX_FALSE; 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDomain = OMX_PortDomainAudio; 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingG729; 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.cMIMEType = NULL; 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.pNativeRender = NULL; 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.bFlagErrorConcealment = OMX_FALSE; /*Send input port config*/ 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__); 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param->nSize = sizeof(OMX_AUDIO_PARAM_G729TYPE); 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param->nVersion.s.nVersionMajor = 0x1; 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param->nVersion.s.nVersionMinor = 0x1; 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param->nPortIndex = G729APP_OUTPUT_PORT; 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param->nChannels = G729APP_NUM_OF_CHANNELS; 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* APP_DPRINT("\n%d :: App: pG729Param->eG729BandMode --> %d \n",__LINE__,pG729Param->eG729BandMode); */ 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(strcmp(argv[5],"DTXON"))) { 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /**< G729 Discontinuous Transmission Mode is enabled */ 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* APP_DPRINT("\n%d :: App: pG729Param->eARMDTXMode --> %s \n",__LINE__,argv[5]); */ 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param->bDTX = OMX_TRUE; 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(argv[5],"DTXOFF"))) { 721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param->bDTX = OMX_FALSE; 722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /**< G729 Discontinuous Transmission Mode is disabled */ 723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n%d :: App: pG729Param->eARMDTXMode Sending Bad Parameter\n",__LINE__); 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Should Be One of these Modes DTXON, DTXOFF\n",__LINE__); 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamAudioG729, pG729Param); 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamAudioG729, pG729Param); 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__); 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef USE_BUFFER 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__); 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < audioinfo->nIpBufs; i++) { 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer for pInputBufferHeader[%d]\n",__LINE__, i); 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_AllocateBuffer(pHandle, &pInputBufferHeader[i], 0, NULL, G729APP_INPUT_BUFFER_SIZE*framesPerBuffer); 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer for pInputBufferHeader[%d]\n",__LINE__, i); 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: pCompPrivateStruct->nBufferSize --> %ld \n",__LINE__,pCompPrivateStruct->nBufferSize); 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < audioinfo->nOpBufs; i++) { 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate output buffer */ 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i); 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_AllocateBuffer(pHandle, &pOutputBufferHeader[i], 1, NULL, pCompPrivateStruct->nBufferSize); 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i); 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < audioinfo->nIpBufs; i++) { 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = (OMX_U8*)malloc(G729APP_INPUT_BUFFER_SIZE*framesPerBuffer); 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] += 128; 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: [TESTAPP ALLOC] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NULL == pInputBuffer[i]) { 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Malloc Failed\n",__LINE__); 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__); 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_UseBuffer(pHandle, &pInputBufferHeader[i], 0, NULL, G729APP_INPUT_BUFFER_SIZE*framesPerBuffer, pInputBuffer[i]); 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < audioinfo->nOpBufs; i++) { 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = malloc (pCompPrivateStruct->nBufferSize + 256); 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: [TESTAPP ALLOC] pOutputBuffer[%d] = %p\n",__LINE__,i,pOutputBuffer[i]); 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NULL == pOutputBuffer[i]) { 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Malloc Failed\n",__LINE__); 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] + 128; 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate output buffer */ 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__); 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_UseBuffer(pHandle, &pOutputBufferHeader[i], 1, NULL, pCompPrivateStruct->nBufferSize, pOutputBuffer[i]); 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.tispecific",&index); 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error returned from OMX_GetExtensionIndex\n"); 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.hComponent = pHandle; 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandIsInputStreamAvailable; 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param1 = 0; 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(g729encfdwrite, &cmd_data, sizeof(cmd_data)))<0) { 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((read(g729encfdread, &cmd_data, sizeof(cmd_data)))<0) { 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tiOmxDspDefinition.streamId = cmd_data.streamID; 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig (pHandle, index, &tiOmxDspDefinition); 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__); 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (tiOmxDspDefinition.dasfMode) { 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RTM_PATH 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = DATAPATH_APPLICATION_RTMIXER; 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef ETEEDN_PATH 846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = DATAPATH_APPLICATION; 847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g729.datapath",&index); 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error getting extension index\n"); 853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig (pHandle, index, &dataPath); 858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error from SendCommand-Idle(Init) State function\n"); 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for startup to complete */ 873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: hG729Encoder->WaitForState reports an eError %X\n", eError); 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < testcnt; i++) { 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCnt = 1; 884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameCount = 1; 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOutBuff = 1; 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBuff = 1; 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(i > 0) { 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Encoding the file for %d Time in TESTCASE 5 OR TESTCSE 4\n",__LINE__,i+1); 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(argv[1], "r"); 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(fIn == NULL) { 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to open the file %s for readonly access\n", argv[1]); 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen("TC5_G7291.g729", "w"); 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(fOut == NULL) { 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to create the output file %s\n", argv[2]); 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 0; 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Sending OMX_StateExecuting Command\n",__LINE__); 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL); 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error from SendCommand-Executing State function\n"); 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateExecuting); 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: hG729Encoder->WaitForState reports an eError %X\n", eError); 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 1) { 929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: No.of Frames Encoding = %d\n",__LINE__, atoi(argv[7])); 930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)pHandle; 932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 0) { 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (k=0; k < audioinfo->nIpBufs; k++) { 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = pInputBufferHeader[k]; 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuffer->pBuffer, 1, pBuffer->nAllocLen, fIn); 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App :: Reading InputBuffer = %d from the input file nRead = %d\n",__LINE__,nIpBuff,nRead); 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nTimeStamp = (OMX_S64)rand() % 70; 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nTickCount = rand() % 70; 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nRead == 0) && (done == 0)) { 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Sending Last Input Buffer from TestApp.............. \n",__LINE__); 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = 0; 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App:: Input Buffer: Calling EmptyThisBuffer: %p\n",__LINE__,pBuffer); 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (k==0) 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagE=1; /* 1 = First Buffer, 0 = Not First Buffer */ 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); /* Empty Bufffer */ 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBuff++; 957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (kk = 0; kk < audioinfo->nOpBufs; kk++) { 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (kk==0) 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagF=1; /* 1 = First Buffer, 0 = Not First Buffer */ 965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); /* Fill Buffer */ 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_FillThisBuffer(pHandle, pOutputBufferHeader[kk]); 969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pHandle, &state); 972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: pComponent->GetState has returned status %X\n",__LINE__, eError); 974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while((eError == OMX_ErrorNone) && (state != OMX_StateIdle)) { 979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO(&rfds); 980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(IpBuf_Pipe[0], &rfds); 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(OpBuf_Pipe[0], &rfds); 982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_sec = 1; 983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_usec = 0; 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount++; 985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = select(fdmax+1, &rfds, NULL, NULL, &tv); 987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(retval == -1) { 988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin perror("select()"); 989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( " :: Error \n"); 990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(retval == 0) { 994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(1); 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: BasicFn App Timeout !!!!!!!!!!! \n",__LINE__); 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (tcID) { 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 0: 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 1: 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 2: 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 5: 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 6: 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 0) { 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FD_ISSET(IpBuf_Pipe[0], &rfds)) { 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = NULL; 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(done == 0) { 1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuffer->pBuffer, 1, pBuffer->nAllocLen, fIn); 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App :: Reading InputBuffer = %d from the input file nRead = %d\n",__LINE__,nIpBuff,nRead); 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nTimeStamp = (OMX_S64)rand() % 2; 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nTickCount = (OMX_S64)rand() % 70; 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (tcID == 0){ 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Input time stamp = %ld\n", (long int)pBuffer->nTimeStamp); 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Input tick count = %ld\n", pBuffer->nTickCount); 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nRead < 160) && (done == 0)) { 1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Sending Last Input Buffer from TestApp.............. \n",__LINE__); 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = 0; 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Input Buffer: Calling EmptyThisBuffer: %p\n",__LINE__,pBuffer); 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBuff++; 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER RUNNING UNDER DASF MODE \n",__LINE__); 1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nFrameCount == atoi(argv[7])) { 1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Sending Stop.........From APP \n",__LINE__); 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"Error from SendCommand-Idle(Stop) State function\n"); 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G729Encoder->WaitForState reports an error %X\n", eError); 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER READING DATA FROM DASF \n",__LINE__); 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 3: 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 0) { 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER RUNNING UNDER FILE 2 FILE MODE \n",__LINE__); 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FD_ISSET(IpBuf_Pipe[0], &rfds)) { 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = NULL; 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(done == 0) { 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Read from IpBuf_Pipe InBufHeader %p\n",__LINE__,pBuffer); 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuffer->pBuffer, 1, pBuffer->nAllocLen, fIn); 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Reading I/P Buffer = %d & Size = %d from IpBuf_Pipe\n",__LINE__,nFrameCount,nRead); 1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nRead < pBuffer->nAllocLen) && (done == 0)) { 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = 0; 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Sending Last Input Buffer from TestApp.............. \n",__LINE__); 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Input Buffer: Calling EmptyThisBuffer: %p\n",__LINE__,pBuffer); 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error from SendCommand-Idle(Stop) State function\n"); 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ){ 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error:WaitForState has timed out %d", eError); 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Input Buffer: Calling EmptyThisBuffer: %p\n",__LINE__,pBuffer); 1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER RUNNING UNDER DASF MODE \n",__LINE__); 1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nFrameCount == atoi(argv[7])) { 1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Sending Stop.........From APP \n",__LINE__); 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"Error from SendCommand-Idle(Stop) State function\n"); 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G729Encoder->WaitForState reports an error %X\n", eError); 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER READING DATA FROM DASF \n",__LINE__); 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (frmCount == 15) { 1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: App: $$$$$ Sending Resume command to Codec $$$$$$$\n",__LINE__); 1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL); 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"Error from SendCommand-Executing State function\n"); 1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for startup to complete */ 1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateExecuting); 1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: hPcmDecoder->WaitForState reports an eError %X\n", eError); 1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount == 10) { 1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: App: $$$$$ Sending Pause command to Codec $$$$$$\n",__LINE__); 1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StatePause, NULL); 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error from SendCommand-Pasue State function\n"); 1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for startup to complete */ 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StatePause); 1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StatePause>"); 1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("hG729Encoder->WaitForState reports error\n"); 1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 4: 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 0) { 1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER RUNNING UNDER FILE 2 FILE MODE \n",__LINE__); 1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( FD_ISSET(IpBuf_Pipe[0], &rfds) ) { 1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCnt > 20) { 1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = NULL; 1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = 0; 1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App:: Input Buffer: Calling EmptyThisBuffer: %p\n",__LINE__,pBuffer); 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer; 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(done == 0) { 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Read from IpBuf_Pipe InBufHeader %p\n",__LINE__,pBuffer); 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuffer->pBuffer, 1, pBuffer->nAllocLen, fIn); 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Reading I/P Buffer = %d & Size = %d from IpBuf_Pipe\n",__LINE__,nFrameCount,nRead); 1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nRead == 0) && (done == 0)) { 1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = 0; 1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Input Buffer: Calling EmptyThisBuffer: %p\n",__LINE__,pBuffer); 1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCnt++; 1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G729 ENCODER RUNNING UNDER DASF MODE \n",__LINE__); 1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nFrameCount == atoi(argv[7])) { 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error from SendCommand-Idle(Stop) State function\n"); 1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G729Encoder->WaitForState reports an error %X\n", eError); 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nFrameCount == 20) { 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Sending Stop After %d frames \n",__LINE__,nFrameCount); 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error from SendCommand-Idle(Stop) State function\n"); 1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G729Encoder->WaitForState reports an error %X\n", eError); 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: ### Simple DEFAULT Case Here ###\n",__LINE__); 1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( FD_ISSET(OpBuf_Pipe[0], &rfds) ) { 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuf = NULL; 1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf)); 1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: pBuf->nFilledLen = %ld\n",__LINE__, pBuf->nFilledLen); 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameLen = pBuf->nFilledLen; 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* strip off the G.729 Encoder frame format */ 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int subFrameLength = 0; 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char* temp = (char *)pBuf->pBuffer; 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while (nFrameLen > 0) { 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frameType = *(temp); 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin temp++; 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (frameType) { 1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 0: 1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin subFrameLength = 0; 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 1: 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin subFrameLength = 10; 1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 2: 1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin subFrameLength = 2; 1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char Header[] = {0x21, 0x6b}; 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!doneWriting) { 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!(subFrameLength == 0 && done)) { 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fwrite(Header, 1, G729ENC_HEADER_LEN, fOut); 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fflush(fOut); 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: nFrameLen = %d \n",__LINE__, nFrameLen); 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Writing OutputBuffer No: %d to the file nWrite = %d \n",__LINE__, nOutBuff, nFrameLen); 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frameLengthInBytes = subFrameLength*8; 1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fwrite(&frameLengthInBytes,2,1,fOut); 1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin writeITUFormat((OMX_U8*)temp, subFrameLength,fOut); 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin temp+= subFrameLength; 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fflush(fOut); 1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameLen = nFrameLen - subFrameLength -1; 1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (done) doneWriting = 1; 1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameCount++; 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOutBuff++; 1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_FillThisBuffer(pHandle, pBuf); 1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: pBuf->nFlags = %ld\n",__LINE__, pBuf->nFlags); 1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (tcID == 0){ 1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("-----------------------------------------------------\n"); 1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Output time stamp = %ld\n",(long int) pBuf->nTimeStamp); 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Output tick count = %ld\n", pBuf->nTickCount); 1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("-----------------------------------------------------\n"); 1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBuf->nFlags == 1) { 1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(tcID != 3) { 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Sending OMX_StateIdle.........From APP \n",__LINE__); 1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error from SendCommand-Idle(Stop) State function\n"); 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ){ 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error:WaitForState has timed out %d", eError); 1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->dasfMode = 0; 1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuf->nFlags = 0; 1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(done == 1) { 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pHandle, &state); 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: pComponent->GetState has returned status %X\n",__LINE__, eError); 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /* While Loop Ending Here */ 1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: The current state of the component = %d \n",__LINE__,state); 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fOut); 1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fIn); 1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(tcID == 5 || tcID == 4) { 1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep (2); 1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep (0); 1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: G729 Encoded = %d Frames \n",__LINE__,(nOutBuff)); 1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /*Test Case 4 & 5 Inner for loop ends here */ 1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: App: Sending the OMX_StateLoaded Command\n",__LINE__); 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error from SendCommand-Idle State function\n",__LINE__); 1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: App: Sending the OMX_CommandPortDisable Command\n",__LINE__); 1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandPortDisable, -1, NULL); 1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error from SendCommand OMX_CommandPortDisable\n",__LINE__); 1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the Allocate and Use Buffers */ 1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Freeing the Allocate OR Use Buffers in TestApp\n",__LINE__); 1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nIpBufs; i++) { 1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: About to free pInputBufferHeader[%d]\n",__LINE__, i); 1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, G729APP_INPUT_PORT, pInputBufferHeader[i]); 1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__); 1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nOpBufs; i++) { 1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: About to free pOutputBufferHeader[%d]\n",__LINE__, i); 1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, G729APP_OUTPUT_PORT, pOutputBufferHeader[i]); 1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__); 1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the App Allocated Buffers */ 1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Freeing the App Allocated Buffers in TestApp\n",__LINE__); 1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nIpBufs; i++) { 1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = pInputBuffer[i] -128; 1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pInputBuffer[i] != NULL){ 1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pInputBuffer[i]); 1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = NULL; 1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nOpBufs; i++) { 1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] - 128; 1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]); 1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pOutputBuffer[i] != NULL){ 1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pOutputBuffer[i]); 1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = NULL; 1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateLoaded); 1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateLoaded>, Disableport and cleared the buffers"); 1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G729Encoder->WaitForState reports an error %X\n", eError); 1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pG729Param); 1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pG729Param != NULL){ 1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pG729Param); 1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param = NULL; 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct); 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivateStruct != NULL){ 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pCompPrivateStruct); 1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct = NULL; 1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,audioinfo); 1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo != NULL){ 1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(audioinfo); 1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo = NULL; 1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Unload the G729 Encoder Component */ 1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_FreeHandle(pHandle); 1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Handle function\n",__LINE__); 1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /*Outer for loop ends here */ 1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* De-Initialize OMX Core */ 1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_Deinit(); 1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("App::Failed to de-init OMX Core!\n"); 1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("EBD = %d\n FBD = %d\n", ebd, fbd); 1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: NOTE: An output file %s has been created in file system\n",__LINE__,argv[2]); 1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (bExitOnError){ 1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Application exiting due to an error!!\n"); 1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FreeResources(pG729Param, pCompPrivateStruct, audioinfo, pInputBuffer, pOutputBuffer); 1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FreeResources(pG729Param, pCompPrivateStruct, audioinfo, pInputBufferHeader, pOutputBufferHeader, pHandle); 1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Unload the G729 Encoder Component */ 1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_FreeHandle(pHandle); 1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Handle function\n",__LINE__); 1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.hComponent = pHandle; 1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_Exit; 1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(g729encfdwrite, &cmd_data, sizeof(cmd_data)))<0) 1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d ::- send command to audio manager\n",__LINE__); 1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(g729encfdwrite); 1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(g729encfdread); 1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("G729Enc test <End>"); 1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ListDestroy(pListHead); 1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* This function writes the output into a format that is expected by the decoder */ 1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid writeITUFormat(OMX_U8* buffer, OMX_U32 length, FILE* fOut) 1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int i = 0,j = 0; 1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 theByte = 0; 1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 theMask = 0; 1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 theBit = 0; 1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 theWord = 0; 1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (j=0; j < length; j++) { 1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin theByte = buffer[j]; 1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin theMask = 128; 1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < 8; i++) { 1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin theBit = (theMask & theByte) >> (7-i); 1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin theMask = theMask >> 1; 1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (theBit == 0) { 1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin theWord = BIT_0; 1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (theBit == 1) { 1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin theWord = BIT_1; 1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fwrite(&theWord,2,1,fOut); 1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE FreeResources(OMX_AUDIO_PARAM_G729TYPE* pG729Param, 1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct, 1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AUDIO_INFO* audioinfo, 1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pInputBuffer[G729APP_MAX_NUM_OF_BUFS], 1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pOutputBuffer[G729APP_MAX_NUM_OF_BUFS]) 1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int i = 0; 1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the App Allocated Buffers */ 1546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Freeing the App Allocated Buffers in TestApp\n",__LINE__); 1547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nIpBufs; i++) { 1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = pInputBuffer[i] -128; 1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pInputBuffer[i] != NULL){ 1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pInputBuffer[i]); 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = NULL; 1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nOpBufs; i++) { 1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] - 128; 1558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]); 1559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pOutputBuffer[i] != NULL){ 1560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pOutputBuffer[i]); 1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = NULL; 1562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pG729Param); 1567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pG729Param != NULL){ 1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pG729Param); 1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param = NULL; 1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct); 1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivateStruct != NULL){ 1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pCompPrivateStruct); 1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct = NULL; 1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,audioinfo); 1577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo != NULL){ 1578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(audioinfo); 1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo = NULL; 1580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Closing the Input and Output Pipes\n",__LINE__); 1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (IpBuf_Pipe[0]); 1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing IpBuf_Pipe[0]\n",__LINE__); 1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (IpBuf_Pipe[1]); 1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing IpBuf_Pipe[1]\n",__LINE__); 1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (OpBuf_Pipe[0]); 1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing OpBuf_Pipe[0]\n",__LINE__); 1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (OpBuf_Pipe[1]); 1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing OpBuf_Pipe[1]\n",__LINE__); 1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE FreeResources(OMX_AUDIO_PARAM_G729TYPE* pG729Param, 1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct, 1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AUDIO_INFO* audioinfo, 1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pInputBufferHeader[G729APP_MAX_NUM_OF_BUFS], 1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pOutputBufferHeader[G729APP_MAX_NUM_OF_BUFS], 1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle) 1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int i = 0; 1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the Allocate and Use Buffers */ 1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Freeing the Allocate OR Use Buffers in TestApp\n",__LINE__); 1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nIpBufs; i++) { 1631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: About to free pInputBufferHeader[%d]\n",__LINE__, i); 1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, G729APP_INPUT_PORT, pInputBufferHeader[i]); 1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__); 1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < audioinfo->nOpBufs; i++) { 1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: About to free pOutputBufferHeader[%d]\n",__LINE__, i); 1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, G729APP_OUTPUT_PORT, pOutputBufferHeader[i]); 1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__); 1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bExitOnError = OMX_TRUE; 1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pG729Param); 1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pG729Param != NULL){ 1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pG729Param); 1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG729Param = NULL; 1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct); 1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivateStruct != NULL){ 1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pCompPrivateStruct); 1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct = NULL; 1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,audioinfo); 1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo != NULL){ 1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(audioinfo); 1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo = NULL; 1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Closing the Input and Output Pipes\n",__LINE__); 1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (IpBuf_Pipe[0]); 1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing IpBuf_Pipe[0]\n",__LINE__); 1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (IpBuf_Pipe[1]); 1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing IpBuf_Pipe[1]\n",__LINE__); 1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (OpBuf_Pipe[0]); 1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing OpBuf_Pipe[0]\n",__LINE__); 1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (OpBuf_Pipe[1]); 1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing OpBuf_Pipe[1]\n",__LINE__); 1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1697