diff -r 7d93ee07fb27 -r c48470be1ba7 videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp --- a/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp Thu May 27 12:53:14 2010 +0300 +++ b/videoplayback/hbvideoplaybackview/viewsrc/mpxvideoviewwrapper.cpp Fri Jun 11 13:39:54 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: da1mmcf#30 % +// Version : %version: da1mmcf#32 % @@ -60,7 +60,7 @@ CMPXVideoViewWrapper::CMPXVideoViewWrapper( HbVideoBasePlaybackView* aView ) : iView( aView ) , iControlsController( NULL ) - , iMediaRequested( false ) + , iMediaRequestStatus( MediaNotRequested ) , iPlaylistView( false ) { } @@ -176,7 +176,7 @@ // TBool CMPXVideoViewWrapper::IsLive() { - return (iFileDetails->mPlaybackMode == EMPXVideoLiveStreaming); + return ( iFileDetails->mPlaybackMode == EMPXVideoLiveStreaming ); } // ------------------------------------------------------------------------------------------------- @@ -192,19 +192,20 @@ // CMPXVideoViewWrapper::CreateGeneralPlaybackCommandL() // ------------------------------------------------------------------------------------------------- // -void CMPXVideoViewWrapper::CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd ) +void CMPXVideoViewWrapper::CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd, TBool aDoSync ) { - MPX_DEBUG(_L("CMPXVideoViewWrapper::CreateGeneralPlaybackCommandL(%d)"), aCmd ); - + MPX_ENTER_EXIT(_L("CMPXVideoBasePlaybackView::CreateGeneralPlaybackCommandL()"), + _L("aCmd = %d, aDoSync, = %d"), aCmd, aDoSync ); + CMPXCommand* cmd = CMPXCommand::NewL(); CleanupStack::PushL( cmd ); - cmd->SetTObjectValueL( KMPXCommandGeneralDoSync, ETrue ); + cmd->SetTObjectValueL( KMPXCommandGeneralDoSync, aDoSync ); cmd->SetTObjectValueL( KMPXCommandPlaybackGeneralNoBuffer, ETrue ); cmd->SetTObjectValueL( KMPXCommandGeneralId, KMPXCommandIdPlaybackGeneral ); cmd->SetTObjectValueL( KMPXCommandPlaybackGeneralType, aCmd ); - iPlaybackUtility->CommandL( *cmd ); + iPlaybackUtility->CommandL( *cmd, this ); CleanupStack::PopAndDestroy( cmd ); } @@ -223,7 +224,8 @@ { case EMPXPbvCmdPlay: { - IssuePlayCommandL(); + MPX_DEBUG(_L("CMPXVideoViewWrapper::HandleCommandL() EPbCmdPlay")); + CreateGeneralPlaybackCommandL( EPbCmdPlay ); break; } case EMPXPbvCmdPause: @@ -236,7 +238,12 @@ { MPX_DEBUG(_L("CMPXVideoViewWrapper::HandleCommandL() EMPXPbvCmdClose")); - CreateGeneralPlaybackCommandL( EPbCmdClose ); + // + // closing playback view occurs: + // - synchronously (mSyncClose=true) for PDL case (when PDL is supported) + // - asynchronously (mSyncClose=false) for all other cases + // + CreateGeneralPlaybackCommandL( EPbCmdClose, iView->mSyncClose ); break; } case EMPXPbvCmdSeekForward: @@ -345,7 +352,7 @@ // the second cmd actually goes to the previous item in the list // iPlaybackUtility->CommandL( EPbCmdPrevious ); - iPlaybackUtility->CommandL( EPbCmdPrevious ); + iPlaybackUtility->CommandL( EPbCmdPrevious ); } break; } @@ -364,6 +371,12 @@ CreateVideoSpecificCmdL( EPbCmdCustomPlay ); break; } + case EMPXPbvCmdRealOneBitmapTimeout: + { + IssuePlayCommandL(); + + break; + } } } @@ -395,9 +408,10 @@ { MPX_ENTER_EXIT(_L("CMPXVideoViewWrapper::RequestMediaL()")); - if ( ! iMediaRequested && iPlaybackUtility->StateL() == EPbStateInitialised ) + if ( iMediaRequestStatus == MediaNotRequested && + iPlaybackUtility->StateL() == EPbStateInitialised ) { - iMediaRequested = ETrue; + iMediaRequestStatus = MediaRequested; // // Request the volume for the controls @@ -433,7 +447,7 @@ specs->SetTObjectValueL(KMPXMediaGeneralExtMediaRedirect, ETrue); - s->MediaL( attrs.Array(), *this, specs); + s->MediaL( attrs.Array(), *this, specs ); CleanupStack::PopAndDestroy( specs ); CleanupStack::PopAndDestroy( &attrs ); @@ -612,7 +626,7 @@ // if ( iPlaybackState != EPbStateNotInitialised ) { - iMediaRequested = EFalse; + iMediaRequestStatus = MediaNotRequested; HandleCommandL( EMPXPbvCmdResetControls ); if ( iFileDetails ) @@ -926,65 +940,30 @@ if ( aError == KErrNone ) { - if ( iFileDetails ) - { - iFileDetails->clearFileDetails(); - } - else + iMediaRequestStatus = MediaDelivered; + + if ( ! iFileDetails ) { iFileDetails = new QMPXVideoPlaybackViewFileDetails(); } - + // // Read in the media data // ParseMetaDataL( aMedia ); // - // Create controls since file details are available + // If RN logo is still visible, wait for timeout of rn logo timer + // If RN logo is not visible, issue play // - if ( iControlsController ) - { - iControlsController->addFileDetails( iFileDetails ); - } - - if ( iFileDetails->mVideoEnabled ) + if ( ! iControlsController->isRNLogoBitmapInControlList() ) { - // - // get window size - // - RWindow *window = iView->getWindow(); - TRect displayRect = TRect( TPoint( window->Position() ), TSize( window->Size() ) ); - - // - // get window aspect ratio - // if device is in landscape mode, width > height - // if device is in portrait mode, width < height - // - TReal32 width = (TReal32) displayRect.Width(); - TReal32 height = (TReal32) displayRect.Height(); - TReal32 displayAspectRatio = (width > height)? (width / height) : (height / width); - - // - // get new aspect ratio - TInt newAspectRatio = - iDisplayHandler->SetDefaultAspectRatioL( iFileDetails, displayAspectRatio ); - - // - // Setup the display window and issue play command - // - iDisplayHandler->CreateDisplayWindowL( CCoeEnv::Static()->WsSession(), - *(CCoeEnv::Static()->ScreenDevice()), - *window, - displayRect ); - - if ( iControlsController ) - { - iControlsController->handleEvent( EMPXControlCmdSetAspectRatio, newAspectRatio ); - } + IssuePlayCommandL(); } - - CreateGeneralPlaybackCommandL( EPbCmdPlay ); + } + else + { + iMediaRequestStatus = MediaNotRequested; } } @@ -997,13 +976,14 @@ void CMPXVideoViewWrapper::HandleMediaL( const CMPXMedia& aMedia, TInt aError) { MPX_ENTER_EXIT(_L( "CMPXVideoViewWrapper::HandleMediaL()" )); + if ( aMedia.IsSupported( KMPXMediaVideoError ) ) { TInt error = aMedia.ValueTObjectL( KMPXMediaVideoError ); // Reset the controls HandleCommandL( EMPXPbvCmdResetControls ); // Set the iMediaRequested flag to false - iMediaRequested = EFalse; + iMediaRequestStatus = MediaNotRequested; // Reset the playback state to stopped iPlaybackState = EPbStateStopped; // Handle the plugin error @@ -1031,9 +1011,8 @@ // CMPXVideoViewWrapper::HandlePropertyL() // ------------------------------------------------------------------------------------------------- // -void CMPXVideoViewWrapper::HandlePropertyL( TMPXPlaybackProperty aProperty, - TInt aValue, - TInt aError ) +void +CMPXVideoViewWrapper::HandlePropertyL( TMPXPlaybackProperty aProperty, TInt aValue, TInt aError ) { MPX_DEBUG(_L("CMPXVideoViewWrapper::HandlePropertyL - Error(%d)"), aError ); @@ -1152,16 +1131,6 @@ } // ------------------------------------------------------------------------------------------------- -// CMPXVideoViewWrapper::IssuePlayCommandL -// ------------------------------------------------------------------------------------------------- -// -void CMPXVideoViewWrapper::IssuePlayCommandL() -{ - MPX_ENTER_EXIT(_L("CMPXVideoViewWrapper::IssuePlayCommandL()")); - CreateGeneralPlaybackCommandL( EPbCmdPlay ); -} - -// ------------------------------------------------------------------------------------------------- // CMPXVideoViewWrapper::RetrievePdlInformationL // ------------------------------------------------------------------------------------------------- // @@ -1456,4 +1425,63 @@ iControlsController->updateVideoRectDone(); } +// ------------------------------------------------------------------------------------------------- +// CMPXVideoViewWrapper::IssuePlayCommandL() +// ------------------------------------------------------------------------------------------------- +// +void CMPXVideoViewWrapper::IssuePlayCommandL() +{ + MPX_ENTER_EXIT(_L("CMPXVideoViewWrapper::IssuePlayCommandL()"), + _L("iMediaRequestStatus = %d"), iMediaRequestStatus ); + + if ( iMediaRequestStatus == MediaDelivered ) + { + // + // Create controls since file details are available + // + if ( iControlsController ) + { + iControlsController->addFileDetails( iFileDetails ); + } + + if ( iFileDetails->mVideoEnabled ) + { + // + // get window size + // + RWindow *window = iView->getWindow(); + TRect displayRect = TRect( TPoint( window->Position() ), TSize( window->Size() ) ); + + // + // get window aspect ratio + // if device is in landscape mode, width > height + // if device is in portrait mode, width < height + // + TReal32 width = (TReal32) displayRect.Width(); + TReal32 height = (TReal32) displayRect.Height(); + TReal32 displayAspectRatio = (width > height)? (width / height) : (height / width); + + // + // get new aspect ratio + TInt newAspectRatio = + iDisplayHandler->SetDefaultAspectRatioL( iFileDetails, displayAspectRatio ); + + // + // Setup the display window and issue play command + // + iDisplayHandler->CreateDisplayWindowL( CCoeEnv::Static()->WsSession(), + *(CCoeEnv::Static()->ScreenDevice()), + *window, + displayRect ); + + if ( iControlsController ) + { + iControlsController->handleEvent( EMPXControlCmdSetAspectRatio, newAspectRatio ); + } + } + + CreateGeneralPlaybackCommandL( EPbCmdPlay ); + } +} + // EOF