3 * Copyright 2012 Samsung Electronics S.LSI Co. LTD
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 * @file Exynos_OMX_Adec.h
21 * @author Yunji Kim (yunji.kim@samsung.com)
28 #ifndef EXYNOS_OMX_AUDIO_DECODE
29 #define EXYNOS_OMX_AUDIO_DECODE
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"
37 #define MAX_AUDIO_INPUTBUFFER_NUM 2
38 #define MAX_AUDIO_OUTPUTBUFFER_NUM 2
40 #define DEFAULT_AUDIO_INPUT_BUFFER_SIZE (16 * 1024)
41 #define DEFAULT_AUDIO_OUTPUT_BUFFER_SIZE (32 * 1024)
43 #define DEFAULT_AUDIO_SAMPLING_FREQ 44100
44 #define DEFAULT_AUDIO_CHANNELS_NUM 2
45 #define DEFAULT_AUDIO_BIT_PER_SAMPLE 16
47 #define INPUT_PORT_SUPPORTFORMAT_NUM_MAX 1
48 #define OUTPUT_PORT_SUPPORTFORMAT_NUM_MAX 1
50 typedef struct _SRP_DEC_INPUT_BUFFER
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;
58 typedef struct _EXYNOS_OMX_AUDIODEC_COMPONENT
60 OMX_HANDLETYPE hCodecHandle;
64 SRP_DEC_INPUT_BUFFER SRPDecInputBuffer[MAX_AUDIO_INPUTBUFFER_NUM];
65 OMX_U32 indexInputBuffer;
68 OMX_BOOL bExitBufferProcessThread;
69 OMX_HANDLETYPE hBufferProcessThread;
71 OMX_ERRORTYPE (*exynos_codec_bufferProcess) (OMX_COMPONENTTYPE *pOMXComponent, EXYNOS_OMX_DATA *pInputData, EXYNOS_OMX_DATA *pOutputData);
73 int (*exynos_checkInputFrame)(OMX_U8 *pInputStream, OMX_U32 buffSize, OMX_U32 flag, OMX_BOOL bPreviousFrameEOF, OMX_BOOL *pbEndOfFrame);
74 } EXYNOS_OMX_AUDIODEC_COMPONENT;
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,
101 OMX_ERRORTYPE Exynos_OMX_FreeTunnelBuffer(
102 EXYNOS_OMX_BASEPORT *pOMXBasePort,
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);
139 #endif /* EXYNOS_OMX_AUDIO_DECODE */