diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/MMCTestDriver/MCETester/src/CSessionHelper.cpp --- /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 + +#include "mcedefs.h" + +#include + +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(&aStream); + + if ( audioStream->Source()->Type() == KMceRTPSource ) + { + //set inactivity timer + CMceRtpSource* rtpSource = static_cast(audioStream->Source()); + rtpSource->EnableInactivityTimerL(aInactivityTimer * 1000); + } + const CMceAudioStream* boundAudioStream = NULL; + if (audioStream->BoundStream()) + { + boundAudioStream = static_cast(&audioStream->BoundStreamL()); + if ( boundAudioStream->Source()->Type() == KMceRTPSource ) + { + //set + CMceRtpSource* rtpSource = static_cast(boundAudioStream->Source()); + rtpSource->EnableInactivityTimerL(aInactivityTimer * 1000); + } + } + + } + + //for video + if ( aStream.Type() == KMceVideo ) + { + CMceVideoStream* videoStream = + static_cast(&aStream); + + if ( videoStream->Source()->Type() == KMceRTPSource ) + { + //set inactivity timer + CMceRtpSource* rtpSource = static_cast(videoStream->Source()); + rtpSource->EnableInactivityTimerL(aInactivityTimer * 1000); + } + const CMceVideoStream* boundVideoStream = NULL; + if (videoStream->BoundStream()) + { + boundVideoStream = static_cast(&videoStream->BoundStreamL()); + if ( boundVideoStream->Source()->Type() == KMceRTPSource ) + { + //set + CMceRtpSource* rtpSource = static_cast(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); + }