diff -r 8dfd592727cb -r 94fc26b6e006 khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp --- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp Wed Jun 23 18:47:10 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp Tue Jul 06 14:50:35 2010 +0300 @@ -23,6 +23,7 @@ #include "markerpositiontimer.h" #include "positionupdatetimer.h" #include "profileutilmacro.h" +#include extern "C" { @@ -1617,6 +1618,68 @@ return retVal; } +XAresult CMMFBackendEngine::SetPlaybackRate(XAint16 rate) + { + XAresult retVal(XA_RESULT_INTERNAL_ERROR); + + switch (iMediaPlayerState) + { + case XA_PLAYSTATE_STOPPED: + case XA_PLAYSTATE_PAUSED: + case XA_PLAYSTATE_PLAYING: + if (iAPIBeingUsed == EAudioPlayerUtility) + { + retVal = XA_RESULT_FEATURE_UNSUPPORTED; + } + else + { + TRAPD(err, iVideoPlayer->SetPlayVelocityL(rate)); + if(!err) + { + retVal = XA_RESULT_SUCCESS; + } + } + break; + case XA_PLAYSTATE_PLAYERUNINITIALIZED: + default: + break; + } + return retVal; + } + +XAresult CMMFBackendEngine::GetPlaybackRateCapabilities(XAboolean* forward, + XAboolean* backward) + { + XAresult retVal(XA_RESULT_PARAMETER_INVALID); + + switch (iMediaPlayerState) + { + case XA_PLAYSTATE_STOPPED: + case XA_PLAYSTATE_PAUSED: + case XA_PLAYSTATE_PLAYING: + if (iAPIBeingUsed == EAudioPlayerUtility) + { + retVal = XA_RESULT_FEATURE_UNSUPPORTED; + } + else + { + TVideoPlayRateCapabilities capability; + TRAPD(err, iVideoPlayer->GetPlayRateCapabilitiesL(capability)); + if(!err) + { + *forward = capability.iPlayForward; + *backward = capability.iPlayBackward; + retVal = XA_RESULT_SUCCESS; + } + } + break; + case XA_PLAYSTATE_PLAYERUNINITIALIZED: + default: + break; + } + return retVal; + } + extern "C" { @@ -1854,4 +1917,14 @@ { return ((CMMFBackendEngine *) (context))->GetVolume(volume); } + + XAresult mmf_playbackrateitf_set_playbackrate(void * context, XAint16 rate) + { + return ((CMMFBackendEngine *) (context))->SetPlaybackRate(rate); + } + + XAresult mmf_playbackrateitf_get_playbackratecaps(void * context, XAboolean* forward, XAboolean* backward) + { + return ((CMMFBackendEngine *) (context))->GetPlaybackRateCapabilities(forward,backward); + } }