Exynos_OMX_Adec.h revision 20d3e6e3118a6e19627296e9247e948d54ec0fb8
1/*
2 *
3 * Copyright 2010 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 *   2011.10.18 : 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
50typedef 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
58typedef 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} EXYNOS_OMX_AUDIODEC_COMPONENT;
67
68
69#ifdef __cplusplus
70extern "C" {
71#endif
72
73OMX_ERRORTYPE Exynos_OMX_UseBuffer(
74    OMX_IN OMX_HANDLETYPE            hComponent,
75    OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
76    OMX_IN OMX_U32                   nPortIndex,
77    OMX_IN OMX_PTR                   pAppPrivate,
78    OMX_IN OMX_U32                   nSizeBytes,
79    OMX_IN OMX_U8                   *pBuffer);
80OMX_ERRORTYPE Exynos_OMX_AllocateBuffer(
81    OMX_IN OMX_HANDLETYPE            hComponent,
82    OMX_INOUT OMX_BUFFERHEADERTYPE **ppBuffer,
83    OMX_IN OMX_U32                   nPortIndex,
84    OMX_IN OMX_PTR                   pAppPrivate,
85    OMX_IN OMX_U32                   nSizeBytes);
86OMX_ERRORTYPE Exynos_OMX_FreeBuffer(
87    OMX_IN OMX_HANDLETYPE hComponent,
88    OMX_IN OMX_U32        nPortIndex,
89    OMX_IN OMX_BUFFERHEADERTYPE *pBufferHdr);
90OMX_ERRORTYPE Exynos_OMX_AllocateTunnelBuffer(
91    EXYNOS_OMX_BASEPORT *pOMXBasePort,
92    OMX_U32              nPortIndex);
93OMX_ERRORTYPE Exynos_OMX_FreeTunnelBuffer(
94    EXYNOS_OMX_BASEPORT *pOMXBasePort,
95    OMX_U32              nPortIndex);
96OMX_ERRORTYPE Exynos_OMX_ComponentTunnelRequest(
97    OMX_IN  OMX_HANDLETYPE hComp,
98    OMX_IN OMX_U32         nPort,
99    OMX_IN OMX_HANDLETYPE  hTunneledComp,
100    OMX_IN OMX_U32         nTunneledPort,
101    OMX_INOUT OMX_TUNNELSETUPTYPE *pTunnelSetup);
102OMX_ERRORTYPE Exynos_OMX_BufferProcess(OMX_HANDLETYPE hComponent);
103OMX_ERRORTYPE Exynos_OMX_AudioDecodeGetParameter(
104    OMX_IN OMX_HANDLETYPE hComponent,
105    OMX_IN OMX_INDEXTYPE  nParamIndex,
106    OMX_INOUT OMX_PTR     ComponentParameterStructure);
107OMX_ERRORTYPE Exynos_OMX_AudioDecodeSetParameter(
108    OMX_IN OMX_HANDLETYPE hComponent,
109    OMX_IN OMX_INDEXTYPE  nIndex,
110    OMX_IN OMX_PTR        ComponentParameterStructure);
111OMX_ERRORTYPE Exynos_OMX_AudioDecodeGetConfig(
112    OMX_HANDLETYPE hComponent,
113    OMX_INDEXTYPE nIndex,
114    OMX_PTR pComponentConfigStructure);
115OMX_ERRORTYPE Exynos_OMX_AudioDecodeSetConfig(
116    OMX_HANDLETYPE hComponent,
117    OMX_INDEXTYPE nIndex,
118    OMX_PTR pComponentConfigStructure);
119OMX_ERRORTYPE Exynos_OMX_AudioDecodeGetExtensionIndex(
120    OMX_IN OMX_HANDLETYPE  hComponent,
121    OMX_IN OMX_STRING      cParameterName,
122    OMX_OUT OMX_INDEXTYPE *pIndexType);
123OMX_ERRORTYPE Exynos_OMX_AudioDecodeComponentInit(OMX_IN OMX_HANDLETYPE hComponent);
124OMX_ERRORTYPE Exynos_OMX_AudioDecodeComponentDeinit(OMX_IN OMX_HANDLETYPE hComponent);
125OMX_BOOL Exynos_Check_BufferProcess_State(EXYNOS_OMX_BASECOMPONENT *pExynosComponent);
126inline void Exynos_UpdateFrameSize(OMX_COMPONENTTYPE *pOMXComponent);
127
128#ifdef __cplusplus
129}
130#endif
131
132#endif /* EXYNOS_OMX_AUDIO_DECODE */
133