multimediacommsengine/tsrc/MMCTestDriver/MCETester/src/CSessionHelper.cpp
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/tsrc/MMCTestDriver/MCETester/src/CSessionHelper.cpp	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,194 @@
+/*
+* 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:    Implementation
+*
+*/
+
+
+
+#include "CSessionHelper.h"
+
+#include "MceMediaStream.h"
+#include "MceAudioStream.h"
+#include "MceVideoStream.h"
+#include "MCERtpSource.h"
+#include "MceCodec.h"
+#include "mcefilesource.h"
+#include "mcefilesink.h"
+#include <MCEManager.h>
+
+#include "mcedefs.h"
+
+#include <mcefilesource.h>
+
+const TUint KAudioPriorityPocAudioUplink        = 100;//95;
+const TUint KAudioPriorityPocAudioDownlink      = 100;//95;
+const TUint KAudioPrefPocAudioUplink            = 0x05230001;//0x05130001;
+const TUint KAudioPrefPocAudioDownlink          = 0x05210001; //0x05120001; 
+
+const TUint KDtmfAudioPriority					= 45;
+const TUint KDtmfAudioPref						= 0x00150001;
+
+void CSessionHelper::SetCodecPrioritiesL(CMceCodec& aCodec, priorities aPri)
+	{
+	if (aPri == downlink) 
+		{
+		aCodec.SetMMFPriorityL( KAudioPriorityPocAudioDownlink );
+	    aCodec.SetMMFPriorityPreferenceL( KAudioPrefPocAudioDownlink ); 
+		}
+	else if (aPri == uplink) 
+		{
+		aCodec.SetMMFPriorityL( KAudioPriorityPocAudioUplink );
+	    aCodec.SetMMFPriorityPreferenceL( KAudioPrefPocAudioUplink );
+		}
+	else if (aPri == dtmf)
+		{
+		//TODO: set dtmf priorities
+		aCodec.SetMMFPriorityL( KDtmfAudioPriority );
+	    aCodec.SetMMFPriorityPreferenceL( KDtmfAudioPref );	
+		}
+	else
+		User::LeaveIfError(KErrUnknown);
+	}
+
+void
+CSessionHelper::SetCodecPriPrefL(CMceCodec& aCodec, TUint aPri, TUint aPref)
+	{
+	aCodec.SetMMFPriorityL( aPri );
+	aCodec.SetMMFPriorityPreferenceL( aPref );
+	}
+	
+/*
+The idea here is 
+to set the same payload type as the main codec for the keep alive timer 
+later on, we can then check with TTCN is MCE using the correct codec.
+*/
+void CSessionHelper::SetKeepaliveL(CMceCodec& aCodec, TInt aKeepaliveTimeSec)
+	{
+	aCodec.SetKeepAliveTimerL( aKeepaliveTimeSec );
+	if (!aCodec.SdpName().Compare(KMceSDPNameAMR))
+		{
+		aCodec.SetKeepAlivePayloadTypeL( 96 );
+		}
+	else if(!aCodec.SdpName().Compare(KMceSDPNameG729))
+		{
+		aCodec.SetKeepAlivePayloadTypeL( 18 );
+		}
+	else if(!aCodec.SdpName().Compare(KMceSDPNameiLBC))
+		{
+		aCodec.SetKeepAlivePayloadTypeL( 97 );
+		}
+	else if(!aCodec.SdpName().Compare(KMceSDPNameAMRWB))
+		{
+		aCodec.SetKeepAlivePayloadTypeL( 100 );
+		}
+	else
+		{
+		// Keep pc-lint happy
+		}
+	}
+
+void CSessionHelper::SetRtpInactivityTimerL(CMceMediaStream& aStream, TInt aInactivityTimer)
+	{
+	
+	//for audio
+	 if ( aStream.Type() == KMceAudio )
+		{	
+		CMceAudioStream* audioStream = 
+								static_cast<CMceAudioStream*>(&aStream);
+								
+		if ( audioStream->Source()->Type() == KMceRTPSource )
+			{
+			//set inactivity timer
+			CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>(audioStream->Source());
+			rtpSource->EnableInactivityTimerL(aInactivityTimer * 1000);
+			}
+		const CMceAudioStream* boundAudioStream = NULL;
+		if (audioStream->BoundStream()) 
+			{
+			boundAudioStream = static_cast<CMceAudioStream*>(&audioStream->BoundStreamL());
+			if ( boundAudioStream->Source()->Type() == KMceRTPSource )
+				{
+				//set
+				CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>(boundAudioStream->Source());
+				rtpSource->EnableInactivityTimerL(aInactivityTimer * 1000);
+				}
+			}
+	
+		}
+	 
+	 //for video
+	 if ( aStream.Type() == KMceVideo )
+		{	
+		CMceVideoStream* videoStream = 
+								static_cast<CMceVideoStream*>(&aStream);
+								
+		if ( videoStream->Source()->Type() == KMceRTPSource )
+			{
+			//set inactivity timer
+			CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>(videoStream->Source());
+			rtpSource->EnableInactivityTimerL(aInactivityTimer * 1000);
+			}
+		const CMceVideoStream* boundVideoStream = NULL;
+		if (videoStream->BoundStream()) 
+			{
+			boundVideoStream = static_cast<CMceVideoStream*>(&videoStream->BoundStreamL());
+			if ( boundVideoStream->Source()->Type() == KMceRTPSource )
+				{
+				//set
+				CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>(boundVideoStream->Source());
+				rtpSource->EnableInactivityTimerL(aInactivityTimer * 1000);
+				}
+			}
+		}
+		
+	}
+
+// ----------------------------------------------------------------------------
+// CSessionHelper::SetMediaFileSourceL
+// ----------------------------------------------------------------------------
+void CSessionHelper::SetMediaFileSourceL(CMceManager& aManager, CMceMediaStream& aStream, TPtrC8 aFilename )
+	{
+	TFileName filename;
+	filename.Copy(aFilename);
+	CMceFileSource* fileSource = CMceFileSource::NewL( aManager, filename );
+	if(!fileSource)
+		User::Leave( KErrNotFound );
+	CleanupStack::PushL(fileSource);
+
+   	fileSource->SetPositionL( TTimeIntervalMicroSeconds( 1 ) );		
+	fileSource->EnableL();
+	aStream.SetSourceL( fileSource );
+	aStream.SynchronizeWithFileL(*fileSource);
+
+	CleanupStack::Pop(fileSource);
+	}
+
+// ----------------------------------------------------------------------------
+// CSessionHelper::SetMediaFileSinkL
+// ----------------------------------------------------------------------------
+void CSessionHelper::SetMediaFileSinkL(CMceMediaStream& aStream, TPtrC8 aFilename )
+	{
+	TFileName filename;
+	filename.Copy(aFilename);
+	CMceFileSink* fileSink = CMceFileSink::NewL( filename );
+	if(!fileSink)
+		User::Leave( KErrNotFound );
+	
+	CleanupStack::PushL(fileSink);
+//	fileSink->EnableL();
+	aStream.AddSinkL( fileSink );
+	
+	CleanupStack::Pop(fileSink);
+	}