diff --git a/trunk/src/app/srs_app_rtc_sdp.cpp b/trunk/src/app/srs_app_rtc_sdp.cpp index 4b428ace1..a0f6f9473 100644 --- a/trunk/src/app/srs_app_rtc_sdp.cpp +++ b/trunk/src/app/srs_app_rtc_sdp.cpp @@ -332,6 +332,20 @@ vector SrsMediaDesc::find_media_with_encoding_name(const st return payloads; } +srs_error_t SrsMediaDesc::update_msid(string id) +{ + srs_error_t err = srs_success; + + for(vector::iterator it = ssrc_infos_.begin(); it != ssrc_infos_.end(); ++it) { + SrsSSRCInfo& info = *it; + + info.msid_ = id; + info.mslabel_ = id; + } + + return err; +} + srs_error_t SrsMediaDesc::parse_line(const std::string& line) { srs_error_t err = srs_success; @@ -1072,3 +1086,21 @@ bool SrsSdp::is_unified() const return media_descs_.size() > 2; } +srs_error_t SrsSdp::update_msid(string id) +{ + srs_error_t err = srs_success; + + msids_.clear(); + msids_.push_back(id); + + for (vector::iterator it = media_descs_.begin(); it != media_descs_.end(); ++it) { + SrsMediaDesc& desc = *it; + + if ((err = desc.update_msid(id)) != srs_success) { + return srs_error_wrap(err, "desc %s update msid %s", desc.mid_.c_str(), id.c_str()); + } + } + + return err; +} + diff --git a/trunk/src/app/srs_app_rtc_sdp.hpp b/trunk/src/app/srs_app_rtc_sdp.hpp index d4edd6e55..cbf926d54 100644 --- a/trunk/src/app/srs_app_rtc_sdp.hpp +++ b/trunk/src/app/srs_app_rtc_sdp.hpp @@ -140,6 +140,7 @@ public: SrsMediaPayloadType* find_media_with_payload_type(int payload_type); std::vector find_media_with_encoding_name(const std::string& encoding_name) const; const std::map& get_extmaps() const { return extmaps_; } + srs_error_t update_msid(std::string id); bool is_audio() const { return type_ == "audio"; } bool is_video() const { return type_ == "video"; } @@ -248,6 +249,8 @@ public: std::vector media_descs_; bool is_unified() const; + // TODO: FIXME: will be fixed when use single pc. + srs_error_t update_msid(std::string id); }; #endif