khronosfws/openmax_al/src/mediaplayer/xaseekitf.c
changeset 16 43d09473c595
parent 12 5a06f39ad45b
child 25 6f7ceef7b1d1
--- 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.