diff -r 80975da52420 -r 43d09473c595 khronosfws/openmax_al/src/mediaplayer/xaseekitf.c --- a/khronosfws/openmax_al/src/mediaplayer/xaseekitf.c Mon May 03 12:59:52 2010 +0300 +++ b/khronosfws/openmax_al/src/mediaplayer/xaseekitf.c Fri May 14 16:22:35 2010 +0300 @@ -21,13 +21,11 @@ #include "xaseekitf.h" -#ifdef _GSTREAMER_BACKEND_ -#include "XASeekItfAdaptation.h" -#include "XAPlayItfAdaptation.h" -#endif +#include "xaseekitfadaptation.h" +#include "xaplayitfadaptation.h" #include "xathreadsafety.h" - - +#include "xaplayitfadaptationmmf.h" +#include "xaseekitfadaptationmmf.h" /** * XASeekItfImpl* GetImpl(XASeekItf self) * Description: Validate interface pointer and cast it to implementation pointer. @@ -72,44 +70,80 @@ return XA_RESULT_PARAMETER_INVALID; } -#ifdef _GSTREAMER_BACKEND_ - /* Get duration of the content */ - if(XAPlayItfAdapt_GetDuration(impl->adapCtx, &duration) != XA_RESULT_SUCCESS) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetPosition"); - return XA_RESULT_PARAMETER_INVALID; - } -#endif + + if(impl->adapCtx->fwtype == FWMgrFWMMF) + { + /* Get duration of the content */ + if(XAPlayItfAdaptMMF_GetDuration((XAAdaptationBaseCtx*)impl->adapCtx, &duration) != XA_RESULT_SUCCESS) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetPosition"); + return XA_RESULT_PARAMETER_INVALID; + } + if(pos > duration) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetPosition"); + return XA_RESULT_PARAMETER_INVALID; + } + + if(seekMode != XA_SEEKMODE_FAST && seekMode != XA_SEEKMODE_ACCURATE) + { + /* seek mode unsupported */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); + DEBUG_API("<-XASeekItfImpl_SetPosition"); + return XA_RESULT_FEATURE_UNSUPPORTED; + } - if(pos > duration) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetPosition"); - return XA_RESULT_PARAMETER_INVALID; - } - - if(seekMode != XA_SEEKMODE_FAST && seekMode != XA_SEEKMODE_ACCURATE) - { - /* seek mode unsupported */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASeekItfImpl_SetPosition"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - -#ifdef _GSTREAMER_BACKEND_ - ret = XASeekItfAdapt_SetPosition(impl->adapCtx, pos, seekMode); -#endif - if(ret == XA_RESULT_SUCCESS) - { - impl->playbackPosition = pos; - impl->seekMode = seekMode; - } + ret = XASeekItfAdaptMMF_SetPosition(impl->adapCtx, pos, seekMode); + if(ret == XA_RESULT_SUCCESS) + { + impl->playbackPosition = pos; + impl->seekMode = seekMode; + } + } + else + { + /* Get duration of the content */ + if(XAPlayItfAdaptGST_GetDuration((XAAdaptationGstCtx*)impl->adapCtx, &duration) != XA_RESULT_SUCCESS) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetPosition"); + return XA_RESULT_PARAMETER_INVALID; + } + if(pos > duration) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetPosition"); + return XA_RESULT_PARAMETER_INVALID; + } + + if(seekMode != XA_SEEKMODE_FAST && seekMode != XA_SEEKMODE_ACCURATE) + { + /* seek mode unsupported */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); + DEBUG_API("<-XASeekItfImpl_SetPosition"); + return XA_RESULT_FEATURE_UNSUPPORTED; + } + + ret = XASeekItfAdapt_SetPosition((XAAdaptationGstCtx*)impl->adapCtx, pos, seekMode); + if(ret == XA_RESULT_SUCCESS) + { + impl->playbackPosition = pos; + impl->seekMode = seekMode; + } + + } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XASeekItfImpl_SetPosition"); @@ -139,35 +173,63 @@ return XA_RESULT_PARAMETER_INVALID; } -#ifdef _GSTREAMER_BACKEND_ - /* Get duration of the content */ - if(XAPlayItfAdapt_GetDuration(impl->adapCtx, &duration) != XA_RESULT_SUCCESS) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetLoop"); - return XA_RESULT_PARAMETER_INVALID; - } -#endif - if(endPos > duration && endPos != XA_TIME_UNKNOWN) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetLoop"); - return XA_RESULT_PARAMETER_INVALID; - } - -#ifdef _GSTREAMER_BACKEND_ - ret = XASeekItfAdapt_SetLoop(impl->adapCtx, loopEnable, startPos, endPos); -#endif - if(ret == XA_RESULT_SUCCESS) - { - impl->loopEnable = loopEnable; - impl->startPos = startPos; - impl->endPos = endPos; - } + if(impl->adapCtx->fwtype == FWMgrFWMMF) + { + /* Get duration of the content */ + if(XAPlayItfAdaptMMF_GetDuration((XAAdaptationBaseCtx*)impl->adapCtx, &duration) != XA_RESULT_SUCCESS) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetLoop"); + return XA_RESULT_PARAMETER_INVALID; + } + if(endPos > duration && endPos != XA_TIME_UNKNOWN) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetLoop"); + return XA_RESULT_PARAMETER_INVALID; + } + + ret = XASeekItfAdaptMMF_SetLoop(impl->adapCtx, loopEnable, startPos, endPos); + if(ret == XA_RESULT_SUCCESS) + { + impl->loopEnable = loopEnable; + impl->startPos = startPos; + impl->endPos = endPos; + } + } + else + { + /* Get duration of the content */ + if(XAPlayItfAdaptGST_GetDuration((XAAdaptationGstCtx*)impl->adapCtx, &duration) != XA_RESULT_SUCCESS) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetLoop"); + return XA_RESULT_PARAMETER_INVALID; + } + if(endPos > duration && endPos != XA_TIME_UNKNOWN) + { + /* invalid parameter */ + XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XASeekItfImpl_SetLoop"); + return XA_RESULT_PARAMETER_INVALID; + } + + ret = XASeekItfAdapt_SetLoop((XAAdaptationGstCtx*)impl->adapCtx, loopEnable, startPos, endPos); + if(ret == XA_RESULT_SUCCESS) + { + impl->loopEnable = loopEnable; + impl->startPos = startPos; + impl->endPos = endPos; + } + + } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XASeekItfImpl_SetLoop"); @@ -208,13 +270,12 @@ /** * XASeekItfImpl -specific methods **/ -#ifdef _GSTREAMER_BACKEND_ /** * XASeekItfImpl* XASeekItfImpl_Create() * Description: Allocate and initialize SeekItfImpl. **/ -XASeekItfImpl* XASeekItfImpl_Create( XAAdaptationBaseCtx *adapCtx ) +XASeekItfImpl* XASeekItfImpl_Create( XAMediaPlayerImpl* impl ) { XASeekItfImpl *self = (XASeekItfImpl*) calloc(1,sizeof(XASeekItfImpl)); @@ -233,14 +294,14 @@ self->startPos = 0; self->endPos = 0; - self->adapCtx = adapCtx; + self->adapCtx = impl->curAdaptCtx; self->self = self; } DEBUG_API("<-XASeekItfImpl_Create"); return self; } -#endif + /** * void XASeekItfImpl_Free(XASeekItfImpl* self) * Description: Free all resources reserved at XASeekItfImpl_Create.