From 2a3b5e52906f11b1918677f2516f5a579d1d10f9 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 16 Sep 2020 19:59:49 +0800 Subject: [PATCH] RTC: Fix mid generation bug --- trunk/src/app/srs_app_rtc_conn.cpp | 19 +++++++++++++++++-- trunk/src/app/srs_app_rtc_source.hpp | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 57af15bc5..d8f03e26c 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -3090,8 +3090,23 @@ void video_track_generate_play_offer(SrsRtcTrackDescription* track, string mid, local_media_desc.extmaps_ = track->extmaps_; - local_media_desc.mid_ = mid; // Use transformed mid, not the mid of track. - local_sdp.groups_.push_back(local_media_desc.mid_); + // If mid not duplicated, use mid_ of track. Otherwise, use transformed mid. + if (true) { + bool mid_duplicated = false; + for (int i = 0; i < (int)local_sdp.groups_.size(); ++i) { + string& existed_mid = local_sdp.groups_.at(i); + if(existed_mid == track->mid_) { + mid_duplicated = true; + break; + } + } + if (mid_duplicated) { + local_media_desc.mid_ = mid; + } else { + local_media_desc.mid_ = track->mid_; + } + local_sdp.groups_.push_back(local_media_desc.mid_); + } if (track->direction_ == "recvonly") { local_media_desc.recvonly_ = true; diff --git a/trunk/src/app/srs_app_rtc_source.hpp b/trunk/src/app/srs_app_rtc_source.hpp index 5d866266f..63be91c8a 100644 --- a/trunk/src/app/srs_app_rtc_source.hpp +++ b/trunk/src/app/srs_app_rtc_source.hpp @@ -381,7 +381,7 @@ public: bool is_active_; // direction std::string direction_; - // TODO: FIXME: whether mid is needed? + // mid is used in BOUNDLE std::string mid_; // msid_: track stream id std::string msid_;