diff -r b818131c88a3 -r e1b6d78dfe6a tsrc/consoleplayer/player/src/openmax_al/opmaxplayerwindow.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsrc/consoleplayer/player/src/openmax_al/opmaxplayerwindow.cpp Fri Sep 03 19:37:02 2010 -0500 @@ -0,0 +1,347 @@ +#include "opmaxplayerwindow.h" +#include "openmaxplayerutility.h" + + +/** +Balance values from mmfstandardcustomcommands.h +*/ +#if 0 +const TInt KMMFBalanceCenter = 0; +const TInt KMMFBalanceMaxLeft = -100; +const TInt KMMFBalanceMaxRight = 100; +#endif + +COpMaxPlayerWindow* COpMaxPlayerWindow::NewL( RFs& aFs, + RWsSession& aWs, + CWsScreenDevice& aScreenDevice, + const RWindowTreeNode &aParentWindow, + TPoint aTopRight, + TSize aSize, + bool aTransparent, + TRgb aBackgroundColor, + bool aSuppressGraphicsContext) + { + COpMaxPlayerWindow* self = new(ELeave) COpMaxPlayerWindow( aFs, aWs, aScreenDevice, aSuppressGraphicsContext); + CleanupStack::PushL( self ); + self->ConstructL( aParentWindow, aTopRight, aSize, aTransparent, aBackgroundColor ); + CleanupStack::Pop(); + return self; + } + +COpMaxPlayerWindow::COpMaxPlayerWindow( RFs& aFs, RWsSession& aWs, CWsScreenDevice& aScreenDevice, bool aSuppressGraphicsContext ) : + CPlayerWindow( aFs, aWs, aScreenDevice, aSuppressGraphicsContext ) + { + } + +COpMaxPlayerWindow::~COpMaxPlayerWindow() + { + delete iVideoPlayer; + } + +void COpMaxPlayerWindow::ConstructL( const RWindowTreeNode &aParentWindow, TPoint aTopRight, TSize aSize, bool aTransparent, TRgb aBackgroundColor ) + { + BaseConstructL( aParentWindow, aTopRight, aSize, aTransparent, aBackgroundColor ); + + iVideoPlayer = new (ELeave) COpenMaxPlayerUtility; + iVideoPlayer->AddDisplayWindow( iWs, iScreenDevice, iWindow ); + } + + +void COpMaxPlayerWindow::InitializeParameters( TSize& aVideoSize, + TTimeIntervalMicroSeconds& aDuration, + TInt& aMaxVolume, + TInt& aCurrentVolume, + TInt& aBalanceCenter, + TInt& aBalanceMaxLeft, + TInt& aBalanceMaxRight, + TInt& aDefaultBalance, + TInt& aCurrentBalance ) + { + iVideoPlayer->VideoFrameSize(aVideoSize); + aDuration = iVideoPlayer->Duration(); + aMaxVolume = iVideoPlayer->MaxVolume(); + aCurrentVolume = iVideoPlayer->Volume(); + aBalanceCenter = KMMFBalanceCenter; + aBalanceMaxLeft = KMMFBalanceMaxLeft; + aBalanceMaxRight = KMMFBalanceMaxRight; + aDefaultBalance = iVideoPlayer->Balance(); + aCurrentBalance = aDefaultBalance; + } + +void COpMaxPlayerWindow::SetDefaultAutoscaleMode( TAutoscaleMode aDefaultAutoscale ) + { + switch( aDefaultAutoscale ) + { + case EDoNotAutoscale: + iAutoScale = EAutoScaleNone; + break; + case EBestFit: + iAutoScale = EAutoScaleBestFit; + break; + case EStretch: + iAutoScale = EAutoScaleStretch; + break; + } + iDefaultAutoScale = iAutoScale; + iVideoPlayer->SetAutoScale(iWindow, iAutoScale); + } + +void COpMaxPlayerWindow::PreparePlayerWithFile( RFile& aFile ) + { + TFileName fileName; + aFile.FullName(fileName); + iVideoPlayer->OpenFile(fileName); + + // Now wait for MvpuoOpenComplete callback. + PlayInitiated(); + } + +void COpMaxPlayerWindow::PreparePlayerWithUrl( const TDesC& aUrl ) + { + iVideoPlayer->OpenFile(aUrl); + + // Now wait for MvpuoOpenComplete callback. + } + +TInt COpMaxPlayerWindow::DoExecuteOperation( TInt /*aOperation*/ ) + { + // Currently there are no MMF-specific commands. + return KErrNotSupported; + } + +TTimeIntervalMicroSeconds COpMaxPlayerWindow::Position() + { + TTimeIntervalMicroSeconds position = iVideoPlayer->Position(); + return position; + } + +TInt COpMaxPlayerWindow::SetVolume( TInt aVolume ) + { + iVideoPlayer->SetVolume( aVolume ); + return 0; + } + +TInt COpMaxPlayerWindow::SetBalance( TInt aBalance ) + { + iVideoPlayer->SetBalance( aBalance ); + return 0; + } + +TInt COpMaxPlayerWindow::RotationAngle() + { + TInt rotAngle = 0; + switch( iRotation ) + { + case EVideoRotationClockwise90: + rotAngle = 90; + case EVideoRotationClockwise180: + rotAngle = 180; + case EVideoRotationClockwise270: + rotAngle = 270; + default: + rotAngle = 0; + } + return rotAngle; + } + +TInt COpMaxPlayerWindow::NextRotationAngle() + { + switch( iRotation ) + { + case EVideoRotationNone: + iRotation = EVideoRotationClockwise90; + break; + case EVideoRotationClockwise90: + iRotation = EVideoRotationClockwise180; + break; + case EVideoRotationClockwise180: + iRotation = EVideoRotationClockwise270; + break; + case EVideoRotationClockwise270: + iRotation = EVideoRotationNone; + break; + } + iVideoPlayer->SetRotation(iWindow, iRotation); + return 0; + } + +TInt COpMaxPlayerWindow::ResetRotation() + { + iRotation = EVideoRotationNone; + iVideoPlayer->SetRotation(iWindow, iRotation); + return 0; + } + +TInt COpMaxPlayerWindow::NextAutoscaleMode() + { + switch( iAutoScale ) + { + case EAutoScaleNone: + iAutoScale = EAutoScaleBestFit; + break; + case EAutoScaleBestFit: + iAutoScale = EAutoScaleClip; + break; + case EAutoScaleClip: + iAutoScale = EAutoScaleStretch; + break; + case EAutoScaleStretch: + iAutoScale = EAutoScaleNone; + break; + } + iVideoPlayer->SetAutoScale(iWindow, iAutoScale); + return 0; + } + +TInt COpMaxPlayerWindow::ResetAutoscale() + { + iAutoScale = iDefaultAutoScale; + iVideoPlayer->SetAutoScale(iWindow, iAutoScale); + return 0; + } + +void COpMaxPlayerWindow::AppendAutoscaleModeText( TDes& aString ) + { + switch( iAutoScale ) + { + case EAutoScaleNone: + aString.Append(_L("None")); + break; + case EAutoScaleBestFit: + aString.Append(_L("Best Fit")); + break; + case EAutoScaleClip: + aString.Append(_L("Clip")); + break; + case EAutoScaleStretch: + aString.Append(_L("Stretch")); + break; + } + } + +TInt COpMaxPlayerWindow::SetClipRectangle( TRect aRect ) + { + iVideoPlayer->SetWindowClipRect(iWindow, aRect); + return 0; + } + +TInt COpMaxPlayerWindow::SetVideoExtent( TRect aExtent ) + { + iVideoPlayer->SetVideoExtent(iWindow, aExtent); + return 0; + } + +TInt COpMaxPlayerWindow::SetScaleFactor( TReal aWidthScaleFactor, TReal aHeightScaleFactor ) + { + iVideoPlayer->SetScaleFactor(iWindow, aWidthScaleFactor, aHeightScaleFactor); + return 0; + } + +TInt COpMaxPlayerWindow::Play() + { + iVideoPlayer->Play(); + return KErrNone; + } + +TInt COpMaxPlayerWindow::Pause() + { + iVideoPlayer->Pause(); + return 0; + } + +TInt COpMaxPlayerWindow::Stop() + { + return iVideoPlayer->Stop(); + } + +TInt COpMaxPlayerWindow::SetPosition( TTimeIntervalMicroSeconds aPositionInMs ) + { + iVideoPlayer->SetPosition( aPositionInMs ); + return 0; + } + +TInt COpMaxPlayerWindow::StepForward() + { + iVideoPlayer->StepFrame(1); + return 0; + } + +TInt COpMaxPlayerWindow::StepBackward() + { + iVideoPlayer->StepFrame(-1); + return 0; + } + +TInt COpMaxPlayerWindow::SetPlayVelocity( TInt aVelocity ) + { + TRAPD( err, iVideoPlayer->SetPlayVelocity(aVelocity) ); + return err; + } + +// inherited from MVideoPlayerUtilityObserver +void COpMaxPlayerWindow::MvpuoOpenComplete(TInt aError) + { + RDebug::Printf( "CONSOLEPLAYER MvpuoOpenComplete(%i)", aError ); + + if( aError == KErrNone ) + { + iVideoPlayer->Prepare(); + + // Now wait for MvpuoPrepareComplete callback. + } + else + { + Error( aError ); + } + } + +void COpMaxPlayerWindow::MvpuoPrepareComplete(TInt aError) + { + RDebug::Printf( "CONSOLEPLAYER MvpuoPrepareComplete(%i)", aError ); + + if( aError == KErrNone ) + { + iVideoPlayer->AddDisplayWindow( iWs, iScreenDevice, iWindow ); + Play(); + ResetAutoscale(); + PlayInitiated(); + } + else + { + Error( aError ); + } + } + +void COpMaxPlayerWindow::MvpuoFrameReady(CFbsBitmap& /*aFrame*/,TInt aError) + { + RDebug::Printf( "CONSOLEPLAYER MvpuoFrameReady(%i)", aError ); + + if( aError != KErrNone ) + { + Error( aError ); + } + } + +void COpMaxPlayerWindow::MvpuoPlayComplete(TInt aError) + { + RDebug::Printf( "CONSOLEPLAYER MvpuoPlayComplete(%i)", aError ); + + if( aError == KErrNone ) + { + PlayComplete(); + } + else + { + Error( aError ); + } + } + +void COpMaxPlayerWindow::MvpuoEvent(const TMMFEvent& aEvent) + { + RDebug::Printf( "CONSOLEPLAYER MvpuoEvent event=%x error=%i", aEvent.iEventType.iUid, aEvent.iErrorCode ); + + if( aEvent.iErrorCode != KErrNone ) + { + Error( aEvent.iErrorCode ); + } + }