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