1c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* 2c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Copyright (c) 2010, Texas Instruments Incorporated 3c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * All rights reserved. 4c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 5c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Redistribution and use in source and binary forms, with or without 6c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * modification, are permitted provided that the following conditions 7c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * are met: 8c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 9c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * * Redistributions of source code must retain the above copyright 10c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * notice, this list of conditions and the following disclaimer. 11c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 12c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * * Redistributions in binary form must reproduce the above copyright 13c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * notice, this list of conditions and the following disclaimer in the 14c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * documentation and/or other materials provided with the distribution. 15c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 16c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * * Neither the name of Texas Instruments Incorporated nor the names of 17c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * its contributors may be used to endorse or promote products derived 18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * from this software without specific prior written permission. 19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 20c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define COMPONENT_NAME "OMX.TI.DUCATI1.MISC.SAMPLE" // needs to be specific for every configuration wrapper 34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_USEBUF OMX_TRUE 35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**************************************************************** 37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev* INCLUDE FILES 38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev****************************************************************/ 39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* ----- system and platform files ----------------------------*/ 40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <stdint.h> 41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <string.h> 42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <stdlib.h> 43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <stdio.h> 44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*-------program files ----------------------------------------*/ 47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Core.h> 48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Component.h> 49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "timm_osal_interfaces.h" 50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_TILER_TEST 53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "memmgr.h" 57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_INPUT_PORT 0 62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_OUTPUT_PORT 1 63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_IN_2DYHEIGHT 4 68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_IN_2DYWIDTH 8 69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_IN_2DUVHEIGHT 2 70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_IN_2DUVWIDTH 4 71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* 72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev #define STRIDE_8BIT (16 * 1024) 73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev #define STRIDE_16BIT (32 * 1024) 74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev*/ 75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_IN_HEIGHT 6 76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_IN_WIDTH 8 77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define STRIDE_LINUX (4 * 1024) 79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_SAMPLE_BUFFER_SIZE 48 81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevvoid Test_Util_Memcpy_1Dto2D(TIMM_OSAL_PTR pDst2D, TIMM_OSAL_PTR pSrc1D, 84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_U32 nSize1D, TIMM_OSAL_U32 nHeight2D, TIMM_OSAL_U32 nWidth2D, 85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_U32 nStride2D) 86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_U8 *pInBuffer; 88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_U8 *pOutBuffer; 89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_U32 nSizeLeft, i; 90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nSizeLeft = nSize1D; 92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pInBuffer = (TIMM_OSAL_U8 *) pSrc1D; 93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pOutBuffer = (TIMM_OSAL_U8 *) pDst2D; 94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //The lower limit is copied. If nSize1D < H*W then 1Dsize is copied else H*W is copied 95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev for (i = 0; i < nHeight2D; i++) 96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (nSizeLeft >= nWidth2D) 98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Memcpy(pOutBuffer, pInBuffer, nWidth2D); 100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Memcpy(pOutBuffer, pInBuffer, nSizeLeft); 103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nSizeLeft -= nWidth2D; 106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pInBuffer = 107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (TIMM_OSAL_U8 *) ((TIMM_OSAL_U32) pInBuffer + nWidth2D); 108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pOutBuffer = 109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (TIMM_OSAL_U8 *) ((TIMM_OSAL_U32) pOutBuffer + nStride2D); 110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**************************************************************** 117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev* EXTERNAL REFERENCES NOTE : only use if not found in header file 118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev****************************************************************/ 119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*--------data declarations -----------------------------------*/ 120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*--------function prototypes ---------------------------------*/ 121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**************************************************************** 123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev* PRIVATE DECLARATIONS Defined and used only here 124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev****************************************************************/ 125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*--------function declarations -------------------------------*/ 126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*--------data declarations -----------------------------------*/ 128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define NUM_DOMAINS 0x4 129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_NOPORT 0xfffffffe 130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//#define INPUT_FILE "../../omx/omx_il_1_x/omx_base/test/patterns/chikita.mp3" 132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define INPUT_FILE "sample_input.mp3" 133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define NON_TUN_OUTPUT_FILE "nt_output.mp3" 134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstatic int gTest = 1; 136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define TIMM_OSAL_MallocaBuffer(_size, bContigous, nBlockAlignment) \ 138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Malloc (_size, TIMM_OSAL_TRUE, 0, TIMMOSAL_MEM_SEGMENT_EXT) 139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_TEST_BUFFERS_OF_TRAFFIC 20 141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_TEST_BAIL_IF_ERROR(_eError) \ 143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if(OMX_ErrorNone != (eError = _eError)){ \ 144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev goto OMX_TEST_BAIL; \ 145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_TEST_SET_ERROR_BAIL(_eCode, _desc) \ 148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ \ 149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = _eCode; \ 150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(_desc);\ 151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev goto OMX_TEST_BAIL; \ 152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_TEST_INIT_STRUCT(_s_, _name_) \ 155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev memset(&(_s_), 0x0, sizeof(_name_)); \ 156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (_s_).nSize = sizeof(_name_); \ 157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (_s_).nVersion.s.nVersionMajor = 0x1; \ 158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (_s_).nVersion.s.nVersionMinor = 0x1; \ 159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (_s_).nVersion.s.nRevision = 0x0; \ 160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (_s_).nVersion.s.nStep = 0x0 161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define BUFFER_LIST_CLEAR_ENTRY(_pL, _pB)\ 163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pB = _pL->pBufHdr; \ 164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pL->pBufHdr = NULL; \ 165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pL = _pL->pNextBuf; 166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define BUFFER_LIST_SET_ENTRY(_pL, _pB) \ 168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ \ 169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *_pT = _pL; \ 170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while(_pT && _pT->pBufHdr){ \ 171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pT = _pT->pNextBuf; \ 172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } \ 173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if(_pT) \ 174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pT->pBufHdr = _pB; \ 175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define BUFFERLIST_CLEAR_ENTRY(_pL, _pB)\ 178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pB = _pL->pBufHdr; \ 179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pL->pBufHdr = NULL; \ 180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev _pL = _pL->pNextBuf; 181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct _BufferList BufferList; 183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstruct _BufferList 185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BUFFERHEADERTYPE *pBufHdr; 187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BUFFERHEADERTYPE *pOrigBufHdr; 188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pNextBuf; 189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}; 190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct SampleCompTestCtxt 192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hComp; 194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STATETYPE eState; 195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPorts; 196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hStateSetEvent; 197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hPortDisableEvent; 198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hPortEnableEvent; 199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING inFilePath; 200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING outFilePath; 201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev FILE *pOutputFile; 202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev FILE *pInputfile; 203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEOS; 204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pInBufferList; 205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pOutBufferList; 206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bClientAllocBuf; 207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBufDoneCalls; 208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PORT_PARAM_TYPE sPortParam[NUM_DOMAINS]; 209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} SampleCompTestCtxt; 210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//this test compiles only for ducati SYS 212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct TestCtxt 213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hComp; 215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STATETYPE eState; 216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPorts; 217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hStateSetEvent; 218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hPortDisableEvent; 219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hPortEnableEvent; 220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING inFilePath; 221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING outFilePath; 222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev FILE *pOutputFile; 223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev FILE *pInputfile; 224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEOS; 225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pInBufferList; 226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pOutBufferList; 227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bClientAllocBuf; 228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBufDoneCalls; 229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //OMX_PORT_PARAM_TYPE sPortParam[NUM_DOMAINS]; 230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} TestCtxt; 231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstatic OMX_U32 nInBufCount = 0; 234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstatic OMX_U32 nOutBufCount = 0; 235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//Semaphore_Handle EBDSem; 238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//Semaphore_Params EBDsemParams; 239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//Semaphore_Handle FBDSem; 241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//Semaphore_Params FBDsemParams; 242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn OMX_TEST_ErrorToString :: ERROR to STRING */ 244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_STRING OMX_TEST_ErrorToString(OMX_ERRORTYPE eError) 246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING errorString; 249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev switch (eError) 251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorNone: 254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorNone"; 255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorInsufficientResources: 257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorInsufficientResources"; 258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorUndefined: 260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorUndefined"; 261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorInvalidComponentName: 263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorInvalidComponentName"; 264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorComponentNotFound: 266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorComponentNotFound"; 267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorInvalidComponent: 269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorInvalidComponent"; 270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorBadParameter: 272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorBadParameter"; 273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorNotImplemented: 275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorNotImplemented"; 276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorUnderflow: 278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorUnderflow"; 279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorOverflow: 281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorOverflow"; 282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorHardware: 284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorHardware"; 285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorInvalidState: 287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorInvalidState"; 288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorStreamCorrupt: 290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorStreamCorrupt"; 291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorPortsNotCompatible: 293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorPortsNotCompatible"; 294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorResourcesLost: 296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorResourcesLost"; 297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorNoMore: 299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorNoMore"; 300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorVersionMismatch: 302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorVersionMismatch"; 303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorNotReady: 305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorNotReady"; 306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorTimeout: 308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorTimeout"; 309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorSameState: 311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorSameState"; 312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorResourcesPreempted: 314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorResourcesPreempted"; 315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorPortUnresponsiveDuringAllocation: 317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorPortUnresponsiveDuringAllocation"; 318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorPortUnresponsiveDuringDeallocation: 320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorPortUnresponsiveDuringDeallocation"; 321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorPortUnresponsiveDuringStop: 323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorPortUnresponsiveDuringStop"; 324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorIncorrectStateTransition: 326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorIncorrectStateTransition"; 327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorIncorrectStateOperation: 329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorIncorrectStateOperation"; 330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorUnsupportedSetting: 332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorUnsupportedSetting"; 333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorUnsupportedIndex: 335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorUnsupportedIndex"; 336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorBadPortIndex: 338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorBadPortIndex"; 339c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 340c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorPortUnpopulated: 341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorPortUnpopulated"; 342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorComponentSuspended: 344c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorComponentSuspended"; 345c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 346c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorDynamicResourcesUnavailable: 347c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorDynamicResourcesUnavailable"; 348c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 349c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorMbErrorsInFrame: 350c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorMbErrorsInFrame"; 351c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 352c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorFormatNotDetected: 353c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorFormatNotDetected"; 354c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 355c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorContentPipeOpenFailed: 356c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorContentPipeOpenFailed"; 357c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorContentPipeCreationFailed: 359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorContentPipeCreationFailed"; 360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 361c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorSeperateTablesUsed: 362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorSeperateTablesUsed"; 363c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_ErrorTunnelingUnsupported: 365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "ErrorTunnelingUnsupported"; 366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev default: 368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev errorString = "<unknown>"; 369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 370c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return errorString; 372c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 373c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 374c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 375c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn OMX_TEST_StateToString :: STATE to STRING */ 376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 377c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_STRING OMX_TEST_StateToString(OMX_STATETYPE eState) 378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 379c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING StateString; 380c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 381c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev switch (eState) 382c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 383c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_StateInvalid: 384c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev StateString = "Invalid"; 385c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 386c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_StateLoaded: 387c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev StateString = "Loaded"; 388c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 389c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_StateIdle: 390c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev StateString = "Idle"; 391c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 392c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_StateExecuting: 393c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev StateString = "Executing"; 394c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 395c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_StatePause: 396c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev StateString = "Pause"; 397c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 398c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_StateWaitForResources: 399c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev StateString = "WaitForResources "; 400c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 401c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev default: 402c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev StateString = "<unknown>"; 403c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 404c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 405c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 406c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return StateString; 407c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 408c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 409c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Application callback Functions */ 410c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 411c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_EventHandler :: Application callback */ 412c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 413c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_EventHandler(OMX_IN OMX_HANDLETYPE hComponent, 414c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pAppData, 415c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_EVENTTYPE eEvent, 416c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nData1, OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) 417c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 418c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleCompTestCtxt *pContext; 419c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 420c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\n___________ ENTERED CLIENT CALLBACK:%s", __FUNCTION__); 421c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 422c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pAppData == NULL) 423c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return OMX_ErrorNone; 424c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 425c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext = (SampleCompTestCtxt *) pAppData; 426c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 427c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev switch (eEvent) 428c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 429c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventCmdComplete: 430c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\n OMX_EventCmdComplete case: \n"); 431c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (OMX_CommandStateSet == nData1) 432c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 433c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" Component Transitioned to %s state \n", 434c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_StateToString((OMX_STATETYPE) nData2)); 435c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->eState = (OMX_STATETYPE) nData2; 436c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SemaphoreRelease(pContext->hStateSetEvent); 437c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else if (OMX_CommandFlush == nData1) 438c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 439c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Nothing to do over here */ 440c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else if (OMX_CommandPortDisable == nData1) 441c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 442c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Nothing to do over here */ 443c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SemaphoreRelease(pContext-> 444c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev hPortDisableEvent); 445c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else if (OMX_CommandPortEnable == nData1) 446c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 447c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Nothing to do over here */ 448c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else if (OMX_CommandMarkBuffer == nData1) 449c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 450c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Nothing to do over here */ 451c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 452c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 453c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 454c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventError: 455c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nOMX EVENT ERROR!!!!!! \n"); 456c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 457c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 458c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventMark: 459c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 460c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 461c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventPortSettingsChanged: 462c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 463c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 464c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventBufferFlag: 465c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 466c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 467c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventResourcesAcquired: 468c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 469c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 470c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventComponentResumed: 471c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 472c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 473c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventDynamicResourcesAvailable: 474c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 475c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 476c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev case OMX_EventPortFormatDetected: 477c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 478c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 479c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev default: 480c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 481c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 482c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 483c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev goto OMX_TEST_BAIL; 484c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 485c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return OMX_ErrorNone; 486c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 487c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 488c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 489c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_EmptyBufferDone :: Application callback */ 490c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 491c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_EmptyBufferDone(OMX_IN OMX_HANDLETYPE hComponent, 492c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pAppData, OMX_IN OMX_BUFFERHEADERTYPE * pBuffer) 493c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 494c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleCompTestCtxt *pContext; 495c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 496c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\n___________ ENTERED CLIENT CALLBACK:%s", __FUNCTION__); 497c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 498c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pAppData == NULL) 499c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return OMX_ErrorNone; 500c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 501c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext = (SampleCompTestCtxt *) pAppData; 502c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->nBufDoneCalls++; 503c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 504c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BUFFER_LIST_SET_ENTRY(pContext->pInBufferList, pBuffer); 505c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //Semaphore_post(EBDSem); 506c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 507c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev goto OMX_TEST_BAIL; 508c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 509c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nEBD done\n"); 510c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return OMX_ErrorNone; 511c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 512c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 513c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 514c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_FillBufferDone :: Application callback */ 515c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 516c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_FillBufferDone(OMX_IN OMX_HANDLETYPE hComponent, 517c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pAppData, OMX_IN OMX_BUFFERHEADERTYPE * pBuffHeader) 518c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 519c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleCompTestCtxt *pContext; 520c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 521c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\n___________ ENTERED CLIENT CALLBACK:%s", __FUNCTION__); 522c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 523c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pAppData == NULL) 524c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return OMX_ErrorNone; 525c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 526c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext = (SampleCompTestCtxt *) pAppData; 527c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->nBufDoneCalls++; 528c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 529c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->pOutputFile && gTest) 530c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 531c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" writing to output file :: buffer cnt : %d\n", 532c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nOutBufCount); 533c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nOutBufCount++; 534c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev fwrite(pBuffHeader->pBuffer, 1, pBuffHeader->nFilledLen, 535c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pOutputFile); 536c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 537c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 538c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BUFFER_LIST_SET_ENTRY(pContext->pOutBufferList, pBuffHeader); 539c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //Semaphore_post(FBDSem); 540c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 541c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev goto OMX_TEST_BAIL; 542c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 543c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nFBD done\n"); 544c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return OMX_ErrorNone; 545c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 546c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 547c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 548c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstatic void SampleTest_ReadInputFile(SampleCompTestCtxt * pContext, 549c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PTR pData, OMX_U32 nBytes, FILE * fp) 550c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 551c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nReadSize = 0; 552c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 553c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nIn read i/p file\n"); 554c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pData == NULL) 555c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npData is NULL\n"); 556c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev else 557c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npData = %x\n", pData); 558c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nnBytes = %d\n", nBytes); 559c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (fp == NULL) 560c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nfp is NULL\n"); 561c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev else 562c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nfp = %x\n", fp); 563c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nReadSize = fread(pData, 1, nBytes, fp); 564c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (nReadSize != nBytes) 565c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 566c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->bEOS = OMX_TRUE; 567c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 568c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 569c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" Reading from file :: Buffer cont : %d \n", nInBufCount); 570c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nInBufCount++; 571c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 572c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 573c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 574c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_WriteInBuffers :: Reads a buffer from a file and send to Comp */ 575c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 576c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_WriteInBuffers(SampleCompTestCtxt * pContext) 577c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 578c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 579c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE eError = OMX_ErrorNone; 580c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pList; 581c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BUFFERHEADERTYPE *pBufHeader; 582c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 583c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 *pTmpBuffer = NULL, *pOrigTmpBuffer = NULL; 584c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 585c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pList = pContext->pInBufferList; 586c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (pList && pList->pBufHdr) 587c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 588c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BUFFERLIST_CLEAR_ENTRY(pList, pBufHeader); 589c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nAbout to read from input file\n"); 590c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#if defined(OMX_SAMPLE_TILER_TEST) 591c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 592c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //OMX_SAMPLE_BUFFER_SIZE is the total amt of data to be sent in the buffer 593c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTmpBuffer = 594c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Malloc(OMX_SAMPLE_BUFFER_SIZE, 0, 0, 0); 595c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pTmpBuffer == NULL) 596c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_SET_ERROR_BAIL 597c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_ErrorInsufficientResources, 598c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev "malloc failed \n"); 599c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pOrigTmpBuffer = pTmpBuffer; 600c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 601c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleTest_ReadInputFile(pContext, pTmpBuffer, 602c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SAMPLE_BUFFER_SIZE, pContext->pInputfile); 603c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 604c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Test_Util_Memcpy_1Dto2D(pBufHeader->pBuffer, pTmpBuffer, 605c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SAMPLE_BUFFER_SIZE, OMX_SAMPLE_IN_HEIGHT, 606c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SAMPLE_IN_WIDTH, STRIDE_LINUX); 607c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufHeader->nFilledLen = OMX_SAMPLE_BUFFER_SIZE; 608c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 609c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nBefore ETB pBufHeader->nInputPortIndex = %d\n", 610c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufHeader->nInputPortIndex); 611c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 612c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pOrigTmpBuffer); 613c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 614c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#else 615c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleTest_ReadInputFile(pContext, pBufHeader->pBuffer, 616c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufHeader->nAllocLen, pContext->pInputfile); 617c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufHeader->nFilledLen = pBufHeader->nAllocLen; 618c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 619c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 620c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->bEOS == OMX_TRUE) 621c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 622c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufHeader->nFlags |= OMX_BUFFERFLAG_EOS; 623c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 624c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 625c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_EmptyThisBuffer(pContext->hComp, pBufHeader); 626c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 627c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 628c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 629c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 630c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 631c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return eError; 632c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 633c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 634c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 635c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 636c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_ReadOutBuffers :: Send out buffers */ 637c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 638c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 639c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_ReadOutBuffers(SampleCompTestCtxt * pContext) 640c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 641c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 642c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE eError = OMX_ErrorNone; 643c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pList; 644c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BUFFERHEADERTYPE *pBufHeader; 645c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 646c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pList = pContext->pOutBufferList; 647c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (pList && pList->pBufHdr) 648c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 649c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nAbout to do FTB\n"); 650c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 651c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BUFFERLIST_CLEAR_ENTRY(pList, pBufHeader); 652c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 653c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_FillThisBuffer(pContext->hComp, pBufHeader); 654c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 655c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 656c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pBufHeader->nFlags == OMX_BUFFERFLAG_EOS) 657c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 658c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->nBufDoneCalls = OMX_TEST_BUFFERS_OF_TRAFFIC; 659c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 660c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 661c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 662c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 663c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return eError; 664c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 665c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 666c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 667c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 668c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 669c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 670c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_AllocateBuffers :: Allocates the Resources on the available ports */ 671c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 672c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_AllocateBuffers(SampleCompTestCtxt * pContext, 673c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PARAM_PORTDEFINITIONTYPE * pPortDef) 674c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 675c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE eError = OMX_ErrorNone; 676c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 *pBuffer = NULL; 677c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pBufferList; 678c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pTemp; 679c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BUFFERHEADERTYPE *pBufferHdr; 680c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 i = 100; 681c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_COMPONENTTYPE *pComp; 682c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 683c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 684c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev MemAllocBlock *pBlock = NULL; 685c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nNumBlocks = 1; 686c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 687c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*For i/p port allocate 2D packed buffer, for o/p port allocate 1D buffer. 688c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevIdeally client should get this from GetParams but this is just a sample test so 689c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevvalues are hardcoded*/ 690c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 691c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pPortDef->nPortIndex == OMX_SAMPLE_INPUT_PORT) 692c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 693c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nNumBlocks = 2; 694c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock = 695c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Malloc(sizeof(MemAllocBlock) * nNumBlocks, 0, 0, 696c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 0); 697c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Memset(pBlock, 0, sizeof(MemAllocBlock) * nNumBlocks); 698c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[0].dim.area.width = OMX_SAMPLE_IN_2DYWIDTH; 699c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[0].dim.area.height = OMX_SAMPLE_IN_2DYHEIGHT; 700c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[0].pixelFormat = PIXEL_FMT_8BIT; 701c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[1].dim.area.width = OMX_SAMPLE_IN_2DUVWIDTH; 702c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[1].dim.area.height = OMX_SAMPLE_IN_2DUVHEIGHT; 703c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[1].pixelFormat = PIXEL_FMT_16BIT; 704c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 705c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 706c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nNumBlocks = 1; 707c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock = 708c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Malloc(sizeof(MemAllocBlock) * nNumBlocks, 0, 0, 709c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 0); 710c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Memset(pBlock, 0, sizeof(MemAllocBlock) * nNumBlocks); 711c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[0].dim.len = OMX_SAMPLE_BUFFER_SIZE; 712c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBlock[0].pixelFormat = PIXEL_FMT_PAGE; 713c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 714c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 715c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 716c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev for (i = 0; i < pPortDef->nBufferCountActual; i++) 717c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 718c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferList = 719c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (BufferList *) TIMM_OSAL_Malloc(sizeof(BufferList), 720c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_TRUE, 0, TIMMOSAL_MEM_SEGMENT_INT); 721c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (!pBufferList) 722c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 723c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_SET_ERROR_BAIL 724c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_ErrorInsufficientResources, 725c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev "malloc failed \n"); 726c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 727c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 728c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->bClientAllocBuf) 729c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 730c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 731c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 732c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*For i/p port allocate 2D packed buffer, for o/p port allocate 1D buffer. 733c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevIdeally client should get this from GetParams but this is just a sample test so 734c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevvalues are hardcoded*/ 735c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBuffer = MemMgr_Alloc(pBlock, nNumBlocks); 736c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nMemMgr allocated buffer = 0x%x\n", pBuffer); 737c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#else 738c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBuffer = 739c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_U8 *) TIMM_OSAL_MallocaBuffer(pPortDef-> 740c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nBufferSize, pPortDef->bBuffersContiguous, 741c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pPortDef->nBufferAlignment); 742c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 743c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 744c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 745c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (!pBufferList) 746c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 747c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_SET_ERROR_BAIL 748c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_ErrorInsufficientResources, 749c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev "malloc failed \n"); 750c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 751c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 752c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nCalling UseBuf on port %d\n", 753c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pPortDef->nPortIndex); 754c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = 755c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_UseBuffer(pContext->hComp, &pBufferHdr, 756c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pPortDef->nPortIndex, 0, pPortDef->nBufferSize, 757c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBuffer); 758c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 759c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 760c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 761c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 762c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 763c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 764c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pComp = (OMX_COMPONENTTYPE *) pContext->hComp; 765c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nCalling allocate buffer\n"); 766c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = 767c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AllocateBuffer(pContext->hComp, &pBufferHdr, 768c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pPortDef->nPortIndex, 0, pPortDef->nBufferSize); 769c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 770c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 771c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 772c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npBufferHdr->nOutputPortIndex = %d\n", 773c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nOutputPortIndex); 774c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npBufferHdr->nInputPortIndex = %d\n", 775c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nInputPortIndex); 776c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferList->pNextBuf = NULL; 777c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferList->pBufHdr = pBufferHdr; 778c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferList->pOrigBufHdr = pBufferHdr; 779c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 780c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pPortDef->eDir == OMX_DirInput) 781c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 782c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npBufferHdr->nOutputPortIndex = %d\n", 783c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nOutputPortIndex); 784c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npBufferHdr->nInputPortIndex = %d\n", 785c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nInputPortIndex); 786c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nOutputPortIndex = OMX_NOPORT; 787c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->pInBufferList == NULL) 788c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 789c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pInBufferList = pBufferList; 790c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 791c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 792c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pContext->pInBufferList; 793c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (pTemp->pNextBuf) 794c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pTemp->pNextBuf; 795c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp->pNextBuf = pBufferList; 796c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 797c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 798c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 799c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nInputPortIndex = OMX_NOPORT; 800c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npBufferHdr->nOutputPortIndex = %d\n", 801c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nOutputPortIndex); 802c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\npBufferHdr->nInputPortIndex = %d\n", 803c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferHdr->nInputPortIndex); 804c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->pOutBufferList == NULL) 805c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 806c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pOutBufferList = pBufferList; 807c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 808c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 809c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pContext->pOutBufferList; 810c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (pTemp->pNextBuf) 811c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pTemp->pNextBuf; 812c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp->pNextBuf = pBufferList; 813c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 814c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 815c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 816c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 817c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 818c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 819c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pBlock != NULL) 820c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pBlock); 821c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 822c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (eError != OMX_ErrorNone) 823c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 824c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pBufferList) 825c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 826c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pBufferList); 827c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 828c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 829c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 830c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return eError; 831c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 832c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 833c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 834c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_DeInitBuffers :: Destroy the resources */ 835c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 836c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_DeInitBuffers(SampleCompTestCtxt * pContext) 837c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 838c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE eError = OMX_ErrorNone; 839c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 *pBuffer; 840c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pBufferList; 841c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev BufferList *pTemp; 842c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 843c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nRetVal = 0; 844c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 845c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pContext->pInBufferList; 846c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 847c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (pTemp) 848c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 849c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferList = (BufferList *) pTemp; 850c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBuffer = (OMX_U8 *) pTemp->pOrigBufHdr->pBuffer; 851c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 852c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nCalling Free Buffer on port no. %d\n", 853c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp->pOrigBufHdr->nInputPortIndex); 854c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 855c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = 856c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_FreeBuffer(pContext->hComp, 857c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp->pOrigBufHdr->nInputPortIndex, pTemp->pOrigBufHdr); 858c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 859c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 860c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->bClientAllocBuf) 861c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 862c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 863c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 864c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nRetVal = MemMgr_Free(pBuffer); 865c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (nRetVal) 866c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 867c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nError in MemMgr free\n"); 868c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 869c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#else 870c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pBuffer); 871c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 872c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 873c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 874c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pTemp->pNextBuf; 875c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pBufferList) 876c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pBufferList); 877c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 878c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 879c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pInBufferList = NULL; 880c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 881c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pContext->pOutBufferList; 882c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (pTemp) 883c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 884c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBufferList = (BufferList *) pTemp; 885c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pBuffer = (OMX_U8 *) pTemp->pOrigBufHdr->pBuffer; 886c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nCalling Free Buffer on port no. %d\n", 887c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp->pOrigBufHdr->nOutputPortIndex); 888c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 889c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = 890c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_FreeBuffer(pContext->hComp, 891c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp->pOrigBufHdr->nOutputPortIndex, pTemp->pOrigBufHdr); 892c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 893c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->bClientAllocBuf) 894c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 895c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef OMX_SAMPLE_TILER_TEST 896c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nRetVal = MemMgr_Free(pBuffer); 897c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (nRetVal) 898c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 899c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nError in MemMgr free\n"); 900c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 901c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#else 902c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pBuffer); 903c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 904c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 905c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 906c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pTemp = pTemp->pNextBuf; 907c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pBufferList) 908c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_Free(pBufferList); 909c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 910c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 911c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 912c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pOutBufferList = NULL; 913c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 914c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 915c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return eError; 916c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 917c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 918c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 919c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn SampleTest_TransitionWait :: Waits for the transition to be completed , 920c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * incase of loaded to idle Allocates the Resources and while idle to loaded 921c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * destroys the resources */ 922c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 923c322989ae6ff6769490828de1b5eda12b749cce9Iliyan MalchevOMX_ERRORTYPE SampleTest_TransitionWait(OMX_STATETYPE eToState, 924c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleCompTestCtxt * pContext) 925c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 926c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE eError = OMX_ErrorNone; 927c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PARAM_PORTDEFINITIONTYPE tPortDef; 928c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 i, j; 929c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 930c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_SendCommand(pContext->hComp, OMX_CommandStateSet, 931c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eToState, NULL); 932c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 933c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 934c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if ((eToState == OMX_StateIdle) && 935c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (pContext->eState == OMX_StateLoaded)) 936c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 937c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev for (i = 0; i < NUM_DOMAINS; i++) 938c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 939c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev for (j = pContext->sPortParam[i].nStartPortNumber; 940c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev j < pContext->sPortParam[i].nStartPortNumber 941c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev + pContext->sPortParam[i].nPorts; j++) 942c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 943c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 944c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_INIT_STRUCT(tPortDef, 945c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PARAM_PORTDEFINITIONTYPE); 946c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev tPortDef.nPortIndex = j; 947c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev//printf("\nCalling GetParam before UseBuf on port %d\n",j); 948c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_GetParameter(pContext->hComp, 949c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IndexParamPortDefinition, 950c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_PTR) & tPortDef); 951c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 952c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 953c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev// if(tPortDef.bEnabled)//AD 954c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = 955c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleTest_AllocateBuffers(pContext, 956c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev &tPortDef); 957c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 958c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 959c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 960c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 961c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else if ((eToState == OMX_StateLoaded) && 962c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (pContext->eState == OMX_StateIdle)) 963c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 964c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 965c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = SampleTest_DeInitBuffers(pContext); 966c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 967c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 968c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 969c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nWaiting for state set event\n"); 970c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SemaphoreObtain(pContext->hStateSetEvent, 971c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SUSPEND); 972c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nState set event recd.\n"); 973c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 974c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->eState != eToState) 975c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_SET_ERROR_BAIL(OMX_ErrorUndefined, 976c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev " InComplete Transition \n"); 977c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 978c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 979c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev return eError; 980c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 981c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 982c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 983c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 984c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ fn OMX_Sample_UT0001 :: Initializes, move to Idle and then to executing, process 985c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev* buffers and then destroy the component by moving back to idle, loaded, invalid */ 986c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*========================================================*/ 987c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevvoid main(void) 988c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 989c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE eError = OMX_ErrorNone; 990c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hComp = NULL; 991c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_CALLBACKTYPE oCallbacks; 992c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleCompTestCtxt *pContext; 993c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleCompTestCtxt oAppData; 994c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 995c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev int ch1, ch2; 996c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev int pass; 997c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev int while_pass = 0, loc_diff = 0; 998c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 999c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1000c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext = &oAppData; 1001c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" Entering : %s \n", __FUNCTION__); 1002c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev memset(pContext, 0x0, sizeof(SampleCompTestCtxt)); 1003c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1004c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev oCallbacks.EventHandler = SampleTest_EventHandler; 1005c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev oCallbacks.EmptyBufferDone = SampleTest_EmptyBufferDone; 1006c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev oCallbacks.FillBufferDone = SampleTest_FillBufferDone; 1007c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nCalling sem create\n"); 1008c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Initialize Events to Track callbacks */ 1009c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SemaphoreCreate(&pContext->hStateSetEvent, 0); 1010c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SemaphoreCreate(&pContext->hPortDisableEvent, 0); 1011c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //TIMM_OSAL_MutexObtain(pContext->hStateSetEvent, TIMM_OSAL_SUSPEND); 1012c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nSem created\n"); 1013c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1014c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1015c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pInputfile = fopen(INPUT_FILE, "rb"); 1016c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (NULL == pContext->pInputfile) 1017c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1018c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_ErrorInsufficientResources; 1019c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //goto OMX_TEST_BAIL; 1020c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1021c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nInput file opened\n"); 1022c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pOutputFile = fopen(NON_TUN_OUTPUT_FILE, "wb"); 1023c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (NULL == pContext->pOutputFile) 1024c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1025c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_ErrorInsufficientResources; 1026c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //goto OMX_TEST_BAIL; 1027c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1028c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1029c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1030c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Initialize OpenMAX */ 1031c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nInitialize OpenMAX\n"); 1032c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_Init(); 1033c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1034c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Load a component */ 1035c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nLoad a component\n"); 1036c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = 1037c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_GetHandle(&hComp, (OMX_STRING) "OMX.TI.DUCATI1.MISC.SAMPLE", 1038c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext, &oCallbacks); 1039c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1040c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->hComp = hComp; 1041c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevprintf ("\neError = 0x%x\n", eError); 1042c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevif(hComp) 1043c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nhComp = 0x%x\n", hComp); 1044c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Verify that the component is in Loaded state */ 1045c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nVerify that the component is in Loaded state\n"); 1046c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1047c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_GetState(pContext->hComp, &pContext->eState); 1048c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1049c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (OMX_StateLoaded != pContext->eState) 1050c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1051c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_SET_ERROR_BAIL(OMX_ErrorUndefined, 1052c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev "not in loaded state \n"); 1053c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1054c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1055c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* detect all Audio ports on the component */ 1056c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_INIT_STRUCT(pContext->sPortParam[0], OMX_PORT_PARAM_TYPE); 1057c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_GetParameter(hComp, OMX_IndexParamAudioInit, 1058c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_PTR) & pContext->sPortParam[0]); 1059c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1060c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1061c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* detect all video ports on the component */ 1062c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_INIT_STRUCT(pContext->sPortParam[1], OMX_PORT_PARAM_TYPE); 1063c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_GetParameter(hComp, OMX_IndexParamVideoInit, 1064c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_PTR) & pContext->sPortParam[1]); 1065c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1066c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1067c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* detect all image ports on the component */ 1068c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_INIT_STRUCT(pContext->sPortParam[2], OMX_PORT_PARAM_TYPE); 1069c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_GetParameter(hComp, OMX_IndexParamImageInit, 1070c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_PTR) & pContext->sPortParam[2]); 1071c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1072c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1073c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* detect all other ports on the component */ 1074c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_INIT_STRUCT(pContext->sPortParam[3], OMX_PORT_PARAM_TYPE); 1075c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_GetParameter(hComp, OMX_IndexParamOtherInit, 1076c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev (OMX_PTR) & pContext->sPortParam[3]); 1077c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1078c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1079c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->nPorts = pContext->sPortParam[0].nPorts + 1080c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->sPortParam[1].nPorts + 1081c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->sPortParam[2].nPorts + pContext->sPortParam[3].nPorts; 1082c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1083c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1084c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->bClientAllocBuf = OMX_SAMPLE_USEBUF; 1085c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pContext->bClientAllocBuf == OMX_TRUE) 1086c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1087c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" Client does Allocation of buffers \n"); 1088c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 1089c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1090c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" Component does Allocation of buffers \n"); 1091c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1092c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1093c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Transition to Idle state */ 1094c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1095c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = SampleTest_TransitionWait(OMX_StateIdle, pContext); 1096c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1097c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Transition to Executing state */ 1098c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = SampleTest_TransitionWait(OMX_StateExecuting, pContext); 1099c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nAbout to start processing buffers\n"); 1101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* process buffers */ 1104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (pContext->nBufDoneCalls < OMX_TEST_BUFFERS_OF_TRAFFIC) 1106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = SampleTest_WriteInBuffers(pContext); 1109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = SampleTest_ReadOutBuffers(pContext); 1112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while_pass++; 1114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //printf("\n WHILE PROCESS LOOP COUNT: BufDoneCount = %d %d", 1115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev // while_pass, pContext->nBufDoneCalls); 1116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev //printf("\n Waiting on Sample component to respond"); 1118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev gTest = 0; 1123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Transition back to Idle state */ 1125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = SampleTest_TransitionWait(OMX_StateIdle, pContext); 1126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* Trasnition back to Loaded state */ 1129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = SampleTest_TransitionWait(OMX_StateLoaded, pContext); 1130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL_IF_ERROR(eError); 1131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_BAIL: 1134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev fclose(pContext->pInputfile); 1136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev fclose(pContext->pOutputFile); 1137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (eError == OMX_ErrorNone) 1139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_FreeHandle(pContext->hComp); 1141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_Deinit(); 1142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 1143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleTest_TransitionWait(OMX_StateInvalid, pContext); 1145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev SampleTest_DeInitBuffers(pContext); 1146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_FreeHandle(pContext->hComp); 1148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_Deinit(); 1149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SemaphoreDelete(pContext->hStateSetEvent); 1152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev TIMM_OSAL_SemaphoreDelete(pContext->hPortDisableEvent); 1153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /* emit the Test Result */ 1155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (OMX_ErrorNone != eError) 1156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" TestCase Failed and returned an error:: %s \n", 1158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_TEST_ErrorToString(eError)); 1159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 1160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf 1162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ("\nTest case has ended, now comparing input and output files\n"); 1163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pInputfile = fopen(INPUT_FILE, "rb"); 1164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (NULL == pContext->pInputfile) 1165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\n Error in opening INPUT_FILE"); 1167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_ErrorInsufficientResources; 1168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pContext->pOutputFile = fopen(NON_TUN_OUTPUT_FILE, "rb"); 1171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (NULL == pContext->pOutputFile) 1172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\n Error in opening NON_TUN_OUTPUT_FILE"); 1174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_ErrorInsufficientResources; 1175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pass = 1; 1177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev while (1) 1178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (eError != OMX_ErrorNone) 1180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pass = 0; 1182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 1183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ch1 = fgetc(pContext->pInputfile); 1185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ch2 = fgetc(pContext->pOutputFile); 1186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev loc_diff++; 1187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (ch1 == EOF || ch2 == EOF) 1188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 1190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (ch1 != ch2) 1192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pass = 0; 1194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\n \n"); 1195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf 1196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ("\n FILE SIZE = 320 KB - NUMBER OF ITERATIONS = 20 (10 for INPUT AND 10 FOR OUTPUT buffers\n"); 1197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf 1198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev ("\n ################### LOCATION OF DIFFERENCE: %d ################### \n", 1199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev loc_diff); 1200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev break; 1201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev fclose(pContext->pInputfile); 1204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev fclose(pContext->pOutputFile); 1205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (pass == 1) 1206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" Test Case has Passed\n"); 1207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev else 1208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nTest case has failed. (EOF not reached)\n"); 1210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev eError = OMX_ErrorUndefined; 1211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev if (eError == OMX_ErrorNone) 1215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf(" Test Case has Passed :) \n"); 1217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } else 1218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev { 1219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev printf("\nTest case has failed.(OMX Error)\n"); 1220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } 1221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 1222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1223