1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 //#include <stdio.h> |
|
17 #include "omximpl.h" |
|
18 |
|
19 OMX_ERRORTYPE OMXComponentGetComponentVersion( |
|
20 OMX_IN OMX_HANDLETYPE hComponent, |
|
21 OMX_OUT OMX_STRING pComponentName, |
|
22 OMX_OUT OMX_VERSIONTYPE* pComponentVersion, |
|
23 OMX_OUT OMX_VERSIONTYPE* pSpecVersion, |
|
24 OMX_OUT OMX_UUIDTYPE* pComponentUUID); |
|
25 OMX_ERRORTYPE OMXComponentSendCommand( |
|
26 OMX_IN OMX_HANDLETYPE hComponent, |
|
27 OMX_IN OMX_COMMANDTYPE Cmd, |
|
28 OMX_IN OMX_U32 nParam1, |
|
29 OMX_IN OMX_PTR pCmdData); |
|
30 OMX_ERRORTYPE OMXComponentGetParameter( |
|
31 OMX_IN OMX_HANDLETYPE hComponent, |
|
32 OMX_IN OMX_INDEXTYPE nParamIndex, |
|
33 OMX_INOUT OMX_PTR ComponentParameterStructure); |
|
34 OMX_ERRORTYPE OMXComponentSetParameter( |
|
35 OMX_IN OMX_HANDLETYPE hComponent, |
|
36 OMX_IN OMX_INDEXTYPE nIndex, |
|
37 OMX_IN OMX_PTR ComponentParameterStructure); |
|
38 OMX_ERRORTYPE OMXComponentGetConfig( |
|
39 OMX_IN OMX_HANDLETYPE hComponent, |
|
40 OMX_IN OMX_INDEXTYPE nIndex, |
|
41 OMX_INOUT OMX_PTR value); |
|
42 OMX_ERRORTYPE OMXComponentSetConfig( |
|
43 OMX_IN OMX_HANDLETYPE hComponent, |
|
44 OMX_IN OMX_INDEXTYPE nIndex, |
|
45 OMX_IN OMX_PTR value); |
|
46 OMX_ERRORTYPE OMXComponentGetExtensionIndex( |
|
47 OMX_IN OMX_HANDLETYPE hComponent, |
|
48 OMX_IN OMX_STRING ParameterName, |
|
49 OMX_OUT OMX_INDEXTYPE* pIndexType); |
|
50 OMX_ERRORTYPE OMXComponentGetState( |
|
51 OMX_IN OMX_HANDLETYPE hComponent, |
|
52 OMX_OUT OMX_STATETYPE* pState); |
|
53 OMX_ERRORTYPE OMXComponentComponentTunnelRequest( |
|
54 OMX_IN OMX_HANDLETYPE hInput, |
|
55 OMX_IN OMX_U32 nPortInput, |
|
56 OMX_IN OMX_HANDLETYPE hOutput, |
|
57 OMX_IN OMX_U32 nPortOutput, |
|
58 OMX_IN OMX_TUNNELSETUPTYPE* pTunnelSetup); |
|
59 OMX_ERRORTYPE OMXComponentUseBuffer( |
|
60 OMX_IN OMX_HANDLETYPE hComponent, |
|
61 OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, |
|
62 OMX_IN OMX_U32 nPortIndex, |
|
63 OMX_IN OMX_PTR pAppPrivate, |
|
64 OMX_IN OMX_U32 nSizeBytes, |
|
65 OMX_IN OMX_U8* pBuffer); |
|
66 OMX_ERRORTYPE OMXComponentAllocateBuffer( |
|
67 OMX_IN OMX_HANDLETYPE hComponent, |
|
68 OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, |
|
69 OMX_IN OMX_U32 nPortIndex, |
|
70 OMX_IN OMX_PTR pAppData, |
|
71 OMX_IN OMX_U32 nSizeBytes); |
|
72 OMX_ERRORTYPE OMXComponentFreeBuffer( |
|
73 OMX_IN OMX_HANDLETYPE hComponent, |
|
74 OMX_IN OMX_U32 nPortIndex, |
|
75 OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); |
|
76 OMX_ERRORTYPE OMXComponentEmptyThisBuffer( |
|
77 OMX_IN OMX_HANDLETYPE hComponent, |
|
78 OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); |
|
79 OMX_ERRORTYPE OMXComponentFillThisBuffer( |
|
80 OMX_IN OMX_HANDLETYPE hComponent, |
|
81 OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); |
|
82 OMX_ERRORTYPE OMXComponentSetCallbacks( |
|
83 OMX_IN OMX_HANDLETYPE hComponent, |
|
84 OMX_IN OMX_CALLBACKTYPE* pCallbacks, |
|
85 OMX_IN OMX_PTR pAppData); |
|
86 OMX_ERRORTYPE OMXComponentDeInit(OMX_IN OMX_HANDLETYPE hComponent); |
|
87 |
|
88 OMX_ERRORTYPE OMXComponentRoleEnum( |
|
89 OMX_IN OMX_HANDLETYPE hComponent, |
|
90 OMX_OUT OMX_U8 *cRole, |
|
91 OMX_IN OMX_U32 nIndex); |
|
92 |
|
93 |
|
94 void EventHandler(OMX_OUT OMX_HANDLETYPE hComponent, |
|
95 OMX_OUT OMX_PTR pAppData, |
|
96 OMX_OUT OMX_EVENTTYPE eEvent, |
|
97 OMX_OUT OMX_U32 Data, |
|
98 OMX_OUT OMX_STRING cExtraInfo); |
|
99 |
|
100 void InputBufferCallback( |
|
101 OMX_OUT OMX_HANDLETYPE hComponent, |
|
102 OMX_OUT OMX_PTR pAppData, |
|
103 OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); |
|
104 |
|
105 void OutputBufferCallback( |
|
106 OMX_OUT OMX_HANDLETYPE hComponent, |
|
107 OMX_OUT OMX_PTR pAppData, |
|
108 OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); |
|
109 |
|
110 |
|
111 COmxComponentImpl::COmxComponentImpl(OMX_HANDLETYPE hComponent) |
|
112 { |
|
113 iHandle = static_cast<OMX_COMPONENTTYPE*>(hComponent); |
|
114 OMX_VERSIONTYPE ver = { 1,0,0,0 }; |
|
115 |
|
116 // fill in handle structure |
|
117 |
|
118 iHandle->nVersion = ver; |
|
119 iHandle->pComponentPrivate = this; |
|
120 iHandle->GetComponentVersion = &::OMXComponentGetComponentVersion; |
|
121 iHandle->SendCommand = &::OMXComponentSendCommand; |
|
122 iHandle->GetParameter = &::OMXComponentGetParameter; |
|
123 iHandle->SetParameter = &::OMXComponentSetParameter; |
|
124 iHandle->GetConfig = &::OMXComponentGetConfig; |
|
125 iHandle->SetConfig = &::OMXComponentSetConfig; |
|
126 iHandle->GetExtensionIndex = &::OMXComponentGetExtensionIndex; |
|
127 iHandle->GetState = &::OMXComponentGetState; |
|
128 iHandle->ComponentTunnelRequest = &::OMXComponentComponentTunnelRequest; |
|
129 iHandle->UseBuffer = &::OMXComponentUseBuffer; |
|
130 iHandle->AllocateBuffer = &::OMXComponentAllocateBuffer; |
|
131 iHandle->FreeBuffer = &::OMXComponentFreeBuffer; |
|
132 iHandle->EmptyThisBuffer = &::OMXComponentEmptyThisBuffer; |
|
133 iHandle->FillThisBuffer = &::OMXComponentFillThisBuffer; |
|
134 iHandle->SetCallbacks = &::OMXComponentSetCallbacks; |
|
135 iHandle->ComponentRoleEnum = &::OMXComponentRoleEnum; |
|
136 iHandle->ComponentDeInit = &::OMXComponentDeInit; |
|
137 } |
|
138 |
|
139 COmxComponentImpl::~COmxComponentImpl() |
|
140 { |
|
141 |
|
142 } |
|
143 COmxComponentImpl::operator OMX_HANDLETYPE() |
|
144 { |
|
145 return (OMX_HANDLETYPE)&iHandle; |
|
146 } |
|
147 |
|
148 |
|
149 OMX_ERRORTYPE OMXComponentGetComponentVersion( |
|
150 OMX_IN OMX_HANDLETYPE hComponent, |
|
151 OMX_OUT OMX_STRING pComponentName, |
|
152 OMX_OUT OMX_VERSIONTYPE* pComponentVersion, |
|
153 OMX_OUT OMX_VERSIONTYPE* pSpecVersion, |
|
154 OMX_OUT OMX_UUIDTYPE* pComponentUUID) |
|
155 { |
|
156 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetComponentVersion(pComponentName,pComponentVersion,pSpecVersion, pComponentUUID); |
|
157 } |
|
158 |
|
159 |
|
160 OMX_ERRORTYPE OMXComponentSendCommand( |
|
161 OMX_IN OMX_HANDLETYPE hComponent, |
|
162 OMX_IN OMX_COMMANDTYPE Cmd, |
|
163 OMX_IN OMX_U32 nParam1, |
|
164 OMX_IN OMX_PTR pCmdData) |
|
165 { |
|
166 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SendCommand(Cmd ,nParam1, pCmdData); |
|
167 |
|
168 } |
|
169 OMX_ERRORTYPE OMXComponentGetParameter( |
|
170 OMX_IN OMX_HANDLETYPE hComponent, |
|
171 OMX_IN OMX_INDEXTYPE nParamIndex, |
|
172 OMX_INOUT OMX_PTR ComponentParameterStructure) |
|
173 { |
|
174 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetParameter(nParamIndex, ComponentParameterStructure); |
|
175 } |
|
176 OMX_ERRORTYPE OMXComponentSetParameter( |
|
177 OMX_IN OMX_HANDLETYPE hComponent, |
|
178 OMX_IN OMX_INDEXTYPE nIndex, |
|
179 OMX_IN OMX_PTR ComponentParameterStructure) |
|
180 { |
|
181 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SetParameter(nIndex, ComponentParameterStructure); |
|
182 } |
|
183 OMX_ERRORTYPE OMXComponentGetConfig( |
|
184 OMX_IN OMX_HANDLETYPE hComponent, |
|
185 OMX_IN OMX_INDEXTYPE nIndex, |
|
186 OMX_INOUT OMX_PTR value) |
|
187 { |
|
188 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetConfig(nIndex, value); |
|
189 } |
|
190 OMX_ERRORTYPE OMXComponentSetConfig( |
|
191 OMX_IN OMX_HANDLETYPE hComponent, |
|
192 OMX_IN OMX_INDEXTYPE nIndex, |
|
193 OMX_IN OMX_PTR value) |
|
194 { |
|
195 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SetConfig(nIndex, value); |
|
196 } |
|
197 OMX_ERRORTYPE OMXComponentGetExtensionIndex( |
|
198 OMX_IN OMX_HANDLETYPE hComponent, |
|
199 OMX_IN OMX_STRING ParameterName, |
|
200 OMX_OUT OMX_INDEXTYPE* pIndexType) |
|
201 { |
|
202 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetExtensionIndex(ParameterName, pIndexType); |
|
203 } |
|
204 OMX_ERRORTYPE OMXComponentGetState( |
|
205 OMX_IN OMX_HANDLETYPE hComponent, |
|
206 OMX_OUT OMX_STATETYPE* pState) |
|
207 { |
|
208 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetState(pState); |
|
209 } |
|
210 OMX_ERRORTYPE OMXComponentComponentTunnelRequest( |
|
211 OMX_IN OMX_HANDLETYPE hInput, |
|
212 OMX_IN OMX_U32 nInputPort, |
|
213 OMX_IN OMX_HANDLETYPE hOutput, |
|
214 OMX_IN OMX_U32 nOutputPort, |
|
215 OMX_IN OMX_TUNNELSETUPTYPE* pTunnelSetup) |
|
216 { |
|
217 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hInput)->pComponentPrivate)->ComponentTunnelRequest(hInput, nInputPort, hOutput, nOutputPort, pTunnelSetup); |
|
218 } |
|
219 OMX_ERRORTYPE OMXComponentUseBuffer( |
|
220 OMX_IN OMX_HANDLETYPE hComponent, |
|
221 OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, |
|
222 OMX_IN OMX_U32 nPortIndex, |
|
223 OMX_IN OMX_PTR pAppPrivate, |
|
224 OMX_IN OMX_U32 nSizeBytes, |
|
225 OMX_IN OMX_U8* pBuffer) |
|
226 { |
|
227 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->UseBuffer(ppBufferHdr, nPortIndex, pAppPrivate, nSizeBytes, pBuffer); |
|
228 } |
|
229 |
|
230 OMX_ERRORTYPE OMXComponentAllocateBuffer( |
|
231 OMX_IN OMX_HANDLETYPE hComponent, |
|
232 OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, |
|
233 OMX_IN OMX_U32 nPortIndex, |
|
234 OMX_IN OMX_PTR pAppData, |
|
235 OMX_IN OMX_U32 nSizeBytes) |
|
236 { |
|
237 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->AllocateBuffer(pBuffer, nPortIndex, pAppData, nSizeBytes); |
|
238 } |
|
239 |
|
240 OMX_ERRORTYPE OMXComponentFreeBuffer( |
|
241 OMX_IN OMX_HANDLETYPE hComponent, |
|
242 OMX_IN OMX_U32 nPortIndex, |
|
243 OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) |
|
244 { |
|
245 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->FreeBuffer(nPortIndex, pBuffer); |
|
246 } |
|
247 OMX_ERRORTYPE OMXComponentEmptyThisBuffer( |
|
248 OMX_IN OMX_HANDLETYPE hComponent, |
|
249 OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) |
|
250 { |
|
251 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->EmptyThisBuffer(pBuffer); |
|
252 } |
|
253 OMX_ERRORTYPE OMXComponentFillThisBuffer( |
|
254 OMX_IN OMX_HANDLETYPE hComponent, |
|
255 OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) |
|
256 { |
|
257 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->FillThisBuffer(pBuffer); |
|
258 } |
|
259 OMX_ERRORTYPE OMXComponentSetCallbacks( |
|
260 OMX_IN OMX_HANDLETYPE hComponent, |
|
261 OMX_IN OMX_CALLBACKTYPE* pCallbacks, |
|
262 OMX_IN OMX_PTR pAppData) |
|
263 { |
|
264 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SetCallbacks(pCallbacks, pAppData); |
|
265 } |
|
266 |
|
267 OMX_ERRORTYPE OMXComponentDeInit(OMX_IN OMX_HANDLETYPE hComponent) |
|
268 { |
|
269 delete ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); |
|
270 return OMX_ErrorNone; |
|
271 } |
|
272 |
|
273 OMX_ERRORTYPE OMXComponentRoleEnum( |
|
274 OMX_IN OMX_HANDLETYPE hComponent, |
|
275 OMX_OUT OMX_U8 *cRole, |
|
276 OMX_IN OMX_U32 nIndex) |
|
277 { |
|
278 return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->ComponentRoleEnum(cRole, nIndex); |
|
279 } |
|