| Index: talk/app/webrtc/mediastreamsignaling.cc
|
| diff --git a/talk/app/webrtc/mediastreamsignaling.cc b/talk/app/webrtc/mediastreamsignaling.cc
|
| index 1f5f14fd7b55a3e6641349058f03ed1c38bfdb4a..e18180baabd8b654cd0e557cfc638b79888695f6 100644
|
| --- a/talk/app/webrtc/mediastreamsignaling.cc
|
| +++ b/talk/app/webrtc/mediastreamsignaling.cc
|
| @@ -359,7 +359,8 @@ bool MediaStreamSignaling::AddLocalStream(MediaStreamInterface* local_stream) {
|
| (*it)->id());
|
| if (track_info) {
|
| OnLocalTrackSeen(track_info->stream_label, track_info->track_id,
|
| - track_info->ssrc, cricket::MEDIA_TYPE_AUDIO);
|
| + track_info->ssrc, cricket::MEDIA_TYPE_AUDIO,
|
| + track_info->mid);
|
| }
|
| }
|
|
|
| @@ -371,7 +372,8 @@ bool MediaStreamSignaling::AddLocalStream(MediaStreamInterface* local_stream) {
|
| (*it)->id());
|
| if (track_info) {
|
| OnLocalTrackSeen(track_info->stream_label, track_info->track_id,
|
| - track_info->ssrc, cricket::MEDIA_TYPE_VIDEO);
|
| + track_info->ssrc, cricket::MEDIA_TYPE_VIDEO,
|
| + track_info->mid);
|
| }
|
| }
|
| return true;
|
| @@ -471,10 +473,14 @@ void MediaStreamSignaling::OnRemoteDescriptionChanged(
|
| const cricket::AudioContentDescription* desc =
|
| static_cast<const cricket::AudioContentDescription*>(
|
| audio_content->description);
|
| - UpdateRemoteStreamsList(desc->streams(), desc->type(), new_streams);
|
| + UpdateRemoteStreamsList(desc->streams(), desc->type(), audio_content->name,
|
| + new_streams);
|
| remote_info_.default_audio_track_needed =
|
| MediaContentDirectionHasSend(desc->direction()) &&
|
| desc->streams().empty();
|
| + if (remote_info_.default_audio_track_needed) {
|
| + remote_info_.default_audio_mid = audio_content->name;
|
| + }
|
| }
|
|
|
| // Find all video rtp streams and create corresponding remote VideoTracks
|
| @@ -484,10 +490,14 @@ void MediaStreamSignaling::OnRemoteDescriptionChanged(
|
| const cricket::VideoContentDescription* desc =
|
| static_cast<const cricket::VideoContentDescription*>(
|
| video_content->description);
|
| - UpdateRemoteStreamsList(desc->streams(), desc->type(), new_streams);
|
| + UpdateRemoteStreamsList(desc->streams(), desc->type(), video_content->name,
|
| + new_streams);
|
| remote_info_.default_video_track_needed =
|
| MediaContentDirectionHasSend(desc->direction()) &&
|
| desc->streams().empty();
|
| + if (remote_info_.default_video_track_needed) {
|
| + remote_info_.default_video_mid = video_content->name;
|
| + }
|
| }
|
|
|
| // Update the DataChannels with the information from the remote peer.
|
| @@ -530,7 +540,8 @@ void MediaStreamSignaling::OnLocalDescriptionChanged(
|
| const cricket::AudioContentDescription* audio_desc =
|
| static_cast<const cricket::AudioContentDescription*>(
|
| audio_content->description);
|
| - UpdateLocalTracks(audio_desc->streams(), audio_desc->type());
|
| + UpdateLocalTracks(audio_desc->streams(), audio_desc->type(),
|
| + audio_content->name);
|
| }
|
|
|
| const cricket::ContentInfo* video_content =
|
| @@ -542,7 +553,8 @@ void MediaStreamSignaling::OnLocalDescriptionChanged(
|
| const cricket::VideoContentDescription* video_desc =
|
| static_cast<const cricket::VideoContentDescription*>(
|
| video_content->description);
|
| - UpdateLocalTracks(video_desc->streams(), video_desc->type());
|
| + UpdateLocalTracks(video_desc->streams(), video_desc->type(),
|
| + video_content->name);
|
| }
|
|
|
| const cricket::ContentInfo* data_content =
|
| @@ -587,6 +599,7 @@ void MediaStreamSignaling::OnDataChannelClose() {
|
| void MediaStreamSignaling::UpdateRemoteStreamsList(
|
| const cricket::StreamParamsVec& streams,
|
| cricket::MediaType media_type,
|
| + const std::string& mid,
|
| StreamCollection* new_streams) {
|
| TrackInfos* current_tracks = GetRemoteTracks(media_type);
|
|
|
| @@ -626,8 +639,9 @@ void MediaStreamSignaling::UpdateRemoteStreamsList(
|
| const TrackInfo* track_info = FindTrackInfo(*current_tracks, stream_label,
|
| track_id);
|
| if (!track_info) {
|
| - current_tracks->push_back(TrackInfo(stream_label, track_id, ssrc));
|
| - OnRemoteTrackSeen(stream_label, track_id, it->first_ssrc(), media_type);
|
| + current_tracks->push_back(TrackInfo(stream_label, track_id, ssrc, mid));
|
| + OnRemoteTrackSeen(stream_label, track_id, it->first_ssrc(), media_type,
|
| + mid);
|
| }
|
| }
|
| }
|
| @@ -635,17 +649,18 @@ void MediaStreamSignaling::UpdateRemoteStreamsList(
|
| void MediaStreamSignaling::OnRemoteTrackSeen(const std::string& stream_label,
|
| const std::string& track_id,
|
| uint32 ssrc,
|
| - cricket::MediaType media_type) {
|
| + cricket::MediaType media_type,
|
| + const std::string& mid) {
|
| MediaStreamInterface* stream = remote_streams_->find(stream_label);
|
|
|
| if (media_type == cricket::MEDIA_TYPE_AUDIO) {
|
| AudioTrackInterface* audio_track =
|
| remote_stream_factory_->AddAudioTrack(stream, track_id);
|
| - stream_observer_->OnAddRemoteAudioTrack(stream, audio_track, ssrc);
|
| + stream_observer_->OnAddRemoteAudioTrack(stream, audio_track, ssrc, mid);
|
| } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
|
| VideoTrackInterface* video_track =
|
| remote_stream_factory_->AddVideoTrack(stream, track_id);
|
| - stream_observer_->OnAddRemoteVideoTrack(stream, video_track, ssrc);
|
| + stream_observer_->OnAddRemoteVideoTrack(stream, video_track, ssrc, mid);
|
| } else {
|
| ASSERT(false && "Invalid media type");
|
| }
|
| @@ -736,17 +751,21 @@ void MediaStreamSignaling::MaybeCreateDefaultStream() {
|
| if (remote_info_.default_audio_track_needed &&
|
| default_remote_stream->GetAudioTracks().size() == 0) {
|
| remote_audio_tracks_.push_back(TrackInfo(kDefaultStreamLabel,
|
| - kDefaultAudioTrackLabel, 0));
|
| + kDefaultAudioTrackLabel, 0,
|
| + remote_info_.default_audio_mid));
|
|
|
| OnRemoteTrackSeen(kDefaultStreamLabel, kDefaultAudioTrackLabel, 0,
|
| - cricket::MEDIA_TYPE_AUDIO);
|
| + cricket::MEDIA_TYPE_AUDIO,
|
| + remote_info_.default_audio_mid);
|
| }
|
| if (remote_info_.default_video_track_needed &&
|
| default_remote_stream->GetVideoTracks().size() == 0) {
|
| remote_video_tracks_.push_back(TrackInfo(kDefaultStreamLabel,
|
| - kDefaultVideoTrackLabel, 0));
|
| + kDefaultVideoTrackLabel, 0,
|
| + remote_info_.default_video_mid));
|
| OnRemoteTrackSeen(kDefaultStreamLabel, kDefaultVideoTrackLabel, 0,
|
| - cricket::MEDIA_TYPE_VIDEO);
|
| + cricket::MEDIA_TYPE_VIDEO,
|
| + remote_info_.default_video_mid);
|
| }
|
| if (default_created) {
|
| stream_observer_->OnAddRemoteStream(default_remote_stream);
|
| @@ -774,7 +793,8 @@ MediaStreamSignaling::TrackInfos* MediaStreamSignaling::GetLocalTracks(
|
|
|
| void MediaStreamSignaling::UpdateLocalTracks(
|
| const std::vector<cricket::StreamParams>& streams,
|
| - cricket::MediaType media_type) {
|
| + cricket::MediaType media_type,
|
| + const std::string& mid) {
|
| TrackInfos* current_tracks = GetLocalTracks(media_type);
|
|
|
| // Find removed tracks. Ie tracks where the track id, stream label or ssrc
|
| @@ -806,18 +826,18 @@ void MediaStreamSignaling::UpdateLocalTracks(
|
| stream_label,
|
| track_id);
|
| if (!track_info) {
|
| - current_tracks->push_back(TrackInfo(stream_label, track_id, ssrc));
|
| - OnLocalTrackSeen(stream_label, track_id, it->first_ssrc(),
|
| - media_type);
|
| + current_tracks->push_back(TrackInfo(stream_label, track_id, ssrc, mid));
|
| + OnLocalTrackSeen(stream_label, track_id, it->first_ssrc(), media_type,
|
| + mid);
|
| }
|
| }
|
| }
|
|
|
| -void MediaStreamSignaling::OnLocalTrackSeen(
|
| - const std::string& stream_label,
|
| - const std::string& track_id,
|
| - uint32 ssrc,
|
| - cricket::MediaType media_type) {
|
| +void MediaStreamSignaling::OnLocalTrackSeen(const std::string& stream_label,
|
| + const std::string& track_id,
|
| + uint32 ssrc,
|
| + cricket::MediaType media_type,
|
| + const std::string& mid) {
|
| MediaStreamInterface* stream = local_streams_->find(stream_label);
|
| if (!stream) {
|
| LOG(LS_WARNING) << "An unknown local MediaStream with label "
|
| @@ -832,7 +852,7 @@ void MediaStreamSignaling::OnLocalTrackSeen(
|
| << track_id << " has been configured.";
|
| return;
|
| }
|
| - stream_observer_->OnAddLocalAudioTrack(stream, audio_track, ssrc);
|
| + stream_observer_->OnAddLocalAudioTrack(stream, audio_track, ssrc, mid);
|
| } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
|
| VideoTrackInterface* video_track = stream->FindVideoTrack(track_id);
|
| if (!video_track) {
|
| @@ -840,7 +860,7 @@ void MediaStreamSignaling::OnLocalTrackSeen(
|
| << track_id << " has been configured.";
|
| return;
|
| }
|
| - stream_observer_->OnAddLocalVideoTrack(stream, video_track, ssrc);
|
| + stream_observer_->OnAddLocalVideoTrack(stream, video_track, ssrc, mid);
|
| } else {
|
| ASSERT(false && "Invalid media type");
|
| }
|
|
|