Initial version of libomxil-e3250-v4l2
[platform/adaptation/ap_samsung/libomxil-e3250-v4l2.git] / openmax / component / audio / dec / Exynos_OMX_Adec.h
1 /*
2  *
3  * Copyright 2012 Samsung Electronics S.LSI Co. LTD
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 /*
19  * @file        Exynos_OMX_Adec.h
20  * @brief
21  * @author      Yunji Kim (yunji.kim@samsung.com)
22  *
23  * @version     1.1.0
24  * @history
25  *   2012.02.28 : Create
26  */
27
28 #ifndef EXYNOS_OMX_AUDIO_DECODE
29 #define EXYNOS_OMX_AUDIO_DECODE
30
31 #include "OMX_Component.h"
32 #include "Exynos_OMX_Def.h"
33 #include "Exynos_OSAL_Queue.h"
34 #include "Exynos_OMX_Baseport.h"
35 #include "Exynos_OMX_Basecomponent.h"
36
37 #define MAX_AUDIO_INPUTBUFFER_NUM    2
38 #define MAX_AUDIO_OUTPUTBUFFER_NUM   2
39
40 #define DEFAULT_AUDIO_INPUT_BUFFER_SIZE     (16 * 1024)
41 #define DEFAULT_AUDIO_OUTPUT_BUFFER_SIZE    (32 * 1024)
42
43 #define DEFAULT_AUDIO_SAMPLING_FREQ  44100
44 #define DEFAULT_AUDIO_CHANNELS_NUM   2
45 #define DEFAULT_AUDIO_BIT_PER_SAMPLE 16
46
47 #define INPUT_PORT_SUPPORTFORMAT_NUM_MAX    1
48 #define OUTPUT_PORT_SUPPORTFORMAT_NUM_MAX   1
49
50 typedef struct _SRP_DEC_INPUT_BUFFER
51 {
52     void *PhyAddr;      // physical address
53     void *VirAddr;      // virtual address
54     int   bufferSize;   // input buffer alloc size
55     int   dataSize;     // Data length
56 } SRP_DEC_INPUT_BUFFER;
57
58 typedef struct _EXYNOS_OMX_AUDIODEC_COMPONENT
59 {
60     OMX_HANDLETYPE hCodecHandle;
61
62     OMX_BOOL bFirstFrame;
63     OMX_PTR pInputBuffer;
64     SRP_DEC_INPUT_BUFFER SRPDecInputBuffer[MAX_AUDIO_INPUTBUFFER_NUM];
65     OMX_U32  indexInputBuffer;
66
67     /* Buffer Process */
68     OMX_BOOL       bExitBufferProcessThread;
69     OMX_HANDLETYPE hBufferProcessThread;
70
71     OMX_ERRORTYPE (*exynos_codec_bufferProcess) (OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA *pInputData, EXYNOS_OMX_DATA *pOutputData);
72
73     int (*exynos_checkInputFrame)(OMX_U8 *pInputStream, OMX_U32 buffSize, OMX_U32 flag, OMX_BOOL bPreviousFrameEOF, OMX_BOOL *pbEndOfFrame);
74 } EXYNOS_OMX_AUDIODEC_COMPONENT;
75
76
77 #ifdef __cplusplus
78 extern "C" {
79 #endif
80
81 OMX_ERRORTYPE Exynos_OMX_UseBuffer(
82     OMX_IN OMX_HANDLETYPE            hComponent,
83     OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
84     OMX_IN OMX_U32                   nPortIndex,
85     OMX_IN OMX_PTR                   pAppPrivate,
86     OMX_IN OMX_U32                   nSizeBytes,
87     OMX_IN OMX_U8                   *pBuffer);
88 OMX_ERRORTYPE Exynos_OMX_AllocateBuffer(
89     OMX_IN OMX_HANDLETYPE            hComponent,
90     OMX_INOUT OMX_BUFFERHEADERTYPE **ppBuffer,
91     OMX_IN OMX_U32                   nPortIndex,
92     OMX_IN OMX_PTR                   pAppPrivate,
93     OMX_IN OMX_U32                   nSizeBytes);
94 OMX_ERRORTYPE Exynos_OMX_FreeBuffer(
95     OMX_IN OMX_HANDLETYPE hComponent,
96     OMX_IN OMX_U32        nPortIndex,
97     OMX_IN OMX_BUFFERHEADERTYPE *pBufferHdr);
98 OMX_ERRORTYPE Exynos_OMX_AllocateTunnelBuffer(
99     EXYNOS_OMX_BASEPORT *pOMXBasePort,
100     OMX_U32              nPortIndex);
101 OMX_ERRORTYPE Exynos_OMX_FreeTunnelBuffer(
102     EXYNOS_OMX_BASEPORT *pOMXBasePort,
103     OMX_U32              nPortIndex);
104 OMX_ERRORTYPE Exynos_OMX_ComponentTunnelRequest(
105     OMX_IN  OMX_HANDLETYPE hComp,
106     OMX_IN OMX_U32         nPort,
107     OMX_IN OMX_HANDLETYPE  hTunneledComp,
108     OMX_IN OMX_U32         nTunneledPort,
109     OMX_INOUT OMX_TUNNELSETUPTYPE *pTunnelSetup);
110 OMX_ERRORTYPE Exynos_OMX_BufferProcess(OMX_HANDLETYPE hComponent);
111 OMX_ERRORTYPE Exynos_OMX_AudioDecodeGetParameter(
112     OMX_IN OMX_HANDLETYPE hComponent,
113     OMX_IN OMX_INDEXTYPE  nParamIndex,
114     OMX_INOUT OMX_PTR     ComponentParameterStructure);
115 OMX_ERRORTYPE Exynos_OMX_AudioDecodeSetParameter(
116     OMX_IN OMX_HANDLETYPE hComponent,
117     OMX_IN OMX_INDEXTYPE  nIndex,
118     OMX_IN OMX_PTR        ComponentParameterStructure);
119 OMX_ERRORTYPE Exynos_OMX_AudioDecodeGetConfig(
120     OMX_HANDLETYPE hComponent,
121     OMX_INDEXTYPE nIndex,
122     OMX_PTR pComponentConfigStructure);
123 OMX_ERRORTYPE Exynos_OMX_AudioDecodeSetConfig(
124     OMX_HANDLETYPE hComponent,
125     OMX_INDEXTYPE nIndex,
126     OMX_PTR pComponentConfigStructure);
127 OMX_ERRORTYPE Exynos_OMX_AudioDecodeGetExtensionIndex(
128     OMX_IN OMX_HANDLETYPE  hComponent,
129     OMX_IN OMX_STRING      cParameterName,
130     OMX_OUT OMX_INDEXTYPE *pIndexType);
131 OMX_ERRORTYPE Exynos_OMX_AudioDecodeComponentInit(OMX_IN OMX_HANDLETYPE hComponent);
132 OMX_ERRORTYPE Exynos_OMX_AudioDecodeComponentDeinit(OMX_IN OMX_HANDLETYPE hComponent);
133 OMX_BOOL Exynos_Check_BufferProcess_State(EXYNOS_OMX_BASECOMPONENT *pExynosComponent);
134
135 #ifdef __cplusplus
136 }
137 #endif
138
139 #endif /* EXYNOS_OMX_AUDIO_DECODE */