khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.c
changeset 16 43d09473c595
parent 12 5a06f39ad45b
child 21 2ed61feeead6
child 31 8dfd592727cb
equal deleted inserted replaced
14:80975da52420 16:43d09473c595
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description: 
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "unistd.h"
    18 #include "unistd.h"
    19 #include "xamediaplayeradaptctxmmf.h"
    19 #include "xamediaplayeradaptctxmmf.h"
    26 
    26 
    27 /*forward declaration of position updater callback*/
    27 /*forward declaration of position updater callback*/
    28 gboolean XAPlayItfAdapt_PositionUpdate(gpointer ctx);
    28 gboolean XAPlayItfAdapt_PositionUpdate(gpointer ctx);
    29 
    29 
    30 /*
    30 /*
    31  * XAresult XAPlayItfAdapt_SetPlayState(XAAdaptationBaseCtx *bCtx, XAuint32 state)
    31  * XAresult XAPlayItfAdaptMMF_SetPlayState(XAAdaptationBaseCtx *bCtx, XAuint32 state)
    32  * Sets play state to GStreamer.
    32  * Sets play state to GStreamer.
    33  * @param XAAdaptationBaseCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID
    33  * @param XAAdaptationBaseCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID
    34  * XAuint32 state - Play state to be set
    34  * XAuint32 state - Play state to be set
    35  * @return XAresult ret - Success value
    35  * @return XAresult ret - Success value
    36  */
    36  */
    37 XAresult XAPlayItfAdaptMMF_SetPlayState(XAAdaptationBaseMMFCtx *bCtx, XAuint32 state)
    37 XAresult XAPlayItfAdaptMMF_SetPlayState(XAAdaptationBaseCtx *bCtx, XAuint32 state)
    38 {
    38 {
    39     XAresult ret = XA_RESULT_SUCCESS;
    39     XAresult ret = XA_RESULT_SUCCESS;
    40     
    40     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
    41     XAMediaPlayerAdaptationMMFCtx* mCtx = NULL;
    41 
    42 
    42     DEBUG_API_A1("->XAPlayItfAdaptMMF_SetPlayState %s",PLAYSTATENAME(state));
    43 
    43 
    44     
    44     /* bCtx and parameter pointer validation happens in the calling function.
    45     DEBUG_API_A1("->XAPlayItfAdapt_SetPlayState %s",PLAYSTATENAME(state));
    45      * We don't need to repeat it here*/
    46 
       
    47     if(!bCtx)
       
    48     {
       
    49         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
    50         return XA_RESULT_PARAMETER_INVALID;
       
    51     }
       
    52 
       
    53     mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
       
    54     switch ( state )
    46     switch ( state )
    55     {
    47     {
    56         case XA_PLAYSTATE_STOPPED:
    48         case XA_PLAYSTATE_STOPPED:
    57         {
    49         {
    58             mmf_stop_playback(mCtx->mmfContext);
    50             ret = mmf_playitf_stop_playback(mCtx->mmfContext);
    59             mmf_close(mCtx->mmfContext);
       
    60             break;
    51             break;
    61         }
    52         }
    62         case XA_PLAYSTATE_PAUSED:
    53         case XA_PLAYSTATE_PAUSED:
    63             mmf_pause_playback(mCtx->mmfContext);
    54             ret = mmf_playitf_pause_playback(mCtx->mmfContext);
    64             break;
    55             break;
    65         case XA_PLAYSTATE_PLAYING:
    56         case XA_PLAYSTATE_PLAYING:
    66         {
    57         {
    67             mmf_resume_playback(mCtx->mmfContext);
    58             ret = mmf_playitf_resume_playback(mCtx->mmfContext);
    68             break;
    59             break;
    69         }
    60         }
    70         default:
    61         default:
    71             ret = XA_RESULT_PARAMETER_INVALID;
    62             ret = XA_RESULT_PARAMETER_INVALID;
    72             break;
    63             break;
    73     }
    64     }
    74 
    65 
    75    DEBUG_API("<-XAPlayItfAdapt_SetPlayState");
    66     DEBUG_API("<-XAPlayItfAdaptMMF_SetPlayState");
    76     return ret;
    67     return ret;
    77 }
    68 }
    78 
    69 
    79 /*
    70 /*
    80  * XAresult XAPlayItfAdapt_GetDuration(XAAdaptationBaseCtx *bCtx, XAmillisecond *pMsec)
    71  * XAresult XAPlayItfAdaptMMF_GetPlayState(XAAdaptationBaseCtx *bCtx, XAuint32 *pState)
       
    72  * @param XAAdaptationBaseCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID
       
    73  * XAuint32 *state - XAmillisecond *pMsec - Pointer where to store play state
       
    74  * @return XAresult ret - Success value
       
    75  */
       
    76 XAresult XAPlayItfAdaptMMF_GetPlayState(XAAdaptationBaseCtx *bCtx, XAuint32 *pState)
       
    77     {
       
    78     XAresult ret = XA_RESULT_SUCCESS;
       
    79     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
       
    80 
       
    81     DEBUG_API("->XAPlayItfAdaptMMF_GetPlayState");
       
    82 
       
    83     /* If playhead reaches eof, state will transition to paused.
       
    84      * This object does not have visibility to callback*/
       
    85     ret = mmf_playitf_get_play_state(mCtx->mmfContext, pState);
       
    86 
       
    87     DEBUG_API("<-XAPlayItfAdaptMMF_GetPlayState");
       
    88     return ret;
       
    89 
       
    90     }
       
    91 
       
    92 /*
       
    93  * XAresult XAPlayItfAdaptMMF_GetDuration(XAAdaptationBaseCtx *bCtx, XAmillisecond *pMsec)
    81  * @param XAAdaptationBaseCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID
    94  * @param XAAdaptationBaseCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID
    82  * XAmillisecond *pMsec - Pointer where to store duration of stream.
    95  * XAmillisecond *pMsec - Pointer where to store duration of stream.
    83  * @return XAresult ret - Success value
    96  * @return XAresult ret - Success value
    84  */
    97  */
    85 XAresult XAPlayItfAdaptMMF_GetDuration(XAAdaptationBaseMMFCtx *bCtx, XAmillisecond *pMsec)
    98 XAresult XAPlayItfAdaptMMF_GetDuration(XAAdaptationBaseCtx *bCtx, XAmillisecond *pMsec)
    86 {
    99 {
    87     XAresult ret = XA_RESULT_SUCCESS;
   100     XAresult ret = XA_RESULT_SUCCESS;
    88 
   101     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
    89     DEBUG_API("->XAPlayItfAdapt_GetDuration");
   102 
    90 
   103     DEBUG_API("->XAPlayItfAdaptMMF_GetDuration");
    91     if(!bCtx)
   104 
    92     {
   105     ret = mmf_playitf_get_duration(mCtx->mmfContext, pMsec);
    93         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   106 
    94         /* invalid parameter */
   107     DEBUG_API("<-XAPlayItfAdaptMMF_GetDuration");
    95         return XA_RESULT_PARAMETER_INVALID;
   108     return ret;
    96     }
   109 }
    97 
   110 
    98 
   111 /*
    99     DEBUG_API("<-XAPlayItfAdapt_GetDuration");
   112  * XAresult XAPlayItfAdaptMMF_GetPosition(XAAdaptationBaseCtx *bCtx, XAmillisecond *pMsec)
   100     return ret;
       
   101 }
       
   102 
       
   103 /*
       
   104  * XAresult XAPlayItfAdapt_GetPosition(XAAdaptationBaseCtx *bCtx, XAmillisecond *pMsec)
       
   105  * @param XAAdaptationBaseCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID value
   113  * @param XAAdaptationBaseCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID value
   106  * XAmillisecond *pMsec - Pointer where to store current position in stream.
   114  * XAmillisecond *pMsec - Pointer where to store current position in stream.
   107  * @return XAresult ret - Success value
   115  * @return XAresult ret - Success value
   108  */
   116  */
   109 XAresult XAPlayItfAdaptMMF_GetPosition(XAAdaptationBaseMMFCtx *bCtx, XAmillisecond *pMsec)
   117 XAresult XAPlayItfAdaptMMF_GetPosition(XAAdaptationBaseCtx *bCtx, XAmillisecond *pMsec)
   110 {
   118 {
   111     XAresult ret = XA_RESULT_SUCCESS;
   119     XAresult ret = XA_RESULT_SUCCESS;
   112     
   120     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
   113     DEBUG_API("->XAPlayItfAdapt_GetPosition");
   121 
   114 
   122     DEBUG_API("->XAPlayItfAdaptMMF_GetPosition");
   115     if(!bCtx)
   123 
   116     {
   124     ret = mmf_playitf_get_position(mCtx->mmfContext, pMsec);
   117         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   125 
   118         /* invalid parameter */
   126     DEBUG_API("<-XAPlayItfAdaptMMF_GetPosition");
   119         return XA_RESULT_PARAMETER_INVALID;
   127     return ret;
   120     }
   128 }
   121     
   129 
   122     DEBUG_API("<-XAPlayItfAdapt_GetPosition");
   130 /*
   123     return ret;
   131  * XAresult XAPlayItfAdaptMMF_RegisterCallback(XAAdaptationBaseCtx *bCtx, xaPlayCallback callback)
   124 }
   132  * Description: Sets the playback callback function.
   125 
   133  */
   126 /*
   134 XAresult XAPlayItfAdaptMMF_RegisterCallback(XAAdaptationBaseCtx *bCtx, xaPlayCallback callback)
   127  * XAresult XAPlayItfAdapt_EnablePositionTracking
   135 {
   128  * Enable/disable periodic position tracking callbacks
   136     XAresult ret = XA_RESULT_SUCCESS;
   129  */
   137     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
   130 XAresult XAPlayItfAdaptMMF_EnablePositionTracking(XAAdaptationBaseMMFCtx *bCtx, XAboolean enable)
   138 
   131 {
   139     DEBUG_API("->XAPlayItfAdaptMMF_RegisterCallback");
   132     DEBUG_API_A1("->XAPlayItfAdapt_EnablePositionTracking (enable: %d)", (int)enable);
   140 
   133     if(!bCtx)
   141     ret = mmf_playitf_register_callback(mCtx->mmfContext, callback);
   134     {
   142 
   135         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   143     DEBUG_API("<-XAPlayItfAdaptMMF_RegisterCallback");
   136         /* invalid parameter */
   144     return ret;
   137         return XA_RESULT_PARAMETER_INVALID;
   145 }
   138     }
   146 
   139 
   147 /**
   140     DEBUG_API("<-XAPlayItfAdapt_EnablePositionTracking");
   148  * XAresult XAPlayItfAdaptMMF_SetCallbackEventsMask(XAAdaptationBaseCtx *bCtx, XAuint32 eventFlags)
   141     return XA_RESULT_SUCCESS;
   149  * Description: Enables/disables notification of playback events.
   142 }
   150  **/
   143 
   151 XAresult XAPlayItfAdaptMMF_SetCallbackEventsMask(XAAdaptationBaseCtx *bCtx, XAuint32 eventFlags)
       
   152 {
       
   153     XAresult ret = XA_RESULT_SUCCESS;
       
   154     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
       
   155 
       
   156     DEBUG_API("->XAPlayItfAdaptMMF_SetCallbackEventsMask");
       
   157 
       
   158     ret = mmf_playitf_set_callback_events_mask(mCtx->mmfContext, eventFlags);
       
   159 
       
   160     DEBUG_API("<-XAPlayItfAdaptMMF_SetCallbackEventsMask");
       
   161     return ret;
       
   162 }
       
   163 
       
   164 /**
       
   165  * XAresult XAPlayItfAdaptMMF_SetMarkerPosition(XAAdaptationBaseCtx *bCtx, XAmillisecond mSec)
       
   166  * Description: Sets marker position.
       
   167  **/
       
   168 XAresult XAPlayItfAdaptMMF_SetMarkerPosition(XAAdaptationBaseCtx *bCtx, XAmillisecond mSec)
       
   169 {
       
   170     XAresult ret = XA_RESULT_SUCCESS;
       
   171     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
       
   172 
       
   173     DEBUG_API("->XAPlayItfAdaptMMF_SetMarkerPosition");
       
   174 
       
   175     ret = mmf_playitf_set_marker_position(mCtx->mmfContext, mSec);
       
   176 
       
   177     DEBUG_API("<-XAPlayItfAdaptMMF_SetMarkerPosition");
       
   178     return ret;
       
   179 }
       
   180 
       
   181 /**
       
   182  * XAresult XAPlayItfAdaptMMF_SetCallbackEventsMask(XAAdaptationBaseCtx *bCtx, XAuint32 eventFlags)
       
   183  * Description: Clears marker position.
       
   184  **/
       
   185 XAresult XAPlayItfAdaptMMF_ClearMarkerPosition(XAAdaptationBaseCtx *bCtx)
       
   186 {
       
   187     XAresult ret = XA_RESULT_SUCCESS;
       
   188     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
       
   189 
       
   190     DEBUG_API("->XAPlayItfAdaptMMF_ClearMarkerPosition");
       
   191 
       
   192     ret = mmf_playitf_clear_marker_position(mCtx->mmfContext);
       
   193 
       
   194     DEBUG_API("<-XAPlayItfAdaptMMF_ClearMarkerPosition");
       
   195     return ret;
       
   196 }
       
   197 
       
   198 /**
       
   199  * XAPlayItfAdaptMMF_SetPositionUpdatePeriod(XAAdaptationBaseCtx *bCtx, XAmillisecond mSec)
       
   200  * Description: Sets position update period.
       
   201  **/
       
   202 XAresult XAPlayItfAdaptMMF_SetPositionUpdatePeriod(XAAdaptationBaseCtx *bCtx, XAmillisecond mSec)
       
   203 {
       
   204     XAresult ret = XA_RESULT_SUCCESS;
       
   205     XAMediaPlayerAdaptationMMFCtx* mCtx = (XAMediaPlayerAdaptationMMFCtx*) bCtx;
       
   206 
       
   207     DEBUG_API("->XAPlayItfAdaptMMF_SetPositionUpdatePeriod");
       
   208 
       
   209     ret = mmf_playitf_set_position_update_period(mCtx->mmfContext, mSec);
       
   210 
       
   211     DEBUG_API("<-XAPlayItfAdaptMMF_SetPositionUpdatePeriod");
       
   212     return ret;
       
   213 }