Home | History | Annotate | Download | only in inc
      1 
      2 /*
      3  * Copyright (C) Texas Instruments - http://www.ti.com/
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2.1 of the License, or (at your option) any later version.
      9  *
     10  *
     11  * This library is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14  * Lesser General Public License for more details.
     15  *
     16  *
     17  * You should have received a copy of the GNU Lesser General Public
     18  * License along with this library; if not, write to the Free Software
     19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     20  */
     21 /* ====================================================================
     22 *             Texas Instruments OMAP(TM) Platform Software
     23 * (c) Copyright Texas Instruments, Incorporated. All Rights Reserved.
     24 *
     25 * Use of this software is controlled by the terms and conditions found
     26 * in the license agreement under which this software has been supplied.
     27 * ==================================================================== */
     28 
     29 /** LCML_Types.h
     30  *  The LCML header file contains the definitions used by both the
     31  *  application and the component to access common items.
     32  */
     33 #ifndef LCML_TYPES_H
     34 #define LCML_TYPES_H
     35 #include <OMX_Core.h>
     36 #include <dbapi.h>
     37 
     38 
     39 /* ======================================================================= */
     40 /**
     41  * Enum to distinguish between type of buffer
     42  */
     43 /*  ==================================================================== */
     44 typedef enum {
     45     INPUT_BUFFER,
     46     OUTPUT_BUFFER
     47 }Buffer_Type;
     48 
     49 /* ======================================================================= */
     50 /**
     51  * Enum for method of data transfer
     52  */
     53 /*  ==================================================================== */
     54 typedef enum {
     55     STREAM_METHOD,
     56     DMM_METHOD,
     57     DASF
     58 }LCML_TransferMethod;
     59 
     60 
     61 /* ======================================================================= */
     62 /**
     63  * Structure to maintain information regarding streams and related buffers.
     64  */
     65 /*  ==================================================================== */
     66 typedef struct LCML_BUFFERINFO {
     67     OMX_U32 nBuffers;
     68     OMX_U32 nSize;
     69     LCML_TransferMethod DataTrMethod;
     70 }LCML_BUFFERINFO;
     71 
     72 
     73 /* ======================================================================= */
     74 /**
     75  * Structure to encapsulate create phase args.
     76  */
     77 /*  ==================================================================== */
     78 typedef struct LCML_CREATEPHASEARGS {
     79     ULONG cbData;
     80     /*for 2420*/
     81     /*   BYTE cData[LCML_DATA_SIZE];*/
     82     /*for 2430*/
     83     unsigned short cData[LCML_DATA_SIZE];
     84 }LCML_CREATEPHASEARGS;
     85 /* ======================================================================= */
     86 /**
     87  * Enum to distinguish between dlls
     88  */
     89 /*  ==================================================================== */
     90 typedef enum {
     91     DLL_NODEOBJECT,
     92     DLL_PROCESSOR,
     93     DLL_DEPENDENT
     94 }LCML_DllType;
     95 
     96 
     97 /* ======================================================================= */
     98 /**
     99  * Enum to distinguish between types of events
    100  */
    101 /*  ==================================================================== */
    102 typedef enum {
    103     MESSAGING_EVENT,
    104     STREAMING_EVENT
    105 }DSP_EventType;
    106 
    107 
    108 /* ======================================================================= */
    109 /**
    110  * Enum to establish component state
    111  */
    112 /*  ==================================================================== */
    113 
    114 
    115 /* ADD MORE STATES */
    116 typedef enum {
    117     DOES_NOT_EXIST,
    118     ACTIVE,
    119     INACTIVE
    120 } COMPONENT_Status;
    121 
    122 typedef struct NOTIFICATION_OBJ {
    123     DSP_EventType msgType;
    124 /*    DSP_HNOTIFICATION pNotifiObj;*/
    125     struct DSP_NOTIFICATION notifiObj;
    126 }NOTIFICATION_OBJ;
    127 
    128 
    129 /* ======================================================================= */
    130 /**
    131  * Structure to capture uuid information.
    132  */
    133 /*  ==================================================================== */
    134 typedef struct LCML_UUIDINFO {
    135     struct DSP_UUID *uuid;
    136 /*    OMX_STRING DllName;*/
    137     OMX_U8 DllName[50];
    138     LCML_DllType eDllType;
    139 }LCML_UUIDINFO;
    140 /* ======================================================================= */
    141 /**
    142  * Structure to encapsulate dll information.
    143  */
    144 /*  ==================================================================== */
    145 
    146 typedef struct LCML_DLLINFO {
    147     unsigned int nNumOfDLLs;
    148     LCML_UUIDINFO AllUUIDs[LCML_MAX_NUM_OF_DLLs];
    149 }LCML_DLLINFO;
    150 
    151 
    152 
    153 
    154 /* Stream mode types */
    155 typedef enum {
    156     MODE_PROCCOPY,   /* Processor(s) copy stream data payloads */
    157     MODE_ZEROCOPY,   /* Stream buffer pointers swapped, no data copied */
    158     MODE_LDMA,       /* Local DMA : OMAP's System-DMA device */
    159     MODE_RDMA        /* Remote DMA: OMAP's DSP-DMA device */
    160 } LCML_STRMMODE;
    161 
    162 /* ======================================================================= */
    163 /**
    164  * Structure to encapsulate dll information.
    165  */
    166 /*  ==================================================================== */
    167 typedef struct LCML_STRMATTR {
    168     unsigned int        uSegid;
    169     unsigned int        uBufsize;
    170     unsigned int        uNumBufs;
    171     unsigned int        uAlignment;
    172     unsigned int        uTimeout;
    173     LCML_STRMMODE       lMode;
    174     unsigned int        uDMAChnlId;
    175     unsigned int        uDMAPriority;
    176 } LCML_STRMATTR;
    177 
    178 
    179 /* ======================================================================= */
    180 /**
    181  * Structure to encapsulate dll information.
    182  */
    183 /*  ==================================================================== */
    184 
    185 typedef struct LCML_DEVICERENDERING{
    186     int TypeofDevice;
    187     int TypeofRender;   /* 0 for playback and 1 for record*/
    188     LCML_UUIDINFO AllUUIDs[LCML_MAX_NUM_OF_DLLs];
    189     LCML_STRMATTR * DspStream;
    190 }LCML_DEVICERENDERING;
    191 
    192 
    193 /* ======================================================================= */
    194 /**
    195  * This enum is mean to abtract the enumerations of messages that are
    196  * recieved from dsp processor.
    197  */
    198 /*  ==================================================================== */
    199 
    200 typedef enum
    201 {
    202     EMMCodecDspError = -200,
    203     EMMCodecInternalError = -201,
    204     EMMCodecInitError = -202,
    205     EMMCodecDspMessageRecieved = 1,
    206     EMMCodecBufferProcessed,
    207     EMMCodecProcessingStarted,
    208     EMMCodecProcessingPaused,
    209     EMMCodecProcessingStoped,
    210     EMMCodecProcessingEof,
    211     EMMCodecBufferNotProcessed,
    212     EMMCodecAlgCtrlAck,
    213     EMMCodecStrmCtrlAck
    214 
    215 }TUsnCodecEvent;
    216 
    217 /* ======================================================================= */
    218 /**
    219  * This enum keeps track of the state of the codec in order to allow the messaging thread to decrease the timeout
    220  * while waiting for events when in the stopped state so that the thread deletion latency will be minimal
    221  */
    222 /*  ==================================================================== */
    223 
    224 typedef enum
    225 {
    226     EMessagingThreadCodecRunning,
    227     EMessagingThreadCodecStopped
    228 }LCML_MESSAGINGTHREAD_STATE;
    229 
    230 /* ======================================================================= */
    231 /**
    232  * Structure used to store reserve address of buffer mapped to DSP
    233  */
    234 /*  ==================================================================== */
    235 
    236 typedef struct DMM_BUFFER_OBJ {
    237     void* pAllocated;
    238     void* pReserved;
    239     void* pMapped;
    240     void* bufReserved;
    241     void* paramReserved;
    242 /*  void* structReserved;*/
    243     int nSize;
    244 } DMM_BUFFER_OBJ;
    245 
    246 /* ======================================================================= */
    247 /**
    248  * Structure used to pass in the callback function. LCML call back functions
    249  * are defined in this manner
    250  */
    251 /*  ==================================================================== */
    252 
    253 typedef struct LCML_CALLBACKTYPE {
    254     void (*LCML_Callback) (TUsnCodecEvent event,void * args [10]);
    255 }LCML_CALLBACKTYPE;
    256 
    257 /* ======================================================================= */
    258 /**
    259  * Structure maintaining information for LCML.
    260  */
    261 /*  ==================================================================== */
    262 typedef struct LCML_DSP {
    263     DSP_HNODE hNode;
    264 	DSP_HNODE hDasfNode;
    265     DSP_HPROCESSOR hProc;
    266     DMM_BUFFER_OBJ InDmmBuffer[QUEUE_SIZE];
    267     DMM_BUFFER_OBJ OutDmmBuffer[QUEUE_SIZE];
    268     /*COMPONENT_Status CompStatus;*/
    269     LCML_CALLBACKTYPE Callbacks;
    270     /*needs to be filled by application*/
    271     LCML_BUFFERINFO In_BufInfo;
    272     LCML_BUFFERINFO Out_BufInfo;
    273     OMX_U16 *pCrPhArgs;
    274     LCML_DLLINFO NodeInfo;
    275     LCML_DEVICERENDERING DeviceInfo;
    276     OMX_U32 SegID;
    277     OMX_U32 Timeout;
    278     OMX_U32 Alignment;
    279     OMX_S32 Priority;
    280     OMX_U16 numStreams;
    281     OMX_U32 ProfileID;
    282 }LCML_DSP;
    283 
    284 
    285 #endif /*LCML_TYPES_H*/
    286