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/*  ==================================================================== */
44typedef enum {
45    INPUT_BUFFER,
46    OUTPUT_BUFFER
47}Buffer_Type;
48
49/* ======================================================================= */
50/**
51 * Enum for method of data transfer
52 */
53/*  ==================================================================== */
54typedef 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/*  ==================================================================== */
66typedef 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/*  ==================================================================== */
78typedef 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/*  ==================================================================== */
90typedef 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/*  ==================================================================== */
102typedef 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 */
116typedef enum {
117    DOES_NOT_EXIST,
118    ACTIVE,
119    INACTIVE
120} COMPONENT_Status;
121
122typedef 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/*  ==================================================================== */
134typedef 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
146typedef 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 */
155typedef 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/*  ==================================================================== */
167typedef 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
185typedef 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
200typedef 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
224typedef 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
236typedef 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
253typedef 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/*  ==================================================================== */
262typedef 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