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_codecinterface.h
30 *  The LCML header file contains the interface used by
31 *  and the component to access common items.
32 */
33
34#ifndef __LCML_CODECINTERFACE_H__
35#define __LCML_CODECINTERFACE_H__
36
37#include <OMX_Core.h>
38#include <OMX_TI_Debug.h>
39/**
40 * Commands to send messages to codec
41 */
42typedef enum
43{
44    EMMCodecControlSendDspMessage,
45    EMMCodecControlPause,
46    EMMCodecControlStart,
47    MMCodecControlStop,
48    EMMCodecControlDestroy,
49    EMMCodecControlAlgCtrl,
50    EMMCodecControlStrmCtrl,
51    EMMCodecControlUsnEos
52}TControlCmd;
53
54
55/**
56 * Type fo buffer ENUM
57 */
58typedef enum
59{
60    /*EMMCodecInputBuffer,
61    EMMCodecOuputBuffer,
62    EMMCodecScratchBuffer*/
63    EMMCodecInputBufferMapBufLen  = 1000,
64    EMMCodecOutputBufferMapBufLen  = 1001,
65    EMMCodecInputBufferMapReuse  = 1002,
66    EMMCodecOutputBufferMapReuse  = 1003,
67    EMMCodecInputBuffer  = 2000,
68    EMMCodecStream0      = 2000,
69    EMMCodecOuputBuffer  = 2001,
70    EMMCodecStream1      = 2001,
71    EMMCodecStream2,
72    EMMCodecStream3,
73    EMMCodecStream4,
74    EMMCodecStream5,
75    EMMCodecStream6,
76    EMMCodecStream7,
77    EMMCodecStream8,
78    EMMCodecStream9,
79    EMMCodecStream10,
80    EMMCodecStream11,
81    EMMCodecStream12,
82    EMMCodecStream13,
83    EMMCodecStream14,
84    EMMCodecStream15,
85    EMMCodecStream16,
86    EMMCodecStream17,
87    EMMCodecStream18,
88    EMMCodecStream19,
89    EMMCodecStream20
90}TMMCodecBufferType;
91
92
93/**
94 * Generic interface provided to write and codec needs to implement all
95 * function present to use this structure
96 */
97typedef struct LCML_CODEC_INTERFACE
98{
99    OMX_ERRORTYPE (*InitMMCodec)(OMX_HANDLETYPE hComponent,
100                                 OMX_STRING codecName,
101                                 void *toCodecInitParams,
102                                 void *fromCodecInfoStruct,
103                                 LCML_CALLBACKTYPE *pCallbacks);
104
105    OMX_ERRORTYPE (*InitMMCodecEx)(OMX_HANDLETYPE hComponent,
106                                   OMX_STRING  codecName,
107                                   void *toCodecInitParams,
108                                   void *fromCodecInfoStruct,
109                                   LCML_CALLBACKTYPE *pCallbacks,
110                                   OMX_STRING  Args);
111
112    OMX_ERRORTYPE (*WaitForEvent)(OMX_HANDLETYPE hComponent,
113                                  TUsnCodecEvent event,
114                                  void *args[10] );
115
116    OMX_ERRORTYPE (*QueueBuffer)(OMX_HANDLETYPE hComponent,
117                                 TMMCodecBufferType bufType,
118                                 OMX_U8 *buffer,
119                                 OMX_S32 bufferLen,
120                                 OMX_S32 bufferSizeUsed,
121                                 OMX_U8 *auxInfo,
122                                 OMX_S32 auxInfoLen,
123                                 OMX_U8 *usrArg);
124
125    OMX_ERRORTYPE (*ControlCodec)(OMX_HANDLETYPE hComponent,
126                                  TControlCmd iCodecCmd,
127                                  void *args [10]);
128
129    OMX_PTR pCodecPrivate;
130    OMX_HANDLETYPE pCodec;
131    struct OMX_TI_Debug dbg;
132
133}LCML_CODEC_INTERFACE;
134
135#endif /* __MMCODECINTERFACE_H__ */
136
137