mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcevideostream.cpp
branchRCL_3
changeset 22 73a1feb507fb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcevideostream.cpp	Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,231 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#include "mcevideostream.h"
+#include "mcevideocodec.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+#include "mcefilesource.h"
+#include "mcemediasink.h"
+#include "mcecamerasource.h"
+//#include "mcertpsource.h"
+#include "mcertpsink.h"
+#include "mcedisplaysink.h"
+#include "mceh263codec.h"
+
+#define _FLAT_DATA static_cast<CMceComVideoStream*>( iFlatData )
+
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Factory method
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoStream* CMceVideoStream::NewL()
+    {
+    CMceVideoStream* self = CMceVideoStream::NewLC();
+	CleanupStack::Pop( self );
+	return self; 
+    }
+
+// -----------------------------------------------------------------------------
+// Factory method
+// Leaves instance on CleanupStack.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoStream* CMceVideoStream::NewLC()
+    {
+    CMceVideoStream* self = new (ELeave) CMceVideoStream();
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoStream::~CMceVideoStream()
+    {
+	iCodecs.ResetAndDestroy();
+	iSupportedVideoCodecs.ResetAndDestroy();
+    }
+
+
+// -----------------------------------------------------------------------------
+// Returns codec.
+// Returns the codecs available to the session.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<CMceVideoCodec>& CMceVideoStream::Codecs()
+    {
+    return iCodecs;
+    }
+
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceVideoStream::AddCodecL( CMceVideoCodec* aCodec )
+    {
+    __ASSERT_ALWAYS(aCodec, User::Leave(KErrArgument));
+    iCodecs.AppendL(aCodec);
+    }
+
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceVideoStream::RemoveCodecL( CMceVideoCodec& aCodec )
+    {
+    for(int i = 0; i < iCodecs.Count(); i++ )
+        {
+        if( iCodecs[i] == &aCodec )
+            {
+            delete iCodecs[i];
+            iCodecs.Remove( i );
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// NOT IMPLEMENTED YET
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceVideoStream::ReplaceCodecsL( RPointerArray<CMceVideoCodec>* /*aCodecs*/ )
+    {
+    User::Leave( KErrNotSupported );
+    }
+
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<const CMceVideoCodec>& 
+        CMceVideoStream::SupportedVideoCodecs() const
+    {
+	return iSupportedVideoCodecs;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceVideoStream::InitializeL( CMceSession& aParent )
+    {
+	CMceMediaStream::InitializeL( aParent );
+
+    InitializeL( &aParent.Manager() );
+            
+    for( TInt i = 0; i < iCodecs.Count(); i++ )
+        {
+        iCodecs[i]->InitializeL( *this );
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceVideoStream::InitializeL( CMceManager* aManager )
+    {
+    CMceMediaStream::InitializeL( aManager );
+    if ( aManager && iCodecs.Count() == 0 )
+        {
+        const RPointerArray<const CMceVideoCodec> supportedCodecs = 
+                                      aManager->SupportedVideoCodecs();
+
+        TBool fileCodecAdded( EFalse );
+        for( TInt i = 0; i < supportedCodecs.Count() && !fileCodecAdded; i++ )
+            {
+            if ( iSource && iSource->Type() == KMceFileSource )
+                {
+                // Fake codec using file name     
+                CMceFileSource* fileSource =
+                                        static_cast<CMceFileSource*>(iSource);
+                TBuf8<256*2> fileName;
+                fileName.Copy( fileSource->iFileName );
+                const TDesC8& currentCodecName( supportedCodecs[i]->SdpName() ); 
+    
+                if ( ( fileName.FindF( KMceSDPNameH264() ) >= 0 &&
+                       currentCodecName.FindF( KMceSDPNameH264() ) >= 0 ||
+                     ( fileName.FindF( KMceSDPNameH263() ) >= 0 &&
+                       currentCodecName.FindF( KMceSDPNameH263() ) >= 0 ) ) )
+                    {
+                    CMceVideoCodec* codec = supportedCodecs[i]->CloneL();
+                    CleanupStack::PushL( codec );
+                    iCodecs.AppendL( codec );
+                    CleanupStack::Pop( codec );
+                    iState = EInitialized;
+                    fileCodecAdded = ETrue;
+                    }
+                else
+                    {
+                    iState = ETranscodingRequired;
+                    }
+                
+                }
+            else
+                {
+                CMceVideoCodec* codec = supportedCodecs[i]->CloneL();
+                CleanupStack::PushL( codec );
+                iCodecs.AppendL( codec );
+                CleanupStack::Pop( codec );
+                }
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoStream::IsAllowedCombination
+// -----------------------------------------------------------------------------
+//    
+TBool CMceVideoStream::IsAllowedCombination()
+    {
+    return ETrue;
+    }
+
+
+// -----------------------------------------------------------------------------
+// Default C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream::CMceVideoStream()
+    :CMceMediaStream()
+    {
+    iType = KMceVideo;
+    }
+
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//    
+void CMceVideoStream::ConstructL()
+    {
+    }
+