tsrc/consoleplayer/player/src/openmax_al/opmaxplayerwindow.cpp
changeset 35 b0f0be18af85
child 36 20d2741ccdad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/consoleplayer/player/src/openmax_al/opmaxplayerwindow.cpp	Fri Sep 17 08:31:33 2010 +0300
@@ -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 );
+        }
+    }