--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vtprotocolplugins/VideoSource/src/cmultiframedataao.cpp Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,177 @@
+/*
+* Copyright (c) 2008 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: Video Source subsystem.
+*
+*/
+
+
+// INCLUDE FILES
+#include "cmultiframedataao.h"
+#include "mmultiframeprovider.h"
+#include "cmultiframeprovider.h"
+#include "VSPanic.h"
+
+// MACROS
+
+#ifdef _DEBUG
+# define __IF_DEBUG(t) {RDebug::t;}
+#else
+# define __IF_DEBUG(t)
+#endif
+// ============================ CMultiframeDataAO ===============================
+
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::CMultiframeDataAO( CMultiframeProvider* aRequester )
+// -----------------------------------------------------------------------------
+//
+CMultiframeDataAO::CMultiframeDataAO( CMultiframeProvider* aRequester )
+: CTimer( EPriorityHigh ), iRequester( aRequester )
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::CMultiframeDataAO() >>"), RThread().Id().operator TUint()));
+ RThread me;
+ iThreadId = me.Id();
+ CActiveScheduler::Add( this );
+ TRAP_IGNORE(CTimer::ConstructL());
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::CMultiframeDataAO() <<"), RThread().Id().operator TUint()));
+ }
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::SetObserver( MMultiframeprovider* aObserever )
+// -----------------------------------------------------------------------------
+//
+void CMultiframeDataAO::SetObserver( MMultiframeprovider* aObserver )
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::SetObserver() >>"), RThread().Id().operator TUint()));
+ iObserver = aObserver;
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::SetObserver() <<"), RThread().Id().operator TUint()));
+ }
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::~CMultiframeDataAO()
+// -----------------------------------------------------------------------------
+//
+CMultiframeDataAO::~CMultiframeDataAO()
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::~CMultiframeDataAO() >>"), RThread().Id().operator TUint()));
+ Cancel();
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::~CMultiframeDataAO() <<"), RThread().Id().operator TUint()));
+ }
+
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::Activate( )
+// -----------------------------------------------------------------------------
+//
+void CMultiframeDataAO::Activate( TTimeIntervalMicroSeconds aUpdateTime, TBool aInit, TBool aVFUpdate )
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::Activate() >>"), RThread().Id().operator TUint()));
+
+ TTimeIntervalMicroSeconds32 time = aUpdateTime.Int64();
+ iInit = aInit;
+ iVFUpdate = aVFUpdate;
+ if ( !IsActive() )
+ {
+ CTimer::After( time );
+ }
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::Activate() <<"), RThread().Id().operator TUint()));
+ }
+
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::LocalBuffer( )
+// -----------------------------------------------------------------------------
+//
+void CMultiframeDataAO::LocalBuffer( CVtImageBitmap* aLocalBuffer )
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::LocalBuffer() >>"), RThread().Id().operator TUint()));
+ iLocalBuffer.iBitmap = aLocalBuffer;
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::LocalBuffer() <<"), RThread().Id().operator TUint()));
+ }
+
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::RemoteBuffer( )
+// -----------------------------------------------------------------------------
+//
+void CMultiframeDataAO::RemoteBuffer( CVtImageBitmap* aRemoteBuffer )
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::RemoteBuffer() >>"), RThread().Id().operator TUint()));
+ iRemoteBuffer.iBitmap = aRemoteBuffer;
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::RemoteBuffer() <<"), RThread().Id().operator TUint()));
+ }
+
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::RunL()
+// -----------------------------------------------------------------------------
+//
+void CMultiframeDataAO::RunL()
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::RunL() >>"), RThread().Id().operator TUint()));
+
+ //stop loop ao
+ if (iRequireStopping)
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::RunL() cancel by flag"), RThread().Id().operator TUint()));
+ iRequireStopping = EFalse;
+ return;
+ }
+
+ if ( !iVFUpdate )
+ {
+ iObserver->RefreshYUVData( iRemoteBuffer );
+ }
+ iObserver->RefreshViewFinder( iLocalBuffer );
+ iRequester->UseSecondVfBuffer();
+ if ( iInit )
+ {
+ iObserver->InitializeReady();
+ }
+ if ( !iVFUpdate )
+ {
+ iRequester->AddBitmapToFreeQueue();
+ }
+ if ( !iInit && !iVFUpdate )
+ {
+ iRequester->NextFrame();
+ }
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::RunL() <<"), RThread().Id().operator TUint()));
+ }
+
+// -----------------------------------------------------------------------------
+// CMultiframeDataAO::CancelTimeLoop()
+// -----------------------------------------------------------------------------
+//
+void CMultiframeDataAO::CancelTimeLoop()
+ {
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::CancelTimeLoop >>"), RThread().Id().operator TUint()));
+ if ( IsActive() )
+ {
+ if ( iStatus == KRequestPending )
+ {
+ RThread me;
+ if ( me.Id() == iThreadId )
+ {
+ Cancel();
+ iRequireStopping = EFalse;
+ }
+ else
+ {
+ iRequireStopping = ETrue;
+ }
+ }
+ else
+ {
+ iRequireStopping = ETrue;
+ }
+ }
+ __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeDataAO::CancelTimeLoop <<"), RThread().Id().operator TUint()));
+ }
+
+
+// End of File