diff -r 1bce908db942 -r 513a8b745b2f multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediamanager.cpp --- 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 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