--- a/multimediacommscontroller/mmccsubcontroller/src/mccsymulstream.cpp Mon Aug 23 17:50:26 2010 +0300
+++ b/multimediacommscontroller/mmccsubcontroller/src/mccsymulstream.cpp Mon Sep 06 17:32:13 2010 +0530
@@ -26,6 +26,7 @@
#include "mcculdatapath.h"
#include "mcccodecconfigurator.h"
#include "mccrtpmanager.h"
+#include "mccmsrpmanager.h"
#include "mccrtpdatasink.h"
#include "mmccinterface.h"
#include "mccsubcontrollerlogs.h"
@@ -81,6 +82,32 @@
{
iRtpMediaClock = &aClock;
}
+
+
+// -----------------------------------------------------------------------------
+// CMccSymUlStream::CMccSymUlStream
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CMccSymUlStream::CMccSymUlStream(
+ TUint32 aMccStreamId,
+ MAsyncEventHandler* aEventhandler,
+ MMccResources* aMccResources,
+ CMccMsrpManager* aManager,
+ TFourCC aFourCC,
+ TInt aStreamType,
+ CMccRtpMediaClock& aClock ) :
+ CMccSymStreamBase( aMccStreamId,
+ aEventhandler,
+ aMccResources,
+ aManager,
+ aStreamType ),
+ iFormatEncode( NULL ),
+ iFourCC( aFourCC )
+ {
+ iRtpMediaClock = &aClock;
+ }
// -----------------------------------------------------------------------------
// CMccSymUlStream::NewL
@@ -109,6 +136,34 @@
return s;
}
+
+// -----------------------------------------------------------------------------
+// CMccSymUlStream::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CMccSymUlStream* CMccSymUlStream::NewLC(
+ TUint32 aMccStreamId,
+ MAsyncEventHandler* aEventhandler,
+ MMccResources* aMccResources,
+ CMccMsrpManager* aManager,
+ TFourCC aFourCC,
+ TInt aStreamType,
+ CMccRtpMediaClock& aClock )
+ {
+ CMccSymUlStream* s =
+ new ( ELeave ) CMccSymUlStream( aMccStreamId,
+ aEventhandler,
+ aMccResources,
+ aManager,
+ aFourCC,
+ aStreamType,
+ aClock );
+ CleanupStack::PushL( s );
+ s->ConstructL();
+ return s;
+ }
+
// -----------------------------------------------------------------------------
// CMccSymUlStream::ConstructL
// Symbian 2nd phase constructor can leave.
@@ -388,10 +443,18 @@
TBool controlNetworkResources = SetStateL( EStatePrepared, aEndpointId );
- if ( controlNetworkResources && !LocalStream() )
+ if(this->iType == KMccMessageUplinkStream)
+ {
+ iMsrpmanager->CreateTransmitStreamL (*iDatasink, iCodecInfo);
+ }
+ else if ( controlNetworkResources && !LocalStream())
{
iRtpmanager->CreateTransmitStreamL( *iDatasink, iCodecInfo );
}
+ else
+ {
+ //NOP
+ }
LoadCodecL( iCodecInfo, KNullDesC8 );
@@ -415,7 +478,7 @@
TBool controlNetworkResources = SetStateL( EStateStreaming, aEndpointId );
- if ( !LocalStream() )
+ if ( !LocalStream() && (this->iType !=KMccMessageUplinkStream))
{
if ( controlNetworkResources )
{
@@ -445,11 +508,13 @@
TBool aEnableRtcp )
{
__SUBCONTROLLER( "CMccSymUlStream::PauseL" )
-
+
SetStateL( EStatePaused, aEndpointId );
-
- if ( !LocalStream() )
- {
+ if(this->iType != KMccMessageUplinkStream && !LocalStream())
+ {
+ __ASSERT_ALWAYS( iRtpmanager, User::Leave( KErrArgument ) );
+ __ASSERT_ALWAYS( iDatapath, User::Leave( KErrArgument ) );
+
User::LeaveIfError( iRtpmanager->SetRTCPSendReceive( aEnableRtcp ) );
}
@@ -469,12 +534,16 @@
__SUBCONTROLLER( "CMccSymUlStream::ResumeL" )
SetStateL( EStateStreaming, aEndpointId );
-
- if ( !LocalStream() )
+ if (this->iType != KMccMessageUplinkStream && !LocalStream() )
{
+ __ASSERT_ALWAYS( iRtpmanager, User::Leave( KErrArgument ) );
+ __ASSERT_ALWAYS( iDatapath, User::Leave( KErrArgument ) );
User::LeaveIfError( iRtpmanager->SetRTCPSendReceive( aEnableRtcp ) );
}
-
+ else
+ {
+ //NOP
+ }
DoResumeL();
InformStreamStateChange( KMccStreamResumed, aEndpointId );