multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediamanager.cpp
branchRCL_3
changeset 3 513a8b745b2f
parent 0 1bce908db942
child 18 91f50911ea81
child 49 64c62431ac08
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediamanager.cpp	Tue Feb 02 01:04:58 2010 +0200
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediamanager.cpp	Fri Feb 19 23:12:20 2010 +0200
@@ -4780,5 +4780,80 @@
         
     MCEMM_DEBUG("CMceMediaManager::DoConfigKeyUpdateL(), Exit ");
     }
+// ---------------------------------------------------------
+// CMceMediaManager::UpDateStreamStateL
+// ---------------------------------------------------------    
+//
+void CMceMediaManager::UpDateStreamStateL(CMceComSession& currentSession,
+		                    CMceComSession& forkSession )
+	{
+	MCEMM_DEBUG("CMceMediaManager::UpDateStreamState, Entry ");
+	CMceSrvStream* stream = NULL;
+	RPointerArray<CMceSrvStream> currentStreams;
+	TMceSrvStreamIterator sendStreams( currentSession.MccStreams(), 
+			                            TMceSrvStreamIterator::ESend );
+	while( sendStreams.Next( stream, CMceSrvStream::EStopped, 
+		                           TMceSrvStreamIterator::ExactReverseMatch ) )	                                     
+		{
+		if ( stream->State() != CMceSrvStream::EInactive &&
+				 stream->Codec().iIsNegotiated )
+			{ 
+			currentStreams.Append( stream );
+			}
+		}
+	TMceSrvStreamIterator forkSendStreams( forkSession.MccStreams(), 
+			                                 TMceSrvStreamIterator::ESend );
+	while( forkSendStreams.Next( stream, CMceSrvStream::EStopped, 
+	                             TMceSrvStreamIterator::ExactReverseMatch ) )                                     
+		{
+		if ( stream->State() != CMceSrvStream::EInactive &&
+				stream->Codec().iIsNegotiated )
+			{ 
+			CMccCodecInformation* codec = 
+			                      iMccInterface->CodecL( stream->SessionId(),
+	                    		                         stream->LinkId(),
+	                    		                         stream->Id() );
+			CleanupStack::PushL( codec );
+			stream->Codec().MccPopulateL( *codec, *stream, EMceRoleOfferer );
+			User::LeaveIfError( iMccInterface->SetCodec( stream->SessionId(),
+	                    		  stream->LinkId(), stream->Id(), *codec ) );
+			CleanupStack::PopAndDestroy( codec );
+			TBool IsMatch = EFalse;
+			for( TInt count = 0; count < currentStreams.Count() && !IsMatch; count++ )
+				{
+				if( currentStreams[count]->Codec().iSdpName ==  
+				                           stream->Codec().iSdpName )
+					{
+					IsMatch = ETrue;
+					}
+				}
+			if( !IsMatch )
+				{
+				SetPendingState( *stream, 0, CMceSrvStream::EPaused );
+				} 	
+			}
+		}
+	MCEMM_DEBUG("CMceMediaManager::UpDateStreamState, Exit ");
+	}
+// ---------------------------------------------------------
+// CMceMediaManager::ForceEnableSinkState
+// ---------------------------------------------------------    
+//
+void CMceMediaManager::ForceEnableSinkState(CMceComSession& aSession )
+	{
+	CMceSrvStream* stream = NULL;
+	TBool IsSet = EFalse;
+	TMceSrvStreamIterator sendStreams( aSession.MccStreams(), TMceSrvStreamIterator::ESend );
+	while( !IsSet && sendStreams.Next( stream, CMceSrvStream::EStopped, 
+			                             TMceSrvStreamIterator::ExactReverseMatch ) )	                                     
+		{
+		if ( stream->State() != CMceSrvStream::EInactive &&
+			             stream->Codec().iIsNegotiated )
+			{ 
+			SetPendingState( *stream, stream->Sink().Id(), CMceSrvStream::EPaused );
+			IsSet = ETrue;
+			}
+		}
+	}
         
 // End of File