1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details. 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ==================================================================== 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Texas Instruments OMAP(TM) Platform Software 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Use of this software is controlled by the terms and conditions found 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* in the license agreement under which this software has been supplied. 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ==================================================================== */ 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** LCML_dspcodec.h 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The LCML header file contains the definitions used by both the 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * application and the component to access common items. 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef __LCML_DSPCODEC_H__ 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define __LCML_DSPCODEC_H__ 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MAX_OBJS 10 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MAX_STREAMS 10 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 41b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/* 720p implementation */ 42b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define MAX_DMM_BUFFERS 20 43b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*DSP specific*/ 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define DSP_DOF_IMAGE "baseimage.dof" 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define TI_PROCESSOR_DSP 0 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LCML_MAX_NUM_OF_DLLs 10 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define END_OF_CR_PHASE_ARGS 0xFC25 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LCML_DATA_SIZE 42 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define DMM_PAGE_SIZE 4096 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define QUEUE_SIZE 20 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define ROUND_TO_PAGESIZE(n) ((((n)+4095)/DMM_PAGE_SIZE)*DMM_PAGE_SIZE) 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 54b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define __ERROR_PROPAGATION__ 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 57b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/*switch on/off here */ 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 59b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef ANDROID 60b65f253fdc60f6208a54911bee793d225f23cdf8James Dong #include <utils/Log.h> 61b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <oaf_osal.h> 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <oaf_debug.h> 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "perf.h" 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <LCML_Types.h> 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <LCML_CodecInterface.h> 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h> 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*DSP specific*/ 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define DSP_ERROR_EXIT(err, msg, label) \ 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (DSP_FAILED (err)) { \ 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("\n****************LCML ERROR : DSP ************************\n");\ 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Error: %s : Err Num = %lx", msg, err); \ 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; \ 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("\n****************LCML ERROR : DSP ************************\n");\ 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto label; \ 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } /**/ 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This enum is mean to abtract the enumerations of messages that are 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * sent to dsp processor. 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ====================================================================== */ 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum { 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DSPMSG_AUDIO_UID = 1, 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DSPMSG_AUDIO_PARAMETERS, 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DSPMSG_PLAY, 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DSPMSG_PAUSE, 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DSPMSG_STOP, 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DSPMSG_MODE, 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DSPMSG_PLAYCOMPLETED 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} DSP_Messages; 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * USN structure 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iBufferPtr; /* storing buffer pointer MAPPED */ 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iBufferSize; /*buffer size */ 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iParamPtr;/*storing param pointer MAPPED */ 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iParamSize;/*param size */ 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iBufSizeUsed; /* Modified as USN chnages*/ 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iEOSFlag; 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 tBufState; 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 bBufActive; 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 unBufID; 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 ulReserved; 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iArmArg;/* storing dsp mapped address of structure*/ 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iArmbufferArg;/* ARM side buffer pointer*/ 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iArmParamArg;/*ARM side Param pointer*/ 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 Bufoutindex;/* buffer index*/ 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 BufInindex;/*buffer i/p index*/ 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iUsrArg;/*Usr argument*/ 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iStreamID; 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} TArmDspCommunicationStruct; 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*API needs to be exposed to application*/ 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** ======================================================================== 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Initialise the OMX Component specific handle to LCML. The memory is 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* allocated and the dsp node is created. Add notification object to listener 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* thread. 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param hInterface - Handle to LCML which is allocated and filled 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param codecName - not used 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param toCodecInitParams - not used yet 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param fromCodecInfoStruct - not used yet 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param pCallbacks - List of callback that uses to call OMX 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ==========================================================================*/ 142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LCML_InitMMCodec( \ 143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin codecName, \ 145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin toCodecInitParams, \ 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fromCodecInfoStruct , \ 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCallbacks \ 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ) \ 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((LCML_CODEC_INTERFACE*)hInterface)->InitMMCodec( \ 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin codecName, \ 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin toCodecInitParams, \ 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fromCodecInfoStruct , \ 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCallbacks \ 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ) /* Macro End */ 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LCML_InitMMCodecEx( \ 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin codecName, \ 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin toCodecInitParams, \ 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fromCodecInfoStruct , \ 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCallbacks, \ 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Args) \ 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((LCML_CODEC_INTERFACE*)hInterface)->InitMMCodecEx( \ 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin codecName, \ 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin toCodecInitParams, \ 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fromCodecInfoStruct , \ 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCallbacks, \ 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Args) /* Macro End */ 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** ======================================================================== 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* The LCML_WaitForEvent Wait for a event sychronously 175b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* @param hInterface - Handle of the component to be accessed. This is the 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* component handle returned by the call to the GetHandle function. 177b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* @param event - Event occured 178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param args - Array of "void *" that contains the associated arguments for 179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* occured event 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE 182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* If the command successfully executes, the return code will be 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* OMX_NoError. Otherwise the appropriate OMX error will be returned. 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin** ==========================================================================*/ 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LCML_WaitForEvent( \ 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin event, \ 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin args) \ 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((LCML_CODEC_INTERFACE*)hInterface)->ControlCodec( \ 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin event, \ 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin args) /* Macro End */ 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 194b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** ======================================================================== 196b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* The LCML_QueueBuffer send data to DSP convert it into USN format and send 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* it to DSP via setbuff 198b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* @param [in] hInterface - Handle of the component to be accessed. This is 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* the component handle returned by the call to the GetHandle function. 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param bufType - type of buffer 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param buffer - pointer to buffer 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param bufferLen - length of buffer 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param bufferSizeUsed - length of used buffer 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param auxInfo - pointer to parameter 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param auxInfoLen - length of parameter 206b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* @param usrArg - not used 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* If the command successfully executes, the return code will be 209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* OMX_NoError. Otherwise the appropriate OMX error will be returned. 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ==========================================================================*/ 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LCML_QueueBuffer( \ 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bufType, \ 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffer, \ 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bufferLen, \ 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bufferSizeUsed, \ 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin auxInfo, \ 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin auxInfoLen, \ 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin usrArg) \ 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((LCML_CODEC_INTERFACE*)hInterface)->QueueBuffer( \ 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bufType, \ 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffer, \ 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bufferLen, \ 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bufferSizeUsed, \ 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin auxInfo, \ 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin auxInfoLen, \ 228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin usrArg) 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** ======================================================================== 231b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* The LCML_ControlCodec send command to DSP convert it into USN format and 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* send it to DSP 233b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* @param hInterface - Handle of the component to be accessed. This is the 234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* component handle returned by the call to the GetHandle function. 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param bufType - type of buffer 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param iCodecCmd - command refer TControlCmd 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param args - pointer to send some specific command to DSP 238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @return OMX_ERRORTYPE 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* If the command successfully executes, the return code will be 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* OMX_NoError. Otherwise the appropriate OMX error will be returned. 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin** ==========================================================================*/ 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LCML_ControlCodec( \ 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin iCodecCmd, \ 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin args) \ 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((LCML_CODEC_INTERFACE*)hInterface)->ControlCodec( \ 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hInterface, \ 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin iCodecCmd, \ 250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin args) /* Macro End */ 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* First function needs to be called by application 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE GetHandle (OMX_HANDLETYPE* hInterface ); 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 261b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* Struct derives codec interface which have interface to implement for using 262b65f253fdc60f6208a54911bee793d225f23cdf8James Dong* generic codec and also have pointer to DSP specific data and have queues for 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* storing input and output data 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct LCML_DSP_INTERFACE 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE pCodecinterfacehandle; /* handle to interface struct LCML_CODEC_INTERFACE *dspcodecinterface */ 268b65f253fdc60f6208a54911bee793d225f23cdf8James Dong struct LCML_DSP *dspCodec; 269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pComponentPrivate; 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void * iUsrArg; 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*queue to store USN structure*/ 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TArmDspCommunicationStruct* Armoutputstorage[QUEUE_SIZE]; 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TArmDspCommunicationStruct* Arminputstorage[QUEUE_SIZE]; 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TArmDspCommunicationStruct * commStruct; 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iBufinputcount; 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iBufoutputcount; 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 pshutdownFlag; 278b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef __ERROR_PROPAGATION__ 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct DSP_NOTIFICATION * g_aNotificationObjects[3]; 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct DSP_NOTIFICATION * g_aNotificationObjects[1]; 282b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_t g_tidMessageThread; 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 algcntlmapped[QUEUE_SIZE]; 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DMM_BUFFER_OBJ *pAlgcntlDmmBuf[QUEUE_SIZE]; 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 strmcntlmapped[QUEUE_SIZE]; 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DMM_BUFFER_OBJ *pStrmcntlDmmBuf[QUEUE_SIZE]; 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_t mutex; 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 flush_pending[4]; 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bUsnEos; 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_OBJHANDLE pPERF, pPERFcomp; 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 295b65f253fdc60f6208a54911bee793d225f23cdf8James Dong DMM_BUFFER_OBJ mapped_dmm_buffers[MAX_DMM_BUFFERS]; 296b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_U32 mapped_buffer_count; 297b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_BOOL ReUseMap; 298b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pthread_mutex_t m_isStopped_mutex; 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}LCML_DSP_INTERFACE; 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* __MMDSPCODEC_H__ */ 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 305