equal
deleted
inserted
replaced
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 #include <stdio.h> |
18 #include <stdio.h> |
19 #include <stdlib.h> |
19 #include <stdlib.h> |
20 #include <assert.h> |
|
21 #include "xametadataextractor.h" |
20 #include "xametadataextractor.h" |
22 #include "xadynamicsourceitf.h" |
21 #include "xadynamicsourceitf.h" |
23 #include "xadynintmgmtitf.h" |
22 #include "xadynintmgmtitf.h" |
24 #include "xametadataextractionitf.h" |
23 #include "xametadataextractionitf.h" |
25 #include "xaconfigextensionsitf.h" |
|
26 |
24 |
27 #include "xacapabilitiesmgr.h" |
25 #include "xacapabilitiesmgr.h" |
28 #include "xathreadsafety.h" |
26 #include "xathreadsafety.h" |
29 |
27 |
30 #include "xaadaptationmmf.h" |
28 #include "xaadaptationmmf.h" |
34 static const XAInterfaceID* xaMetadataExtractorItfIIDs[MDE_ITFCOUNT] = |
32 static const XAInterfaceID* xaMetadataExtractorItfIIDs[MDE_ITFCOUNT] = |
35 { |
33 { |
36 &XA_IID_OBJECT, |
34 &XA_IID_OBJECT, |
37 &XA_IID_DYNAMICINTERFACEMANAGEMENT, |
35 &XA_IID_DYNAMICINTERFACEMANAGEMENT, |
38 &XA_IID_METADATAEXTRACTION, |
36 &XA_IID_METADATAEXTRACTION, |
39 &XA_IID_CONFIGEXTENSION, |
|
40 &XA_IID_DYNAMICSOURCE |
37 &XA_IID_DYNAMICSOURCE |
41 }; |
38 }; |
42 |
39 |
43 /***************************************************************************** |
40 /***************************************************************************** |
44 * Global methods |
41 * Global methods |
138 } |
135 } |
139 } |
136 } |
140 } |
137 } |
141 |
138 |
142 // Mark interfaces that can be handled dynamically |
139 // Mark interfaces that can be handled dynamically |
143 pBaseObj->interfaceMap[MDE_CONFIGEXTENSIONITF].isDynamic |
|
144 = XA_BOOLEAN_TRUE; |
|
145 |
|
146 //Set ObjectItf to point to newly created object |
140 //Set ObjectItf to point to newly created object |
147 *pMetadataExtractor = (XAObjectItf) &(pBaseObj->self); |
141 *pMetadataExtractor = (XAObjectItf) &(pBaseObj->self); |
148 |
142 |
149 //store member variables |
143 //store member variables |
150 pImpl->dataSrc = pDataSource; |
144 pImpl->dataSrc = pDataSource; |
278 |
272 |
279 case MDE_METADATAEXTRACTIONITF: |
273 case MDE_METADATAEXTRACTIONITF: |
280 pItf = XAMetadataExtractionItfImpl_Create( |
274 pItf = XAMetadataExtractionItfImpl_Create( |
281 pObjImpl->curAdaptCtx); |
275 pObjImpl->curAdaptCtx); |
282 break; |
276 break; |
283 case MDE_CONFIGEXTENSIONITF: |
|
284 pItf = XAConfigExtensionsItfImpl_Create(); |
|
285 XAConfigExtensionsItfImpl_SetContext(pItf, |
|
286 pObjImpl->curAdaptCtx); |
|
287 break; |
|
288 case MDE_DYNAMICSOURCEITF: |
277 case MDE_DYNAMICSOURCEITF: |
289 pItf = XADynamicSourceItfImpl_Create( |
278 pItf = XADynamicSourceItfImpl_Create( |
290 pObjImpl->curAdaptCtx); |
279 pObjImpl->curAdaptCtx); |
291 break; |
280 break; |
292 |
281 |
351 void *pItf = NULL; |
340 void *pItf = NULL; |
352 XAMetadataExtractorImpl* pImpl = (XAMetadataExtractorImpl*) (*self); |
341 XAMetadataExtractorImpl* pImpl = (XAMetadataExtractorImpl*) (*self); |
353 DEBUG_API("->XAMetadataExtractorImpl_FreeResources"); |
342 DEBUG_API("->XAMetadataExtractorImpl_FreeResources"); |
354 XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSMediaPlayer); |
343 XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSMediaPlayer); |
355 |
344 |
356 assert( pObj && pImpl && pObj == pObj->self ); |
|
357 |
|
358 for (itfIdx = 0; itfIdx < MDE_ITFCOUNT; itfIdx++) |
345 for (itfIdx = 0; itfIdx < MDE_ITFCOUNT; itfIdx++) |
359 { |
346 { |
360 pItf = pObj->interfaceMap[itfIdx].pItf; |
347 pItf = pObj->interfaceMap[itfIdx].pItf; |
361 if (pItf) |
348 if (pItf) |
362 { |
349 { |
368 case MDE_DYNAMICSOURCEITF: |
355 case MDE_DYNAMICSOURCEITF: |
369 XADynamicSourceItfImpl_Free(pItf); |
356 XADynamicSourceItfImpl_Free(pItf); |
370 break; |
357 break; |
371 case MDE_DIMITF: |
358 case MDE_DIMITF: |
372 XADIMItfImpl_Free(pItf); |
359 XADIMItfImpl_Free(pItf); |
373 break; |
|
374 case MDE_CONFIGEXTENSIONITF: |
|
375 XAConfigExtensionsItfImpl_Free(pItf); |
|
376 break; |
360 break; |
377 } |
361 } |
378 pObj->interfaceMap[itfIdx].pItf = NULL; |
362 pObj->interfaceMap[itfIdx].pItf = NULL; |
379 } |
363 } |
380 } |
364 } |
404 * Dynamically add an interface, object specific parts |
388 * Dynamically add an interface, object specific parts |
405 */ |
389 */ |
406 XAresult XAMetadataExtractorImpl_DoAddItf(XAObjectItf self, |
390 XAresult XAMetadataExtractorImpl_DoAddItf(XAObjectItf self, |
407 XAObjItfMapEntry *mapEntry) |
391 XAObjItfMapEntry *mapEntry) |
408 { |
392 { |
409 |
|
410 XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self); |
|
411 XAMetadataExtractorImpl* pImpl = (XAMetadataExtractorImpl*) (pObj); |
|
412 |
|
413 XAresult ret = XA_RESULT_SUCCESS; |
393 XAresult ret = XA_RESULT_SUCCESS; |
414 DEBUG_API("->XAMetadataExtractorImpl_DoAddItf"); |
394 DEBUG_API("->XAMetadataExtractorImpl_DoAddItf"); |
415 |
395 |
416 if (mapEntry) |
396 if (mapEntry) |
417 { |
397 { |
418 switch (mapEntry->mapIdx) |
398 switch (mapEntry->mapIdx) |
419 { |
399 { |
420 case MDE_CONFIGEXTENSIONITF: |
|
421 mapEntry->pItf = XAConfigExtensionsItfImpl_Create(); |
|
422 |
|
423 XAConfigExtensionsItfImpl_SetContext(mapEntry->pItf, |
|
424 pImpl->adaptationCtxGst); |
|
425 |
|
426 break; |
|
427 default: |
400 default: |
428 DEBUG_ERR("XAMetadataExtractorImpl_DoAddItf unknown id"); |
401 DEBUG_ERR("XAMetadataExtractorImpl_DoAddItf unknown id"); |
429 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
402 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
430 break; |
403 break; |
431 } |
404 } |
469 ret = XA_RESULT_SUCCESS; |
442 ret = XA_RESULT_SUCCESS; |
470 if (mapEntry) |
443 if (mapEntry) |
471 { |
444 { |
472 switch (mapEntry->mapIdx) |
445 switch (mapEntry->mapIdx) |
473 { |
446 { |
474 case MDE_CONFIGEXTENSIONITF: |
|
475 XAConfigExtensionsItfImpl_Free(mapEntry->pItf); |
|
476 break; |
|
477 default: |
447 default: |
478 DEBUG_ERR("XAMetadataExtractorImpl_DoRemoveItf unknown id"); |
448 DEBUG_ERR("XAMetadataExtractorImpl_DoRemoveItf unknown id"); |
479 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
449 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
480 break; |
450 break; |
481 } |
451 } |