36 #include "xaconfigextensionsitf.h" |
36 #include "xaconfigextensionsitf.h" |
37 #include "xathreadsafety.h" |
37 #include "xathreadsafety.h" |
38 #include "xaframeworkmgr.h" |
38 #include "xaframeworkmgr.h" |
39 #include "xastaticcameracapsadaptation.h" |
39 #include "xastaticcameracapsadaptation.h" |
40 |
40 |
41 |
|
42 /* Static mapping of enumeration XAEngineInterfaces to interface iids */ |
41 /* Static mapping of enumeration XAEngineInterfaces to interface iids */ |
43 static const XAInterfaceID* xaEngineItfIIDs[ENGINE_ITFCOUNT]={ |
42 static const XAInterfaceID* xaEngineItfIIDs[ENGINE_ITFCOUNT] = |
|
43 { |
44 &XA_IID_OBJECT, |
44 &XA_IID_OBJECT, |
45 &XA_IID_ENGINE, |
45 &XA_IID_ENGINE, |
46 &XA_IID_DYNAMICINTERFACEMANAGEMENT, |
46 &XA_IID_DYNAMICINTERFACEMANAGEMENT, |
47 &XA_IID_THREADSYNC, |
47 &XA_IID_THREADSYNC, |
48 /* &XA_IID_CONFIGEXTENSION,*/ |
48 /* &XA_IID_CONFIGEXTENSION,*/ |
49 /* &XA_IID_DEVICEVOLUME,*/ |
49 /* &XA_IID_DEVICEVOLUME,*/ |
50 &XA_IID_AUDIOIODEVICECAPABILITIES, |
50 &XA_IID_AUDIOIODEVICECAPABILITIES, |
51 /* &XA_IID_AUDIODECODERCAPABILITIES,*/ |
51 /* &XA_IID_AUDIODECODERCAPABILITIES,*/ |
52 &XA_IID_AUDIOENCODERCAPABILITIES |
52 &XA_IID_AUDIOENCODERCAPABILITIES |
53 /* |
53 /* |
54 &XA_IID_CAMERACAPABILITIES, |
54 &XA_IID_CAMERACAPABILITIES, |
55 &XA_IID_IMAGEDECODERCAPABILITIES, |
55 &XA_IID_IMAGEDECODERCAPABILITIES, |
56 &XA_IID_IMAGEENCODERCAPABILITIES, |
56 &XA_IID_IMAGEENCODERCAPABILITIES, |
57 &XA_IID_VIDEODECODERCAPABILITIES, |
57 &XA_IID_VIDEODECODERCAPABILITIES, |
58 &XA_IID_VIDEOENCODERCAPABILITIES |
58 &XA_IID_VIDEOENCODERCAPABILITIES |
59 */ |
59 */ |
60 }; |
60 }; |
61 |
61 |
62 /***************************************************************************** |
62 /***************************************************************************** |
63 * Global methods |
63 * Global methods |
64 *****************************************************************************/ |
64 *****************************************************************************/ |
65 |
65 |
66 /* XAResult XAEngineImpl_Create |
66 /* XAResult XAEngineImpl_Create |
67 * Description: Create object |
67 * Description: Create object |
68 */ |
68 */ |
69 XAresult XAEngineImpl_Create(XAObjectItf *pEngine, |
69 XAresult XAEngineImpl_Create(XAObjectItf *pEngine, XAuint32 numOptions, |
70 XAuint32 numOptions, |
70 const XAEngineOption *pEngineOptions, XAuint32 numInterfaces, |
71 const XAEngineOption *pEngineOptions, |
71 const XAInterfaceID *pInterfaceIds, |
72 XAuint32 numInterfaces, |
72 const XAboolean *pInterfaceRequired) |
73 const XAInterfaceID *pInterfaceIds, |
73 { |
74 const XAboolean *pInterfaceRequired) |
|
75 { |
|
76 XAEngineImpl* pImpl = NULL; |
74 XAEngineImpl* pImpl = NULL; |
77 XAObjectItfImpl* pBaseObj = NULL; |
75 XAObjectItfImpl* pBaseObj = NULL; |
78 XAuint32 itfIndex = 0; |
76 XAuint32 itfIndex = 0; |
79 //XAboolean optEnabled = XA_BOOLEAN_FALSE; |
77 //XAboolean optEnabled = XA_BOOLEAN_FALSE; |
80 XAboolean threadSafeEnabled = XA_BOOLEAN_TRUE; |
78 XAboolean threadSafeEnabled = XA_BOOLEAN_TRUE; |
81 DEBUG_API("->XAEngineImpl_Create"); |
79 DEBUG_API("->XAEngineImpl_Create"); |
82 |
80 |
83 if( !pEngine ) |
81 if (!pEngine) |
84 { |
82 { |
85 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
83 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineImpl_Create"); |
86 DEBUG_API("<-XAEngineImpl_Create"); |
|
87 /* invalid parameter */ |
84 /* invalid parameter */ |
88 return XA_RESULT_PARAMETER_INVALID; |
85 return XA_RESULT_PARAMETER_INVALID; |
89 } |
86 } |
90 |
87 |
91 /* check engine options */ |
88 /* check engine options */ |
92 if( pEngineOptions && (numOptions != 0)) |
89 if (pEngineOptions && (numOptions != 0)) |
93 { |
90 { |
94 int i; |
91 int i; |
95 for(i = 0; i<numOptions; i++) |
92 for (i = 0; i < numOptions; i++) |
96 { |
93 { |
97 if (pEngineOptions[i].feature==XA_ENGINEOPTION_LOSSOFCONTROL) |
94 if (pEngineOptions[i].feature == XA_ENGINEOPTION_LOSSOFCONTROL) |
98 { |
95 { |
99 //XAboolean optEnabled = pEngineOptions[i].data; |
96 //XAboolean optEnabled = pEngineOptions[i].data; |
100 // TODO: do something with the above value or else remove the code |
97 // TODO: do something with the above value or else remove the code |
101 } |
98 } |
102 if (pEngineOptions[i].feature==XA_ENGINEOPTION_THREADSAFE) |
99 if (pEngineOptions[i].feature == XA_ENGINEOPTION_THREADSAFE) |
103 { |
100 { |
104 threadSafeEnabled = pEngineOptions[i].data; |
101 threadSafeEnabled = pEngineOptions[i].data; |
105 } |
102 } |
106 } |
103 } |
107 } |
104 } |
108 |
105 |
109 /* instantiate object implementation */ |
106 /* instantiate object implementation */ |
110 pImpl = (XAEngineImpl*)calloc(1,sizeof(XAEngineImpl)); |
107 pImpl = (XAEngineImpl*) calloc(1, sizeof(XAEngineImpl)); |
111 if( !pImpl ) |
108 if (!pImpl) |
112 { |
109 { |
113 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); |
110 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");DEBUG_API("<-XAEngineImpl_Create"); |
114 DEBUG_API("<-XAEngineImpl_Create"); |
|
115 /* memory allocation failed */ |
111 /* memory allocation failed */ |
116 return XA_RESULT_MEMORY_FAILURE; |
112 return XA_RESULT_MEMORY_FAILURE; |
117 } |
113 } |
118 pBaseObj = &pImpl->baseObj; |
114 pBaseObj = &pImpl->baseObj; |
119 |
115 |
120 /* Initialize base object default implementation */ |
116 /* Initialize base object default implementation */ |
121 XAObjectItfImpl_Init(pBaseObj, |
117 XAObjectItfImpl_Init(pBaseObj, ENGINE_ITFCOUNT, xaEngineItfIIDs, |
122 ENGINE_ITFCOUNT, |
118 XAEngineImpl_DoRealize, XAEngineImpl_DoResume, |
123 xaEngineItfIIDs, |
119 XAEngineImpl_FreeResources); |
124 XAEngineImpl_DoRealize, |
|
125 XAEngineImpl_DoResume, |
|
126 XAEngineImpl_FreeResources); |
|
127 |
|
128 |
120 |
129 /* Mark interfaces that need to be exposed */ |
121 /* Mark interfaces that need to be exposed */ |
130 /* Implicit and mandated interfaces */ |
122 /* Implicit and mandated interfaces */ |
131 pBaseObj->interfaceMap[ENGINE_ENGINEITF].required = XA_BOOLEAN_TRUE; |
123 pBaseObj->interfaceMap[ENGINE_ENGINEITF].required = XA_BOOLEAN_TRUE; |
132 pBaseObj->interfaceMap[ENGINE_DIMITF].required = XA_BOOLEAN_TRUE; |
124 pBaseObj->interfaceMap[ENGINE_DIMITF].required = XA_BOOLEAN_TRUE; |
133 pBaseObj->interfaceMap[ENGINE_THREADSYNCITF].required = XA_BOOLEAN_TRUE; |
125 pBaseObj->interfaceMap[ENGINE_THREADSYNCITF].required = XA_BOOLEAN_TRUE; |
134 pBaseObj->interfaceMap[ENGINE_AUDIOIODEVICECAPAITF].required = XA_BOOLEAN_TRUE; |
126 pBaseObj->interfaceMap[ENGINE_AUDIOIODEVICECAPAITF].required |
135 pBaseObj->interfaceMap[ENGINE_AUDIOENCODERCAPAITF].required = XA_BOOLEAN_TRUE; |
127 = XA_BOOLEAN_TRUE; |
|
128 pBaseObj->interfaceMap[ENGINE_AUDIOENCODERCAPAITF].required |
|
129 = XA_BOOLEAN_TRUE; |
136 /* Explicit interfaces */ |
130 /* Explicit interfaces */ |
137 if( (numInterfaces != 0) && pInterfaceIds && pInterfaceRequired ) |
131 if ((numInterfaces != 0) && pInterfaceIds && pInterfaceRequired) |
138 { |
132 { |
139 /* Check required interfaces */ |
133 /* Check required interfaces */ |
140 for(itfIndex = 0; itfIndex < numInterfaces; itfIndex++) |
134 for (itfIndex = 0; itfIndex < numInterfaces; itfIndex++) |
141 { |
135 { |
142 /* If mapEntry is null then required interface is not supported.*/ |
136 /* If mapEntry is null then required interface is not supported.*/ |
143 XAObjItfMapEntry *entry = |
137 XAObjItfMapEntry *entry = XAObjectItfImpl_GetItfEntry( |
144 XAObjectItfImpl_GetItfEntry((XAObjectItf)&(pBaseObj), pInterfaceIds[itfIndex]); |
138 (XAObjectItf) &(pBaseObj), pInterfaceIds[itfIndex]); |
145 if( !entry ) |
139 if (!entry) |
146 { |
140 { |
147 if( pInterfaceRequired[itfIndex] ) |
141 if (pInterfaceRequired[itfIndex]) |
148 { |
142 { |
149 /* required interface cannot be accommodated - fail creation */ |
143 /* required interface cannot be accommodated - fail creation */ |
150 XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); |
144 XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj)); |
151 DEBUG_ERR("Required interface not found - abort creation!"); |
145 DEBUG_ERR("Required interface not found - abort creation!");DEBUG_API("<-XAEngineImpl_Create"); |
152 DEBUG_API("<-XAEngineImpl_Create"); |
|
153 return XA_RESULT_FEATURE_UNSUPPORTED; |
146 return XA_RESULT_FEATURE_UNSUPPORTED; |
154 } |
147 } |
155 else |
148 else |
156 { |
149 { |
157 DEBUG_INFO("Requested (not required) interface not found - continue creation"); |
150 DEBUG_INFO("Requested (not required) interface not found - continue creation"); |
158 } |
151 } |
159 } |
152 } |
160 else |
153 else |
161 { |
154 { |
162 entry->required = XA_BOOLEAN_TRUE; |
155 entry->required = XA_BOOLEAN_TRUE; |
163 } |
156 } |
164 } |
157 } |
165 } |
158 } |
166 |
159 |
167 /* Initialize XAEngineImpl variables */ |
160 /* Initialize XAEngineImpl variables */ |
168 if( threadSafeEnabled ) |
161 if (threadSafeEnabled) |
169 { |
162 { |
170 XAresult ret = XA_RESULT_SUCCESS; |
163 XAresult ret = XA_RESULT_SUCCESS; |
171 pImpl->isThreadSafe = threadSafeEnabled; |
164 pImpl->isThreadSafe = threadSafeEnabled; |
172 ret = XAThreadSafety_Init( threadSafeEnabled ); |
165 ret = XAThreadSafety_Init(threadSafeEnabled); |
173 if ( ret != XA_RESULT_SUCCESS ) |
166 if (ret != XA_RESULT_SUCCESS) |
174 { |
167 { |
175 DEBUG_INFO_A1("Unable to initialize thread safety - ret:%x", ret ); |
168 DEBUG_INFO_A1("Unable to initialize thread safety - ret:%x", ret ); |
176 } |
169 } |
177 } |
170 } |
178 |
171 |
179 /* |
|
180 |
|
181 pImpl->adaptationCtx = XAEngineAdapt_Create(); |
|
182 |
|
183 */ |
|
184 /* Set ObjectItf to point to newly created object */ |
172 /* Set ObjectItf to point to newly created object */ |
185 *pEngine = ((XAObjectItf)&(pBaseObj->self)); |
173 *pEngine = ((XAObjectItf) &(pBaseObj->self)); |
186 |
174 |
187 DEBUG_API("<-XAEngineImpl_Create"); |
175 DEBUG_API("<-XAEngineImpl_Create"); |
188 return XA_RESULT_SUCCESS; |
176 return XA_RESULT_SUCCESS; |
189 } |
177 } |
190 |
178 |
191 /* XAResult XAEngineImpl_QueryNumSupportedInterfaces |
179 /* XAResult XAEngineImpl_QueryNumSupportedInterfaces |
192 * Description: Statically query number of supported interfaces |
180 * Description: Statically query number of supported interfaces |
193 */ |
181 */ |
194 XAresult XAEngineImpl_QueryNumSupportedInterfaces( |
182 XAresult XAEngineImpl_QueryNumSupportedInterfaces( |
195 XAuint32 *pNumSupportedInterfaces) |
183 XAuint32 *pNumSupportedInterfaces) |
196 { |
184 { |
197 DEBUG_API("->XAEngineImpl_QueryNumSupportedInterfaces"); |
185 DEBUG_API("->XAEngineImpl_QueryNumSupportedInterfaces"); |
198 if(pNumSupportedInterfaces) |
186 if (pNumSupportedInterfaces) |
199 { |
187 { |
200 *pNumSupportedInterfaces = ENGINE_ITFCOUNT; |
188 *pNumSupportedInterfaces = ENGINE_ITFCOUNT; |
201 DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces"); |
189 DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces"); |
202 return XA_RESULT_SUCCESS; |
190 return XA_RESULT_SUCCESS; |
203 } |
191 } |
204 else |
192 else |
205 { |
193 { |
206 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
194 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces"); |
207 DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces"); |
|
208 return XA_RESULT_PARAMETER_INVALID; |
195 return XA_RESULT_PARAMETER_INVALID; |
209 } |
196 } |
210 } |
197 } |
211 |
198 |
212 /* XAResult XAEngineImpl_QuerySupportedInterfaces |
199 /* XAResult XAEngineImpl_QuerySupportedInterfaces |
213 * Description: Statically query supported interfaces |
200 * Description: Statically query supported interfaces |
214 */ |
201 */ |
215 XAresult XAEngineImpl_QuerySupportedInterfaces( |
202 XAresult XAEngineImpl_QuerySupportedInterfaces(XAuint32 index, |
216 XAuint32 index, |
203 XAInterfaceID *pInterfaceId) |
217 XAInterfaceID *pInterfaceId) |
204 { |
218 { |
|
219 DEBUG_API("->XAEngineImpl_QuerySupportedInterfaces"); |
205 DEBUG_API("->XAEngineImpl_QuerySupportedInterfaces"); |
220 if (index >= ENGINE_ITFCOUNT || !pInterfaceId ) |
206 if (index >= ENGINE_ITFCOUNT || !pInterfaceId) |
221 { |
207 { |
222 if(pInterfaceId) |
208 if (pInterfaceId) |
223 { |
209 { |
224 *pInterfaceId = XA_IID_NULL; |
210 *pInterfaceId = XA_IID_NULL; |
225 } |
211 } |
226 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
212 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
227 DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces"); |
213 DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces"); |
228 return XA_RESULT_PARAMETER_INVALID; |
214 return XA_RESULT_PARAMETER_INVALID; |
229 } |
215 } |
230 else |
216 else |
231 { |
217 { |
232 *pInterfaceId = *(xaEngineItfIIDs[index]); |
218 *pInterfaceId = *(xaEngineItfIIDs[index]); |
233 DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces"); |
219 DEBUG_API("<-XAEngineImpl_QuerySupportedInterfaces"); |
234 return XA_RESULT_SUCCESS; |
220 return XA_RESULT_SUCCESS; |
235 } |
221 } |
236 } |
222 } |
237 |
223 |
238 /***************************************************************************** |
224 /***************************************************************************** |
239 * base object XAObjectItfImpl methods |
225 * base object XAObjectItfImpl methods |
240 *****************************************************************************/ |
226 *****************************************************************************/ |
241 |
227 |
243 * Description: Realize all implicit and explicitly wanted interfaces. |
229 * Description: Realize all implicit and explicitly wanted interfaces. |
244 * Create and initialize implementation-specific variables. |
230 * Create and initialize implementation-specific variables. |
245 * Called from base object XAObjectItfImpl |
231 * Called from base object XAObjectItfImpl |
246 */ |
232 */ |
247 XAresult XAEngineImpl_DoRealize(XAObjectItf self) |
233 XAresult XAEngineImpl_DoRealize(XAObjectItf self) |
248 { |
234 { |
249 XAuint8 itfIdx = 0; |
235 XAuint8 itfIdx = 0; |
250 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
236 XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self); |
251 XAEngineImpl* pObjImpl = (XAEngineImpl*)(pObj); |
237 XAEngineImpl* pObjImpl = (XAEngineImpl*) (pObj); |
252 XAresult ret = XA_RESULT_SUCCESS; |
238 XAresult ret = XA_RESULT_SUCCESS; |
253 |
239 |
254 DEBUG_API("->XAEngineImpl_DoRealize"); |
240 DEBUG_API("->XAEngineImpl_DoRealize"); |
255 |
241 |
256 /* check casting from correct pointer type */ |
242 /* check casting from correct pointer type */ |
257 if( !pObjImpl || pObj != pObjImpl->baseObj.self ) |
243 if (!pObjImpl || pObj != pObjImpl->baseObj.self) |
258 { |
244 { |
259 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
245 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
260 DEBUG_API("<-XAEngineImpl_DoRealize"); |
246 DEBUG_API("<-XAEngineImpl_DoRealize"); |
261 /* invalid parameter */ |
247 /* invalid parameter */ |
262 return XA_RESULT_PARAMETER_INVALID; |
248 return XA_RESULT_PARAMETER_INVALID; |
263 } |
249 } |
264 |
250 |
265 |
|
266 /* Table containing use-case framework map */ |
251 /* Table containing use-case framework map */ |
267 pObjImpl->frameworkMap = XAFrameworkMgr_CreateFrameworkMap(); |
252 pObjImpl->frameworkMap = XAFrameworkMgr_CreateFrameworkMap(); |
268 if (pObjImpl->frameworkMap == NULL) |
253 if (pObjImpl->frameworkMap == NULL) |
269 { |
254 { |
270 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); |
255 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); |
271 DEBUG_API("<-XAEngineImpl_DoRealize"); |
256 DEBUG_API("<-XAEngineImpl_DoRealize"); |
272 /* memory allocation failed */ |
257 /* memory allocation failed */ |
273 return XA_RESULT_MEMORY_FAILURE; |
258 return XA_RESULT_MEMORY_FAILURE; |
274 } |
259 } |
275 |
|
276 |
260 |
277 /* Create capabilities list */ |
261 /* Create capabilities list */ |
278 ret = XACapabilitiesMgr_CreateCapabilitieList(pObjImpl->frameworkMap, &(pObjImpl->capabilities)); |
262 ret = XACapabilitiesMgr_CreateCapabilitieList(pObjImpl->frameworkMap, |
|
263 &(pObjImpl->capabilities)); |
279 if (ret != XA_RESULT_SUCCESS) |
264 if (ret != XA_RESULT_SUCCESS) |
280 { |
265 { |
281 return ret; |
266 return ret; |
282 } |
267 } |
283 |
268 |
284 |
|
285 /* Realize all implicit and explicitly wanted interfaces */ |
269 /* Realize all implicit and explicitly wanted interfaces */ |
286 for(itfIdx=0; itfIdx<ENGINE_ITFCOUNT; itfIdx++) |
270 for (itfIdx = 0; itfIdx < ENGINE_ITFCOUNT; itfIdx++) |
287 { |
271 { |
288 if(!(pObj->interfaceMap[itfIdx].pItf) && |
272 if (!(pObj->interfaceMap[itfIdx].pItf) |
289 pObj->interfaceMap[itfIdx].required ) |
273 && pObj->interfaceMap[itfIdx].required) |
290 { |
274 { |
291 void *pItf = NULL; |
275 void *pItf = NULL; |
292 switch(itfIdx) |
276 switch (itfIdx) |
293 { |
277 { |
294 case ENGINE_ENGINEITF: |
278 case ENGINE_ENGINEITF: |
295 pItf = XAEngineItfImpl_Create(pObjImpl->frameworkMap, pObjImpl->capabilities); |
279 pItf = XAEngineItfImpl_Create(pObjImpl->frameworkMap, |
|
280 pObjImpl->capabilities); |
296 break; |
281 break; |
297 case ENGINE_THREADSYNCITF: |
282 case ENGINE_THREADSYNCITF: |
298 pItf = XAThreadSyncItfImpl_Create(); |
283 pItf = XAThreadSyncItfImpl_Create(); |
299 break; |
284 break; |
300 case ENGINE_DIMITF: |
285 case ENGINE_DIMITF: |
301 pItf = XADIMItfImpl_Create(); |
286 pItf = XADIMItfImpl_Create(); |
302 break; |
287 break; |
303 case ENGINE_AUDIOIODEVICECAPAITF: |
288 case ENGINE_AUDIOIODEVICECAPAITF: |
304 pItf = XAAudIODevCapaItfImpl_Create(pObjImpl->capabilities); |
289 pItf = XAAudIODevCapaItfImpl_Create( |
|
290 pObjImpl->capabilities); |
305 break; |
291 break; |
306 case ENGINE_AUDIOENCODERCAPAITF: |
292 case ENGINE_AUDIOENCODERCAPAITF: |
307 pItf = XAAudioEncoderCapabilitiesItfImpl_Create(pObjImpl->capabilities); |
293 pItf = XAAudioEncoderCapabilitiesItfImpl_Create( |
308 break; |
294 pObjImpl->capabilities); |
309 /* |
295 break; |
310 case ENGINE_AUDIODECODERCAPAITF: |
296 /* |
311 pItf = XAAudioDecoderCapabilitiesItfImpl_Create(); |
297 case ENGINE_AUDIODECODERCAPAITF: |
312 break; |
298 pItf = XAAudioDecoderCapabilitiesItfImpl_Create(); |
313 case ENGINE_CONFIGEXTENSIONSITF: |
299 break; |
314 pItf = XAConfigExtensionsItfImpl_Create(); |
300 case ENGINE_CONFIGEXTENSIONSITF: |
315 break; |
301 pItf = XAConfigExtensionsItfImpl_Create(); |
316 case ENGINE_DEVICEVOLUMEITF: |
302 break; |
317 pItf = XADeviceVolumeItfImpl_Create(pObjImpl->adaptationCtx); |
303 case ENGINE_DEVICEVOLUMEITF: |
318 break; |
304 pItf = XADeviceVolumeItfImpl_Create(pObjImpl->adaptationCtx); |
319 case ENGINE_CAMERACAPAITF: |
305 break; |
320 |
306 case ENGINE_CAMERACAPAITF: |
321 XAStaticCameraCaps_Init(); |
307 |
322 pItf = XACameraCapabilitiesItfImpl_Create(); |
308 XAStaticCameraCaps_Init(); |
323 |
309 pItf = XACameraCapabilitiesItfImpl_Create(); |
324 break; |
310 |
325 case ENGINE_IMAGEDECODERCAPAITF: |
311 break; |
326 pItf = XAImageDecoderCapabilitiesItfImpl_Create(); |
312 case ENGINE_IMAGEDECODERCAPAITF: |
327 break; |
313 pItf = XAImageDecoderCapabilitiesItfImpl_Create(); |
328 case ENGINE_IMAGEENCODERCAPAITF: |
314 break; |
329 pItf = XAImageEncoderCapabilitiesItfImpl_Create(); |
315 case ENGINE_IMAGEENCODERCAPAITF: |
330 break; |
316 pItf = XAImageEncoderCapabilitiesItfImpl_Create(); |
331 case ENGINE_VIDEODECODERCAPAITF: |
317 break; |
332 pItf = XAVideoDecoderCapabilitiesItfImpl_Create(); |
318 case ENGINE_VIDEODECODERCAPAITF: |
333 break; |
319 pItf = XAVideoDecoderCapabilitiesItfImpl_Create(); |
334 case ENGINE_VIDEOENCODERCAPAITF: |
320 break; |
335 pItf = XAVideoEncoderCapabilitiesItfImpl_Create(); |
321 case ENGINE_VIDEOENCODERCAPAITF: |
336 break; |
322 pItf = XAVideoEncoderCapabilitiesItfImpl_Create(); |
337 */ |
323 break; |
|
324 */ |
338 default: |
325 default: |
339 break; |
326 break; |
340 } |
327 } |
341 if(!pItf) |
328 if (!pItf) |
342 { |
329 { |
343 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); |
330 DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");DEBUG_API("<-XAEngineImpl_DoRealize"); |
344 DEBUG_API("<-XAEngineImpl_DoRealize"); |
|
345 /* memory allocation failed */ |
331 /* memory allocation failed */ |
346 return XA_RESULT_MEMORY_FAILURE; |
332 return XA_RESULT_MEMORY_FAILURE; |
347 } |
333 } |
348 else |
334 else |
349 { |
335 { |
350 pObj->interfaceMap[itfIdx].pItf = pItf; |
336 pObj->interfaceMap[itfIdx].pItf = pItf; |
351 } |
337 } |
352 } |
338 } |
353 } |
339 } |
354 |
340 |
355 pObj->state = XA_OBJECT_STATE_REALIZED; |
341 pObj->state = XA_OBJECT_STATE_REALIZED; |
356 DEBUG_API("<-XAEngineImpl_DoRealize"); |
342 DEBUG_API("<-XAEngineImpl_DoRealize"); |
357 return XA_RESULT_SUCCESS; |
343 return XA_RESULT_SUCCESS; |
358 } |
344 } |
359 |
345 |
360 /* XAresult XAEngineImpl_DoResume |
346 /* XAresult XAEngineImpl_DoResume |
361 * Description: Resume object from suspended state |
347 * Description: Resume object from suspended state |
362 */ |
348 */ |
363 XAresult XAEngineImpl_DoResume(XAObjectItf self) |
349 XAresult XAEngineImpl_DoResume(XAObjectItf self) |
364 { |
350 { |
365 DEBUG_API("->XAEngineImpl_DoResume"); |
351 DEBUG_API("->XAEngineImpl_DoResume");DEBUG_API("<-XAEngineImpl_DoResume"); |
366 DEBUG_API("<-XAEngineImpl_DoResume"); |
|
367 |
352 |
368 return XA_RESULT_PRECONDITIONS_VIOLATED; |
353 return XA_RESULT_PRECONDITIONS_VIOLATED; |
369 } |
354 } |
370 |
355 |
371 /* void XAEngineImpl_FreeResources |
356 /* void XAEngineImpl_FreeResources |
372 * Description: Free all resources reserved at XA%ExampleObject%Impl_DoRealize() |
357 * Description: Free all resources reserved at XA%ExampleObject%Impl_DoRealize() |
373 */ |
358 */ |
374 void XAEngineImpl_FreeResources(XAObjectItf self) |
359 void XAEngineImpl_FreeResources(XAObjectItf self) |
375 { |
360 { |
376 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
361 XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self); |
377 XAEngineImpl* pImpl = (XAEngineImpl*)(*self); |
362 XAEngineImpl* pImpl = (XAEngineImpl*) (*self); |
378 XAuint8 itfIdx = 0; |
363 XAuint8 itfIdx = 0; |
379 DEBUG_API("->XAEngineImpl_FreeResources"); |
364 DEBUG_API("->XAEngineImpl_FreeResources"); |
380 assert( pObj && pImpl && pObj == pObj->self ); |
365 assert( pObj && pImpl && pObj == pObj->self ); |
381 |
366 |
382 /* free all allocated interfaces */ |
367 /* free all allocated interfaces */ |
383 for(itfIdx=0; itfIdx<ENGINE_ITFCOUNT; itfIdx++) |
368 for (itfIdx = 0; itfIdx < ENGINE_ITFCOUNT; itfIdx++) |
384 { |
369 { |
385 void *pItf = pObj->interfaceMap[itfIdx].pItf; |
370 void *pItf = pObj->interfaceMap[itfIdx].pItf; |
386 if(pItf) |
371 if (pItf) |
387 { |
372 { |
388 switch(itfIdx) |
373 switch (itfIdx) |
389 { |
374 { |
390 case ENGINE_ENGINEITF: |
375 case ENGINE_ENGINEITF: |
391 XAEngineItfImpl_Free(pItf); |
376 XAEngineItfImpl_Free(pItf); |
392 break; |
377 break; |
393 case ENGINE_THREADSYNCITF: |
378 case ENGINE_THREADSYNCITF: |
394 XAThreadSyncItfImpl_Free(pItf); |
379 XAThreadSyncItfImpl_Free(pItf); |
400 XAAudIODevCapaItfImpl_Free(pItf); |
385 XAAudIODevCapaItfImpl_Free(pItf); |
401 break; |
386 break; |
402 case ENGINE_AUDIOENCODERCAPAITF: |
387 case ENGINE_AUDIOENCODERCAPAITF: |
403 XAAudioEncoderCapabilitiesItfImpl_Free(pItf); |
388 XAAudioEncoderCapabilitiesItfImpl_Free(pItf); |
404 break; |
389 break; |
405 /* |
390 /* |
406 case ENGINE_AUDIODECODERCAPAITF: |
391 case ENGINE_AUDIODECODERCAPAITF: |
407 XAAudioDecoderCapabilitiesItfImpl_Free(pItf); |
392 XAAudioDecoderCapabilitiesItfImpl_Free(pItf); |
408 break; |
393 break; |
409 case ENGINE_CONFIGEXTENSIONSITF: |
394 case ENGINE_CONFIGEXTENSIONSITF: |
410 XAConfigExtensionsItfImpl_Free(pItf); |
395 XAConfigExtensionsItfImpl_Free(pItf); |
411 break; |
396 break; |
412 case ENGINE_DEVICEVOLUMEITF: |
397 case ENGINE_DEVICEVOLUMEITF: |
413 XADeviceVolumeItfImpl_Free(pItf); |
398 XADeviceVolumeItfImpl_Free(pItf); |
414 break; |
399 break; |
415 case ENGINE_CAMERACAPAITF: |
400 case ENGINE_CAMERACAPAITF: |
416 |
401 |
417 XACameraCapabilitiesItfImpl_Free(pItf); |
402 XACameraCapabilitiesItfImpl_Free(pItf); |
418 |
403 |
419 break; |
404 break; |
420 case ENGINE_IMAGEDECODERCAPAITF: |
405 case ENGINE_IMAGEDECODERCAPAITF: |
421 XAImageDecoderCapabilitiesItfImpl_Free(pItf); |
406 XAImageDecoderCapabilitiesItfImpl_Free(pItf); |
422 break; |
407 break; |
423 case ENGINE_IMAGEENCODERCAPAITF: |
408 case ENGINE_IMAGEENCODERCAPAITF: |
424 XAImageEncoderCapabilitiesItfImpl_Free(pItf); |
409 XAImageEncoderCapabilitiesItfImpl_Free(pItf); |
425 break; |
410 break; |
426 case ENGINE_VIDEODECODERCAPAITF: |
411 case ENGINE_VIDEODECODERCAPAITF: |
427 XAVideoDecoderCapabilitiesItfImpl_Free(pItf); |
412 XAVideoDecoderCapabilitiesItfImpl_Free(pItf); |
428 break; |
413 break; |
429 case ENGINE_VIDEOENCODERCAPAITF: |
414 case ENGINE_VIDEOENCODERCAPAITF: |
430 XAVideoEncoderCapabilitiesItfImpl_Free(pItf); |
415 XAVideoEncoderCapabilitiesItfImpl_Free(pItf); |
431 break; |
416 break; |
432 */ |
417 */ |
433 default: |
418 default: |
434 break; |
419 break; |
435 } |
420 } |
436 pObj->interfaceMap[itfIdx].pItf = NULL; |
421 pObj->interfaceMap[itfIdx].pItf = NULL; |
437 } |
422 } |
438 } |
423 } |
439 |
424 |
440 /* free all other allocated resources*/ |
425 /* free all other allocated resources*/ |
441 /* |
426 |
442 if ( pImpl->adaptationCtx != NULL ) |
|
443 { |
|
444 XAEngineAdapt_Destroy( pImpl->adaptationCtx ); |
|
445 pImpl->adaptationCtx = NULL; |
|
446 } |
|
447 |
|
448 if ( pImpl->adaptationMmfCtx != NULL ) |
|
449 { |
|
450 XAEngineAdaptMMF_Destroy( pImpl->adaptationMmfCtx ); |
|
451 pImpl->adaptationMmfCtx = NULL; |
|
452 }*/ |
|
453 /* free framework map */ |
427 /* free framework map */ |
454 XAFrameworkMgr_DeleteFrameworkMap(&pImpl->frameworkMap); |
428 XAFrameworkMgr_DeleteFrameworkMap(&pImpl->frameworkMap); |
455 |
429 |
456 /* TODO free capabilities list */ |
430 /* free capabilities list */ |
457 XACapabilitiesMgr_DeleteCapabilitieList(&pImpl->capabilities); |
431 XACapabilitiesMgr_DeleteCapabilitieList(&pImpl->capabilities); |
458 |
432 |
459 XAThreadSafety_Destroy(); |
433 XAThreadSafety_Destroy(); |
460 |
434 |
461 DEBUG_API("<-XAEngineImpl_FreeResources"); |
435 DEBUG_API("<-XAEngineImpl_FreeResources"); |
462 return; |
436 return; |
463 } |
437 } |
464 |
438 |
465 /* END OF FILE */ |
439 /* END OF FILE */ |