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