--- a/vtengines/videoteleng/Src/Media/CVtEngRemoteVideo.cpp Tue Jan 26 12:01:21 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,737 +0,0 @@
-/*
-* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Remote video handler.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "CVtEngRemoteVideo.h"
-#include "CVtEngStateManager.h"
-#include "MVtEngFrameObserver.h"
-#include <videotelephonyvariant.hrh>
-#include "CVtEngSettings.h"
-#include "VtEngUtils.h"
-#include "CVtEngEventManager.h"
-#include "VtEngConstants.h"
-#include "VtEngPanic.h"
-#include "TVtEngRenderingDSA.h"
-#include "TVtEngRenderingDP.h"
-#include "TVtEngRenderingNGA.h"
-#include "TVtEngRenderConfigDSA.h"
-#include "TVtEngRenderConfigDP.h"
-#include "TVtEngRenderConfigNGA.h"
-#include "CVtEngDrawDP.h"
-#include "CVtEngDrawDSA.h"
-#include "CVtEngDrawNGA.h"
-#include <fbs.h>
-#include <w32std.h>
-#include <cvtlogger.h>
-#include <mvtprotocolhandler.h>
-#include <featmgr.h>
-
-// LOCAL CONSTANTS AND MACROS
-// This active object priority.
-const TInt KVtEngRemoteDrawPriority = CActive::EPriorityStandard;
-
-// Timer priority when not frame watching.
-const TInt KVtEngStoppedRenderPriority = CActive::EPriorityLow;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngRemoteVideo
-// C++ constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CVtEngRemoteVideo::CVtEngRemoteVideo(
- MVtSessionCommand& aSessionCommand,
- CVtEngStateManager& aStateManager ) :
- iSessionCommand( aSessionCommand),
- iStateManager( aStateManager ),
- iEnableNGA(ETrue)
- {
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::ConstructL()
- {
- __VTPRINTENTER( "RV.ConstructL" )
- //We are in the Proto ESetup state
- iDrawer =
- static_cast< CVtEngDraw* >( VtEngDrawFactory::CreateDrawerL( this , iEnableNGA) );
- //Add protocol Data Sink;
- iDisplaySink = iDrawer->DisplaySink();
- iAudioSink = VTProtocolFactory::CreateAudioSink();
- __VTPRINTEXIT( "RV.ConstructL" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CVtEngRemoteVideo* CVtEngRemoteVideo::NewL(
- MVtSessionCommand& aSessionCommand,
- CVtEngStateManager& aStateManager )
- {
- CVtEngRemoteVideo* self = new( ELeave )
- CVtEngRemoteVideo( aSessionCommand, aStateManager );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngRemoteVideo
-// Destructor. Cannot leave.
-// -----------------------------------------------------------------------------
-//
-CVtEngRemoteVideo::~CVtEngRemoteVideo()
- {
- __VTPRINTENTER( "RV.~" )
- VTProtocolFactory::DeleteAudioSink( iAudioSink );
- delete iDrawer;
- __VTPRINTEXIT( "RV.~" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::SetRenderingParametersL
-// Sets parameters for rendering the remote video.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::SetRenderingParametersL(
- const TVtEngRenderingOptionsNGA& aParams )
- {
- __VTPRINTENTER( "RV.SetRenderingParametersL NGA" )
-
- // If rendering is ongoing, stop it
- StopVideoRendering();
- // Set new values
- TVtEngRenderConfigNGA config( aParams );
- iDrawer->BaseSetConfigL( config );
- __VTPRINTEXIT( "RV.SetRenderingParametersL NGA" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::SetRenderingParametersL
-// Sets parameters for rendering the remote video.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::SetRenderingParametersL(
- const TVtEngRenderingOptionsDSA& aParams )
- {
- __VTPRINTENTER( "RV.SetRenderingParametersL DSA" )
-
- __VTPRINT( DEBUG_MEDIA , "================== RV.Params ==================" )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iTl.iX %d", aParams.iRect.iTl.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iTl.iY %d", aParams.iRect.iTl.iY )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iBr.iX %d", aParams.iRect.iBr.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iBr.iY %d", aParams.iRect.iBr.iY )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iTl.iX %d",
- aParams.iClipRect.iTl.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iTl.iY %d",
- aParams.iClipRect.iTl.iY )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iBr.iX %d",
- aParams.iClipRect.iBr.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iBr.iY %d",
- aParams.iClipRect.iBr.iY )
- __VTPRINT( DEBUG_MEDIA , "================== RV.Params ==================" )
- // If rendering is ongoing, stop it
- StopVideoRendering();
- // Set new values
- TVtEngRenderConfigDSA config( aParams );
- iDrawer->BaseSetConfigL( config );
- __VTPRINTEXIT( "RV.SetRenderingParametersL DSA" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::SetRenderingParametersL
-// Sets parameters for rendering the remote video.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::SetRenderingParametersL(
- const TVtEngRenderingOptionsDP& aParams )
- {
- __VTPRINTENTER( "RV.SetRenderingParametersL DP" )
-
- __VTPRINT( DEBUG_MEDIA , "================== RV.Params ==================" )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iTl.iX %d", aParams.iRect.iTl.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iTl.iY %d", aParams.iRect.iTl.iY )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iBr.iX %d", aParams.iRect.iBr.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iRect.iBr.iY %d", aParams.iRect.iBr.iY )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iTl.iX %d",
- aParams.iClipRect.iTl.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iTl.iY %d",
- aParams.iClipRect.iTl.iY )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iBr.iX %d",
- aParams.iClipRect.iBr.iX )
- __VTPRINT2( DEBUG_MEDIA , " aParams.iClipRect.iBr.iY %d",
- aParams.iClipRect.iBr.iY )
- __VTPRINT( DEBUG_MEDIA , "================== RV.Params ==================" )
- // If rendering is ongoing, stop it
- StopVideoRendering();
- // Set new values
- TVtEngRenderConfigDP config( aParams );
- iDrawer->BaseSetConfigL( config );
- __VTPRINTEXIT( "RV.SetRenderingParametersL DP" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::StartVideoL
-//
-// For incoming, this function starts/resumes playing out the media to the
-// appropriate sink based on the current settings.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::StartVideoL()
- {
- __VTPRINTENTER( "RV.StartVideoL" )
- if ( iDisplaySink && iDrawer &&
- ( iDrawer->IsFlag( CVtEngDraw::EFlagInitialized ) ||
- iDrawer->IsFlag( CVtEngDraw::EBaseConstructCalled ) ) )
- {
- iDrawer->BaseStartDrawL();
- }
- else
- {
- User::Leave( KErrNotReady );
- }
- __VTPRINTEXIT( "RV.StartVideoL" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::StopVideoRendering
-// Stops rendering of remote video.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::StopVideoRendering()
- {
- __VTPRINTENTER( "RV.StopVideoRendering" )
- // Stop only if active
- if( iDrawer->GetDsaState() )
- {
- __VTPRINT( DEBUG_MEDIA, "RV.Stopping" )
- iDrawer->BaseStopDraw();
- }
- __VTPRINTEXIT( "RV.StopVideoRendering" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::AddVideoSinkL
-// Adds a sink for video to proto.
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngRemoteVideo::AddVideoSinkL( TInt aChannelId )
- {
- __VTPRINTENTER( "RV.AddVideoSinkL" )
- if ( iDisplaySink == NULL )
- {
- User::Leave( KErrNotReady );
- }
- TInt id = iSessionCommand.AddVideoSinkL(
- aChannelId, *iDisplaySink );
- iDrawer->VideoSinkAdded();
- __VTPRINTEXITR( "RV.AddVideoSinkL id=%d", id )
- return id;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::AddAudioSinkL
-// Adds a sink for audio to proto.
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngRemoteVideo::AddAudioSinkL( TInt aChannelId )
- {
- __VTPRINTENTER( "RV.AddAudioSinkL" )
- if ( iAudioSink == NULL )
- {
- User::Leave( KErrNotReady );
- }
- TInt id = iSessionCommand.AddAudioSinkL( aChannelId, *iAudioSink );
- __VTPRINTEXITR( "RV.AddAudioSinkL id=%d", id )
- return id;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::GetDsaState
-// Returns state of Direct Screen Access.
-// -----------------------------------------------------------------------------
-//
-TBool CVtEngRemoteVideo::GetDsaState() const
- {
- return iDrawer->GetDsaState();
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::PauseVideoL
-//
-// For an incoming track this function pauses sending
-// media to the sink (output device) and stops the sink.
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngRemoteVideo::PauseVideoL()
- {
- __VTPRINTENTER( "RV.PauseVideoL" )
- if ( iDisplaySink == NULL )
- {
- User::Leave( KErrNotReady );
- }
- TInt cmdId = iSessionCommand.PauseVideoL( *iDisplaySink );
- __VTPRINTEXITR( "RV.PauseVideoL id=%d", cmdId )
- return cmdId;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::AudioSink
-// Returns audio sink.
-// -----------------------------------------------------------------------------
-//
-MVTAudioSink* CVtEngRemoteVideo::AudioSink()
- {
- return iAudioSink;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::SetUIForegroundL
-// Sets UI foreground state.
-// -----------------------------------------------------------------------------
-void CVtEngRemoteVideo::SetUIForegroundL( TBool aForeground )
- {
- __VTPRINTENTER( "RV.SetUIForegroundL" )
- if( !iDisplaySink )
- {
- User::Leave( KErrNotReady );
- }
- if( aForeground )
- {
- __VTPRINT( DEBUG_MEDIA, " RV.Resuming" )
- iDisplaySink->Resume();
- }
- else
- {
- __VTPRINT( DEBUG_MEDIA, " RV.Pausing" )
- iDisplaySink->Pause();
- }
- iDrawer->BaseSetUIForegroundL( aForeground );
- __VTPRINTEXIT( "RV.SetUIForegroundL" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::RequestLastFrame
-// Request update last remote video frame through MVtEngFrameObserver::vtSetFrame
-// -----------------------------------------------------------------------------
-void CVtEngRemoteVideo::RequestLastFrame()
- {
- __VTPRINTENTER( "RV.RequestLastFrame" )
- if(iDrawer)
- iDrawer->BaseRequestLastFrame();
-__VTPRINTEXIT( "RV.RequestLastFrame" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::~CVtEngDraw
-// Destructor. Cannot leave.
-// -----------------------------------------------------------------------------
-//
-CVtEngRemoteVideo::CVtEngDraw::~CVtEngDraw()
- {
- __VTPRINTENTER( "RVD.~" )
- Cancel();
- delete iWatcher;
- delete iDSA;
- if ( iDisplaySink )
- {
- iDisplaySink->Destroy();
- }
- __VTPRINTEXIT( "RVD.~" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::CVtEngDraw
-// C++ constructor. Cannot leave.
-// -----------------------------------------------------------------------------
-//
-CVtEngRemoteVideo::CVtEngDraw::CVtEngDraw( MDisplaySinkObserver* aObserver ) :
- CActive( KVtEngRemoteDrawPriority ), iCheckpoint( KVtEngWatcherThreshold ),
- iObserver( aObserver ), iCallback( WatcherExpired, this ),
- iDSUpdated( ETrue )
- {
- iSourceSize = TSize( KVtEngRemoteVideoDefaultWidth,
- KVtEngRemoteVideoDefaultHeight );
- CActiveScheduler::Add( this );
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::ConstructL( )
- {
- __VTPRINTENTER( "RVD.ConstructL" )
- BaseConstructL();
- // Create sink
- iDisplaySink = CreateSinkL();
- iWatcher = CPeriodic::NewL( KVtEngStoppedRenderPriority );
- __VTPRINTEXIT( "RVD.ConstructL" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::AbortNow
-// Aborts DSA when requested by Window Server.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::AbortNow(
- RDirectScreenAccess::TTerminationReasons /*aReason*/ )
- {
- __VTPRINTENTER( "RVD.AbortNow" )
- ClearFlag( EReadyForeground | EStarted );
- BaseAbortNow();
- __VTPRINTEXIT( "RVD.AbortNow" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::Restart
-// Restarts DSA.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::Restart(
- RDirectScreenAccess::TTerminationReasons /*aReason*/ )
- {
- __VTPRINTENTER( "RVD.Restart" )
- TRAPD( err,
- {
- if ( !IsFlag( EStarted ) )
- {
- if ( !iDSA->IsActive() )
- {
- iDSA->StartL();
- }
- SetFlag( EStarted );
- }
- if ( !Config().iClipRect.IsEmpty() )
- {
- __VTPRINT3( DEBUG_MEDIA, "RVD.Restart iClipRect.iTl (%d, %d)",
- Config().iClipRect.iTl.iX, Config().iClipRect.iTl.iY );
- __VTPRINT3( DEBUG_MEDIA, "RVD.Restart iClipRect.iBr (%d, %d)",
- Config().iClipRect.iBr.iX, Config().iClipRect.iBr.iY );
- iDSA->Gc()->SetClippingRect( Config().iClipRect );
- }
- BaseRestartL();
- } );
- if ( err != KErrNone )
- {
- ClearFlag( EReadyForeground );
- }
- else
- {
- SetFlag( EReadyForeground );
- }
-
- __VTPRINT2( DEBUG_MEDIA, "RVD.Restart flags %d", iFlags )
- if ( iCheckpoint == KVtEngWatcherThreshold )
- {
- __VTPRINT( DEBUG_MEDIA | DEBUG_RETURN, "RVD.Restart RFs" )
- TRAP( err, BaseRefreshL() );
- }
- __VTPRINTEXITR( "RVD.Restart %d", err )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::GetDsaState
-// Returns the state of DSA: is drawing ongoing.
-// -----------------------------------------------------------------------------
-//
-TBool CVtEngRemoteVideo::CVtEngDraw::GetDsaState() const
- {
- __VTPRINTENTER( "RVD.GetDsaState" )
- TBool active( EFalse );
- active = IsFlag( ERemoteVideoDrawing );
- __VTPRINTEXITR( "RVD.GetDsaState is active=%d", active )
- return active;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::WatcherExpired
-// Checks if frame watcher has expired, ie. no frames are received.
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngRemoteVideo::CVtEngDraw::WatcherExpired( TAny* aAny )
- {
- CVtEngRemoteVideo::CVtEngDraw* drawer =
- reinterpret_cast<CVtEngRemoteVideo::CVtEngDraw*>( aAny );
- drawer->HandleWatcherExpired();
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::HandleWatcherExpired
-// Does the checking for frame reception.
-// If not receiving, notify using client (VT UI).
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::HandleWatcherExpired()
- {
- __VTPRINTENTER( "RVD.WatcherExpired" )
- if ( IsFlag( EStarted ) )
- {
- __VTPRINT2( DEBUG_MEDIA | DEBUG_RETURN, "RVD.WatcherExpired RF:%d",
- iCheckpoint )
- if ( iCheckpoint != KVtEngWatcherThreshold &&
- IsFlag( EFirstFrameReceived ) )
- {
- __VTPRINT( DEBUG_MEDIA | DEBUG_RETURN, "RVD.WatcherExpired RF" )
- TRAP_IGNORE( BaseRefreshL() );
- }
- iCheckpoint--;
- // Not under zero though.
- if ( iCheckpoint < 0 )
- {
- iCheckpoint = 0;
- }
- }
- __VTPRINTEXIT( "RVD.WatcherExpired" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::SetFlag
-// Sets flags.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::SetFlag( TUint aFlags )
- {
- iFlags |= aFlags;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::ClearFlag
-// Clears (unsets) flags.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::ClearFlag( TUint aFlags )
- {
- iFlags &= ~aFlags;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::IsFlag
-// Tests a flag.
-// -----------------------------------------------------------------------------
-//
-TBool CVtEngRemoteVideo::CVtEngDraw::IsFlag( TUint aFlag ) const
- {
- return ( iFlags & aFlag ) != 0 ;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::VideoSinkAdded
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::VideoSinkAdded()
- {
- // By clearing this flag every time when sink is added, we assure that
- // blind icon is correctly faded in UI.
- ClearFlag( EFirstFrameReceived );
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::Activate
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::Activate()
- {
- __VTPRINTENTER( "RVD.Activate" )
- if ( !IsActive() )
- {
- __VTPRINT( DEBUG_MEDIA, "RVD.Activate setting active" )
- iStatus = KRequestPending;
- SetActive();
- }
- __VTPRINTEXIT( "RVD.Activate" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::ConfigUpdatedL
-// Set drawing configuration.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::ConfigUpdatedL()
- {
- __VTPRINTENTER( "RVD.ConfigUpdatedL" )
- ClearFlag( EFlagInitialized );
- TRAPD( err, {
- BaseVerifyConfigL();
-
- if ( IsFlag( EReadyInternal ) )
- {
- __VTPRINT( DEBUG_MEDIA, "RVD.SetC started" )
- SetFlag( EStarted );
- __VTPRINT( DEBUG_MEDIA, "RVD.SetC notify rvd start" )
- }
- BaseRefreshBitmapsL();
- } );
- if ( err != KErrNone )
- {
- __VTPRINT2( DEBUG_MEDIA | DEBUG_RETURN, "RVD.SetC FAILED %d", err )
- CVtEngEventManager::NotifyEvent( KVtEngMediaInitFailure );
- }
- User::LeaveIfError( err );
- SetFlag( EFlagInitialized );
- __VTPRINTEXIT( "RVD.ConfigUpdatedL" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::DisplaySink
-// Returns used display sink.
-// -----------------------------------------------------------------------------
-//
-MDisplaySink* CVtEngRemoteVideo::CVtEngDraw::DisplaySink()
- {
- return iDisplaySink;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::DoCancel()
- {
- __VTPRINTENTER( "RVD.DoCancel" )
- BaseDoCancel();
- iDisplaySink->Release();
- ClearFlag( EStarted | EFrameWatcherExpired );
- __VTPRINTEXIT( "RVD.DoCancel" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::RunError
-// -----------------------------------------------------------------------------
-//
-#ifdef VTDEBUG
-TInt CVtEngRemoteVideo::CVtEngDraw::RunError( TInt aError )
-#else
-TInt CVtEngRemoteVideo::CVtEngDraw::RunError( TInt /* aError */ )
-#endif // VTDEBUG
- {
- __VTPRINTENTER( "RVD.RunError" )
- ClearFlag( EStarted );
- BaseStopDraw();
- CVtEngEventManager::NotifyEvent( KVtEngRemoteVideoStopped );
- __VTPRINTEXITR( "RVD.RunError %d", aError )
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::CVtEngDraw::CreateAndStartDSAL
-// Create DSA instance.
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::CVtEngDraw::CreateAndStartDSAL()
- {
- __VTPRINTENTER( "RVD.CreateAndStartDSAL" )
- delete iDSA;
- iDSA = NULL;
- iDSA = CDirectScreenAccess::NewL(
- *Config().iWsSession,
- *Config().iWsSreenDevice,
- *Config().iWindow,
- *this );
- iDSA->StartL();
- if ( !Config().iClipRect.IsEmpty() )
- {
- __VTPRINT( DEBUG_MEDIA, "RVD.CreateAndStartDSAL setting cliprect" )
- iDSA->Gc()->SetClippingRect( Config().iClipRect );
- }
- __VTPRINTEXIT( "RVD.CreateAndStartDSAL" )
- }
-
-// -----------------------------------------------------------------------------
-// CVtEngRemoteVideo::VideoFrameSizeChanged
-// Callback from DisplaySink to inform the size change
-// -----------------------------------------------------------------------------
-//
-void CVtEngRemoteVideo::
- VideoFrameSizeChangedL( const TSize& /* aFrom */, const TSize& aTo )
- {
- __VTPRINTENTER( "RVD.VideoFrameSizeChangedL" )
- __VTPRINT( DEBUG_MEDIA , " ======= RV.RVD.VideoFrameSizeChangedL ========" )
- __VTPRINT2( DEBUG_MEDIA , " aTo.iWidth: %d", aTo.iWidth)
- __VTPRINT2( DEBUG_MEDIA , " aTo.iHeight: %d", aTo.iHeight )
- __VTPRINT( DEBUG_MEDIA , " ======= RV.RVD.VideoFrameSizeChangedL ========" )
-
- // Notification of changed layout.
- if ( aTo.iHeight == KVtEngResolutionQCIFHeight &&
- aTo.iWidth == KVtEngResolutionQCIFWidth )
- {
- // Store the new size.
- iDrawer->iSourceSize = aTo;
- CVtEngEventManager::NotifyEvent( KVtEngResolutionToQCIF );
- }
- else if ( aTo.iHeight == KVtEngResolutionSQCIFHeight &&
- aTo.iWidth == KVtEngResolutionSQCIFWidth )
- {
- // Store the new size.
- iDrawer->iSourceSize = aTo;
- CVtEngEventManager::NotifyEvent( KVtEngResolutionToSQCIF );
- }
- else
- {
- // Unlisted resolution.
- __VTPRINTEXITR( "RVD.VideoFrameSizeChangedL %d", 0 )
- return;
- }
-
- iDrawer->BaseVideoFrameSizeChangedL( aTo );
-
- __VTPRINTEXITR( "RVD.VideoFrameSizeChangedL %d", 1 )
- }
-
-// VtEngDrawFactory
-
-// -----------------------------------------------------------------------------
-// VtEngDrawFactory::CreateDrawerL
-// -----------------------------------------------------------------------------
-//
-MVtEngDraw* VtEngDrawFactory::CreateDrawerL( MDisplaySinkObserver* aObserver, TBool aSupportNGA )
- {
- __VTPRINTENTER( "VtEngDrawFactory.CreateDrawerL" )
- MVtEngDraw* drawer = NULL;
- if(aSupportNGA)
- {
- drawer = CVtEngDrawNGA::NewL( aObserver );
- }
- else
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdDisplayPost ) )
- {
- drawer = CVtEngDrawDP::NewL( aObserver );
- }
- else
- {
- drawer = CVtEngDrawDSA::NewL( aObserver );
- }
- }
- __VTPRINTEXIT( "VtEngDrawFactory.CreateDrawerL" )
- return drawer;
- }
-
-// End of File