diff -r 69946d1824c4 -r b9e04db066d4 videoplayback/videohelix/src/mpxvideoplaybackstate.cpp --- a/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Mon May 03 12:32:50 2010 +0300 +++ b/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Fri May 14 15:53:50 2010 +0300 @@ -16,7 +16,7 @@ */ -// Version : %version: 39 % +// Version : %version: 41 % // @@ -24,6 +24,7 @@ // #include #include +#include #include "mpxvideoplaybackcontroller.h" #include "mpxvideoplaybackstate.h" @@ -54,7 +55,6 @@ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::ConstructL()")); iVideoPlaybackCtlr = aVideoPlaybackCtlr; - iVideoPlaybackCtlr->iPBPluginError = KErrNone; User::LeaveIfError( iFs.Connect() ); iFs.ShareProtected(); @@ -296,8 +296,15 @@ TUint attrG(0); // General attributes TUint attrV(0); // Video attributes - if (iVideoPlaybackCtlr->iPBPluginError != KErrNone) + if ( iVideoPlaybackCtlr->iPBPluginError != KErrNone ) { + if ( iVideoPlaybackCtlr->iClipName ) + { + aMedia->SetTextValueL( + TMPXAttribute( KMPXMediaIdGeneral, EMPXMediaGeneralUri ), + *( iVideoPlaybackCtlr->iClipName ) ); + } + aMedia->SetTObjectValueL( TMPXAttribute( KMPXMediaVideoError ), iVideoPlaybackCtlr->iPBPluginError ); @@ -485,16 +492,6 @@ } // - // TV-Out Playback Allowed - // - if ( attrV & KMPXMediaVideoTvOutPlayAllowed.iAttributeId ) - { - aMedia->SetTObjectValueL( - TMPXAttribute( KMPXMediaVideoTvOutPlayAllowed ), - iVideoPlaybackCtlr->iAccessoryMonitor->IsTvOutPlaybackAllowed() ); - } - - // // BitRate // if ( attrV & KMPXMediaVideoBitRate.iAttributeId ) @@ -578,9 +575,9 @@ TMPXAttribute( KMPXMediaVideoKeywords ), *( iVideoPlaybackCtlr->iFileDetails->iKeywords ) ); } - + // - // Creation date/time + // Creation date/time // if ( attrV & KMPXMediaVideoCreated.iAttributeId ) { @@ -590,7 +587,7 @@ } // - // Last Modified date/time + // Last Modified date/time // if ( attrV & KMPXMediaVideoLastModified.iAttributeId ) { @@ -752,7 +749,7 @@ MMPXPlaybackPluginObserver::TEvent aEvent, TBool aSendEvent ) { - MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::CMPXVideoPlaybackState::IssuePlayCommand()"), + MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::IssuePlayCommand()"), _L("aState = %d, aEvent = %d, aSendEvent = %d"), aState, aEvent, aSendEvent ); MPX_TRAPD( err, iVideoPlaybackCtlr->iPlayer->PlayL() ); @@ -772,6 +769,21 @@ } } +// ------------------------------------------------------------------------------------------------ +// CMPXVideoPlaybackState::UpdateSeekableL() +// ------------------------------------------------------------------------------------------------ +void CMPXVideoPlaybackState::UpdateSeekableL( CMPXCommand& aCmd ) +{ + MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::UpdateSeekableL()")); + + iVideoPlaybackCtlr->iSeekable = aCmd.ValueTObjectL(KMPXMediaGeneralExtVideoSeekable); + + if ( iVideoPlaybackCtlr->iFileDetails ) + { + iVideoPlaybackCtlr->iFileDetails->iSeekable &= iVideoPlaybackCtlr->iSeekable; + } +} + // ************************************************************************************************* // // STATE SUB-CLASSES @@ -829,6 +841,16 @@ if ( iVideoPlaybackCtlr->iPBPluginError != KErrNone ) { + if ( iVideoPlaybackCtlr->iClipName ) + { + // + // Send the clip name and error code for further processing + // + aMedia->SetTextValueL( + TMPXAttribute( KMPXMediaIdGeneral, EMPXMediaGeneralUri ), + *( iVideoPlaybackCtlr->iClipName ) ); + } + aMedia->SetTObjectValueL( TMPXAttribute( KMPXMediaVideoError ), iVideoPlaybackCtlr->iPBPluginError ); @@ -902,6 +924,21 @@ MPX_TRAPD( err, SendErrorToViewL( iVideoPlaybackCtlr->iPBPluginError ) ); } +// ------------------------------------------------------------------------------------------------ +// CMPXNotInitialisedState::UpdateSeekableL() +// ------------------------------------------------------------------------------------------------ +void CMPXNotInitialisedState::UpdateSeekableL( CMPXCommand& /*aCmd*/ ) +{ + MPX_DEBUG(_L("CMPXNotInitialisedState::UpdateSeekableL()")); + + // + // Do not update the seekable state since the plugin is in the not initialized state + // An error probably occurred, plugin went to not initialized. If update was applied, + // it would not be cleared for the next clip since we are already in not initialized + // state. + // +} + // ************************************************************************************************* // // CMPXInitialisingState @@ -1024,25 +1061,7 @@ } else { - // - // Transistion back to EMPXVideoNotInitialized, for pre loaded plugin - // this state will alert the view that pre loading failed - // - iVideoPlaybackCtlr->ChangeState( EMPXVideoNotInitialized ); - - // Store the error, in case of pre loaded pluging this can - // later be sent to the view - iVideoPlaybackCtlr->iPBPluginError = aError; - - // - // move the FW state to Initialized irrespective of the playback state - // This enables the FW to send initailized event to view, which in turn - // queries for the error - // - iVideoPlaybackCtlr->iMPXPluginObs->HandlePluginEvent( - MMPXPlaybackPluginObserver::EPInitialised, - 0, - KErrNone ); + iVideoPlaybackCtlr->HandleError( aError ); } } @@ -1090,23 +1109,7 @@ } else { - // - // Transistion back to EMPXVideoNotInitialized, for pre loaded plugin - // this state will alert the view that pre loading failed - // - iVideoPlaybackCtlr->ChangeState( EMPXVideoNotInitialized ); - - // Store the error, in case of pre loaded pluging this can - // later be sent to the view - iVideoPlaybackCtlr->iPBPluginError = aError; - - // - // move the FW state to Initialized irrespective of the playback state - // This enables the FW to send initailized event to view, which in turn - // queries for the error - // - iVideoPlaybackCtlr->iMPXPluginObs-> - HandlePluginEvent( MMPXPlaybackPluginObserver::EPInitialised, 0, KErrNone ); + iVideoPlaybackCtlr->HandleError( aError ); } } @@ -1745,22 +1748,22 @@ MPX_DEBUG(_L("CMPXBufferingState::HandleLoadingStarted()")); TInt loadingPercentage = RetrieveBufferingPercentage(); - + if ( loadingPercentage < 100 ) { MPX_TRAPD( err, { CMPXMessage* message = CMPXMessage::NewL(); CleanupStack::PushL( message ); - - message->SetTObjectValueL( KMPXMessageGeneralId, + + message->SetTObjectValueL( KMPXMessageGeneralId, KMPXMediaIdVideoPlayback ); - - message->SetTObjectValueL( KMPXMediaVideoPlaybackCommand, + + message->SetTObjectValueL( KMPXMediaVideoPlaybackCommand, EPbCmdLoadingStarted ); - + iVideoPlaybackCtlr->iMPXPluginObs->HandlePlaybackMessage( message, KErrNone ); - + CleanupStack::PopAndDestroy( message ); } ); }