24 #include "xaseekitf.h" |
24 #include "xaseekitf.h" |
25 #include "xaprefetchstatusitf.h" |
25 #include "xaprefetchstatusitf.h" |
26 #include "xadynintmgmtitf.h" |
26 #include "xadynintmgmtitf.h" |
27 #include "xavolumeitf.h" |
27 #include "xavolumeitf.h" |
28 #include "xametadataextractionitf.h" |
28 #include "xametadataextractionitf.h" |
29 #include "xametadatatraversalitf.h" |
|
30 #include "xaplaybackrateitf.h" |
29 #include "xaplaybackrateitf.h" |
31 #include "xaequalizeritf.h" |
|
32 #include "xaimagecontrolsitf.h" |
|
33 #include "xaimageeffectsitf.h" |
|
34 #include "xavideopostprocessingitf.h" |
|
35 #include "xaconfigextensionsitf.h" |
30 #include "xaconfigextensionsitf.h" |
36 #include "xathreadsafety.h" |
31 #include "xathreadsafety.h" |
37 #include "xametadataadaptation.h" |
32 #include "xametadataadaptation.h" |
38 #include "xacapabilitiesmgr.h" |
33 #include "xacapabilitiesmgr.h" |
39 #include "xadynamicsourceitf.h" |
34 #include "xadynamicsourceitf.h" |
44 extern void* vfHandle; |
39 extern void* vfHandle; |
45 |
40 |
46 /* Static mapping of enumeration XAMediaPlayerInterfaces to interface iids */ |
41 /* Static mapping of enumeration XAMediaPlayerInterfaces to interface iids */ |
47 static const XAInterfaceID* xaMediaPlayerItfIIDs[MP_ITFCOUNT] = |
42 static const XAInterfaceID* xaMediaPlayerItfIIDs[MP_ITFCOUNT] = |
48 { |
43 { |
49 &XA_IID_OBJECT, |
44 &XA_IID_OBJECT, |
50 &XA_IID_DYNAMICINTERFACEMANAGEMENT, |
45 &XA_IID_DYNAMICINTERFACEMANAGEMENT, |
51 &XA_IID_PLAY, |
46 &XA_IID_PLAY, |
52 &XA_IID_SEEK, |
47 &XA_IID_SEEK, |
53 &XA_IID_VOLUME, |
48 &XA_IID_VOLUME, |
54 &XA_IID_PREFETCHSTATUS, |
49 &XA_IID_PREFETCHSTATUS, |
55 &XA_IID_CONFIGEXTENSION, |
50 &XA_IID_CONFIGEXTENSION, |
56 &XA_IID_DYNAMICSOURCE, |
51 &XA_IID_DYNAMICSOURCE, |
57 &XA_IID_EQUALIZER, |
52 &XA_IID_METADATAEXTRACTION, |
58 &XA_IID_IMAGECONTROLS, |
53 &XA_IID_PLAYBACKRATE, |
59 &XA_IID_IMAGEEFFECTS, |
54 &XA_IID_NOKIAVOLUMEEXT, |
60 &XA_IID_METADATAEXTRACTION, |
55 &XA_IID_NOKIALINEARVOLUME, |
61 &XA_IID_METADATATRAVERSAL, |
56 &XA_IID_STREAMINFORMATION |
62 &XA_IID_PLAYBACKRATE, |
|
63 &XA_IID_VIDEOPOSTPROCESSING, |
|
64 &XA_IID_NOKIAVOLUMEEXT, |
|
65 &XA_IID_NOKIALINEARVOLUME, |
|
66 &XA_IID_STREAMINFORMATION |
|
67 }; |
57 }; |
68 |
58 |
69 /* Global methods */ |
59 /* Global methods */ |
70 |
60 |
71 /* XAResult XAMediaPlayerImpl_CreateMediaPlayer |
61 /* XAResult XAMediaPlayerImpl_CreateMediaPlayer |
162 DEBUG_INFO("Requested (not required) interface not found - continue creation"); |
152 DEBUG_INFO("Requested (not required) interface not found - continue creation"); |
163 } |
153 } |
164 } |
154 } |
165 else |
155 else |
166 { /* weed out unsupported content-aware itf's */ |
156 { /* weed out unsupported content-aware itf's */ |
167 if ((mediaType == XA_MEDIATYPE_IMAGE && (entry->mapIdx |
157 if ((mediaType == XA_MEDIATYPE_IMAGE && (entry->mapIdx == MP_SEEKITF |
168 == MP_SEEKITF || entry->mapIdx == MP_EQUALIZERITF |
158 || entry->mapIdx == MP_VOLUMEITF))) |
169 || entry->mapIdx == MP_VOLUMEITF)) || (mediaType |
|
170 == XA_MEDIATYPE_AUDIO && (entry->mapIdx |
|
171 == MP_IMAGECONTROLSITF || entry->mapIdx |
|
172 == MP_IMAGEEFFECTSITF || entry->mapIdx |
|
173 == MP_VIDEOPOSTPROCESSINGITF))) |
|
174 { |
159 { |
175 entry->required = XA_BOOLEAN_FALSE; |
160 entry->required = XA_BOOLEAN_FALSE; |
176 if (pInterfaceRequired[itfIdx]) |
161 if (pInterfaceRequired[itfIdx]) |
177 { |
162 { |
178 DEBUG_ERR("Required interface not supported for given media - abort creation!"); |
163 DEBUG_ERR("Required interface not supported for given media - abort creation!"); |
194 return ret; |
179 return ret; |
195 } |
180 } |
196 |
181 |
197 /* Mark interfaces that can be handled dynamically */ |
182 /* Mark interfaces that can be handled dynamically */ |
198 /* Mandated dynamic itfs */ |
183 /* Mandated dynamic itfs */ |
199 pBaseObj->interfaceMap[MP_EQUALIZERITF].isDynamic = XA_BOOLEAN_TRUE; |
|
200 pBaseObj->interfaceMap[MP_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE; |
|
201 pBaseObj->interfaceMap[MP_METADATAEXTRACTIONITF].isDynamic |
184 pBaseObj->interfaceMap[MP_METADATAEXTRACTIONITF].isDynamic |
202 = XA_BOOLEAN_TRUE; |
|
203 pBaseObj->interfaceMap[MP_METADATATRAVERSALITF].isDynamic |
|
204 = XA_BOOLEAN_TRUE; |
185 = XA_BOOLEAN_TRUE; |
205 pBaseObj->interfaceMap[MP_PLAYBACKRATEITF].isDynamic = XA_BOOLEAN_TRUE; |
186 pBaseObj->interfaceMap[MP_PLAYBACKRATEITF].isDynamic = XA_BOOLEAN_TRUE; |
206 |
187 |
207 /*Set ObjectItf to point to newly created object*/ |
188 /*Set ObjectItf to point to newly created object*/ |
208 *pPlayer = (XAObjectItf) &(pBaseObj->self); |
189 *pPlayer = (XAObjectItf) &(pBaseObj->self); |
255 pPlayerImpl->dataSrc, pPlayerImpl->bankSrc, |
236 pPlayerImpl->dataSrc, pPlayerImpl->bankSrc, |
256 pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk, |
237 pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk, |
257 pPlayerImpl->vibra, pPlayerImpl->LEDArray); |
238 pPlayerImpl->vibra, pPlayerImpl->LEDArray); |
258 |
239 |
259 pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxMMF; |
240 pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxMMF; |
260 } |
|
261 else |
|
262 { |
|
263 pPlayerImpl->adaptationCtxGst = XAMediaPlayerAdapt_Create( |
|
264 pPlayerImpl->dataSrc, pPlayerImpl->bankSrc, |
|
265 pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk, |
|
266 pPlayerImpl->vibra, pPlayerImpl->LEDArray); |
|
267 |
|
268 pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxGst; |
|
269 } |
241 } |
270 |
242 |
271 pPlayerImpl->curAdaptCtx->capslist = capabilities; |
243 pPlayerImpl->curAdaptCtx->capslist = capabilities; |
272 pPlayerImpl->curAdaptCtx->fwtype = fwType; |
244 pPlayerImpl->curAdaptCtx->fwtype = fwType; |
273 |
245 |
399 break; |
371 break; |
400 case MP_METADATAEXTRACTIONITF: |
372 case MP_METADATAEXTRACTIONITF: |
401 pItf = XAMetadataExtractionItfImpl_Create( |
373 pItf = XAMetadataExtractionItfImpl_Create( |
402 pImpl->curAdaptCtx); |
374 pImpl->curAdaptCtx); |
403 break; |
375 break; |
404 case MP_METADATATRAVERSALITF: |
|
405 pItf = XAMetadataTraversalItfImpl_Create( |
|
406 pImpl->curAdaptCtx); |
|
407 break; |
|
408 case MP_PLAYBACKRATEITF: |
376 case MP_PLAYBACKRATEITF: |
409 pItf = XAPlaybackRateItfImpl_Create(pImpl); |
377 pItf = XAPlaybackRateItfImpl_Create(pImpl); |
410 break; |
378 break; |
411 case MP_CONFIGEXTENSIONITF: |
379 case MP_CONFIGEXTENSIONITF: |
412 pItf = XAConfigExtensionsItfImpl_Create(); |
380 pItf = XAConfigExtensionsItfImpl_Create(); |
414 pImpl->curAdaptCtx); |
382 pImpl->curAdaptCtx); |
415 break; |
383 break; |
416 case MP_DYNAMICSOURCEITF: |
384 case MP_DYNAMICSOURCEITF: |
417 pItf = XADynamicSourceItfImpl_Create(pImpl->curAdaptCtx); |
385 pItf = XADynamicSourceItfImpl_Create(pImpl->curAdaptCtx); |
418 break; |
386 break; |
419 case MP_EQUALIZERITF: |
|
420 pItf = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx); |
|
421 break; |
|
422 #ifdef OMAX_CAMERABIN |
|
423 case MP_IMAGECONTROLSITF: |
|
424 pItf = XAImageControlsItfImpl_Create(pImpl->curAdaptCtx); |
|
425 break; |
|
426 case MP_IMAGEEFFECTSITF: |
|
427 pItf = XAImageEffectsItfImpl_Create(pImpl->curAdaptCtx); |
|
428 break; |
|
429 case MP_VIDEOPOSTPROCESSINGITF: |
|
430 pItf = XAVideoPostProcessingItfImpl_Create(pImpl->curAdaptCtx); |
|
431 break; |
|
432 #endif |
|
433 case MP_NOKIAVOLUMEEXT: |
387 case MP_NOKIAVOLUMEEXT: |
434 pItf = XANokiaVolumeExtItfImpl_Create(pImpl->curAdaptCtx); |
388 pItf = XANokiaVolumeExtItfImpl_Create(pImpl->curAdaptCtx); |
435 break; |
389 break; |
436 case MP_NOKIALINEARVOLUME: |
390 case MP_NOKIALINEARVOLUME: |
437 pItf = XANokiaLinearVolumeItfImpl_Create( |
391 pItf = XANokiaLinearVolumeItfImpl_Create( |
462 if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
416 if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
463 { |
417 { |
464 ret = XAMediaPlayerAdaptMMF_PostInit( |
418 ret = XAMediaPlayerAdaptMMF_PostInit( |
465 (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); |
419 (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); |
466 } |
420 } |
467 else |
421 |
468 { |
|
469 ret = XAMediaPlayerAdapt_PostInit( |
|
470 (XAAdaptationGstCtx*) pImpl->adaptationCtxGst); |
|
471 } |
|
472 if (ret != XA_RESULT_SUCCESS) |
422 if (ret != XA_RESULT_SUCCESS) |
473 { |
423 { |
474 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
424 XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); |
475 DEBUG_ERR("Adaptation init failed!"); |
425 DEBUG_ERR("Adaptation init failed!"); |
476 DEBUG_API("<-XAMediaPlayerImpl_DoRealize"); |
426 DEBUG_API("<-XAMediaPlayerImpl_DoRealize"); |
531 XAPrefetchStatusItfImpl_Free(pItf); |
481 XAPrefetchStatusItfImpl_Free(pItf); |
532 break; |
482 break; |
533 case MP_METADATAEXTRACTIONITF: |
483 case MP_METADATAEXTRACTIONITF: |
534 XAMetadataExtractionItfImpl_Free(pItf); |
484 XAMetadataExtractionItfImpl_Free(pItf); |
535 break; |
485 break; |
536 case MP_METADATATRAVERSALITF: |
|
537 XAMetadataTraversalItfImpl_Free(pItf); |
|
538 break; |
|
539 case MP_PLAYBACKRATEITF: |
486 case MP_PLAYBACKRATEITF: |
540 XAPlaybackRateItfImpl_Free(pItf); |
487 XAPlaybackRateItfImpl_Free(pItf); |
541 break; |
488 break; |
542 case MP_CONFIGEXTENSIONITF: |
489 case MP_CONFIGEXTENSIONITF: |
543 XAConfigExtensionsItfImpl_Free(pItf); |
490 XAConfigExtensionsItfImpl_Free(pItf); |
544 break; |
491 break; |
545 case MP_DYNAMICSOURCEITF: |
492 case MP_DYNAMICSOURCEITF: |
546 XADynamicSourceItfImpl_Free(pItf); |
493 XADynamicSourceItfImpl_Free(pItf); |
547 break; |
494 break; |
548 case MP_EQUALIZERITF: |
|
549 XAEqualizerItfImpl_Free(pItf); |
|
550 break; |
|
551 #ifdef OMAX_CAMERABIN |
|
552 case MP_IMAGECONTROLSITF: |
|
553 XAImageControlsItfImpl_Free(pItf); |
|
554 break; |
|
555 case MP_IMAGEEFFECTSITF: |
|
556 XAImageEffectsItfImpl_Free(pItf); |
|
557 break; |
|
558 case MP_VIDEOPOSTPROCESSINGITF: |
|
559 XAVideoPostProcessingItfImpl_Free(pItf); |
|
560 break; |
|
561 #endif |
|
562 case MP_NOKIAVOLUMEEXT: |
495 case MP_NOKIAVOLUMEEXT: |
563 XANokiaVolumeExtItfImpl_Free(pItf); |
496 XANokiaVolumeExtItfImpl_Free(pItf); |
564 break; |
497 break; |
565 case MP_NOKIALINEARVOLUME: |
498 case MP_NOKIALINEARVOLUME: |
566 XANokiaLinearVolumeItfImpl_Free(pItf); |
499 XANokiaLinearVolumeItfImpl_Free(pItf); |
578 { |
511 { |
579 if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
512 if (pImpl->curAdaptCtx->fwtype == FWMgrFWMMF) |
580 { |
513 { |
581 XAMediaPlayerAdaptMMF_Destroy( |
514 XAMediaPlayerAdaptMMF_Destroy( |
582 (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); |
515 (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); |
583 } |
|
584 else |
|
585 { |
|
586 XAMediaPlayerAdapt_Destroy( |
|
587 (XAAdaptationGstCtx*) pImpl->adaptationCtxGst); |
|
588 } |
516 } |
589 } |
517 } |
590 |
518 |
591 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); |
519 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); |
592 DEBUG_API("<-XAMediaPlayerImpl_FreeResources"); |
520 DEBUG_API("<-XAMediaPlayerImpl_FreeResources"); |
611 switch (mapEntry->mapIdx) |
539 switch (mapEntry->mapIdx) |
612 { |
540 { |
613 |
541 |
614 case MP_METADATAEXTRACTIONITF: |
542 case MP_METADATAEXTRACTIONITF: |
615 mapEntry->pItf = XAMetadataExtractionItfImpl_Create( |
543 mapEntry->pItf = XAMetadataExtractionItfImpl_Create( |
616 pImpl->curAdaptCtx); |
|
617 break; |
|
618 case MP_METADATATRAVERSALITF: |
|
619 mapEntry->pItf = XAMetadataTraversalItfImpl_Create( |
|
620 pImpl->curAdaptCtx); |
544 pImpl->curAdaptCtx); |
621 break; |
545 break; |
622 case MP_PLAYBACKRATEITF: |
546 case MP_PLAYBACKRATEITF: |
623 mapEntry->pItf = XAPlaybackRateItfImpl_Create(pImpl); |
547 mapEntry->pItf = XAPlaybackRateItfImpl_Create(pImpl); |
624 break; |
548 break; |
625 case MP_EQUALIZERITF: |
|
626 mapEntry->pItf |
|
627 = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx); |
|
628 break; |
|
629 #ifdef OMAX_CAMERABIN |
|
630 case MP_IMAGEEFFECTSITF: |
|
631 mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->curAdaptCtx ); |
|
632 break; |
|
633 #endif |
|
634 default: |
549 default: |
635 DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id") |
550 DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id") |
636 ; |
551 ; |
637 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
552 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
638 break; |
553 break; |
681 switch (mapEntry->mapIdx) |
596 switch (mapEntry->mapIdx) |
682 { |
597 { |
683 case MP_METADATAEXTRACTIONITF: |
598 case MP_METADATAEXTRACTIONITF: |
684 XAMetadataExtractionItfImpl_Free(mapEntry->pItf); |
599 XAMetadataExtractionItfImpl_Free(mapEntry->pItf); |
685 break; |
600 break; |
686 case MP_METADATATRAVERSALITF: |
|
687 XAMetadataTraversalItfImpl_Free(mapEntry->pItf); |
|
688 break; |
|
689 case MP_PLAYBACKRATEITF: |
601 case MP_PLAYBACKRATEITF: |
690 XAPlaybackRateItfImpl_Free(mapEntry->pItf); |
602 XAPlaybackRateItfImpl_Free(mapEntry->pItf); |
691 break; |
603 break; |
692 case MP_EQUALIZERITF: |
|
693 XAEqualizerItfImpl_Free(mapEntry->pItf); |
|
694 break; |
|
695 #ifdef OMAX_CAMERABIN |
|
696 case MP_IMAGEEFFECTSITF: |
|
697 XAImageEffectsItfImpl_Free(mapEntry->pItf); |
|
698 break; |
|
699 #endif |
|
700 default: |
604 default: |
701 DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id") |
605 DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id") |
702 ; |
606 ; |
703 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
607 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
704 break; |
608 break; |