diff --git a/webrtc/Sdp.cpp b/webrtc/Sdp.cpp index 4ce1c489..c48361f0 100644 --- a/webrtc/Sdp.cpp +++ b/webrtc/Sdp.cpp @@ -771,7 +771,6 @@ void RtcSession::loadFrom(const string &str) { session_name = sdp.getSessionName(); session_info = sdp.getSessionInfo(); connection = sdp.getConnection(); - bandwidth = sdp.getBandwidth(); time = sdp.getSessionTime(); msid_semantic = sdp.getItemClass('a', "msid-semantic"); for (auto &media : sdp.medias) { @@ -783,6 +782,7 @@ void RtcSession::loadFrom(const string &str) { rtc_media.type = mline.type; rtc_media.port = mline.port; rtc_media.addr = media.getItemClass('c'); + rtc_media.bandwidth = media.getItemClass('b'); rtc_media.ice_ufrag = media.getStringItem('a', "ice-ufrag"); rtc_media.ice_pwd = media.getStringItem('a', "ice-pwd"); rtc_media.role = media.getItemClass('a', "setup").role; @@ -1060,9 +1060,6 @@ RtcSessionSdp::Ptr RtcSession::toRtcSessionSdp() const{ if(connection.empty()){ sdp.addItem(std::make_shared(connection)); } - if (!bandwidth.empty()) { - sdp.addItem(std::make_shared(bandwidth)); - } sdp.addAttr(std::make_shared(group)); sdp.addAttr(std::make_shared(msid_semantic)); for (auto &m : media) { @@ -1080,6 +1077,9 @@ RtcSessionSdp::Ptr RtcSession::toRtcSessionSdp() const{ } sdp_media.addItem(std::move(mline)); sdp_media.addItem(std::make_shared(m.addr)); + if (!m.bandwidth.empty() && m.type != TrackAudio) { + sdp_media.addItem(std::make_shared(m.bandwidth)); + } if (!m.rtcp_addr.empty()) { sdp_media.addAttr(std::make_shared(m.rtcp_addr)); } @@ -1631,6 +1631,7 @@ RETRY: answer_media.proto = offer_media.proto; answer_media.port = offer_media.port; answer_media.addr = offer_media.addr; + answer_media.bandwidth = offer_media.bandwidth; answer_media.rtcp_addr = offer_media.rtcp_addr; answer_media.rtcp_mux = offer_media.rtcp_mux && configure.rtcp_mux; answer_media.rtcp_rsize = offer_media.rtcp_rsize && configure.rtcp_rsize; diff --git a/webrtc/Sdp.h b/webrtc/Sdp.h index df6ae557..41e1d5d3 100644 --- a/webrtc/Sdp.h +++ b/webrtc/Sdp.h @@ -612,6 +612,7 @@ public: std::string mid; uint16_t port{0}; SdpConnection addr; + SdpBandwidth bandwidth; std::string proto; RtpDirection direction{RtpDirection::invalid}; std::vector plan; @@ -666,7 +667,6 @@ public: std::string session_info; SdpTime time; SdpConnection connection; - SdpBandwidth bandwidth; SdpAttrMsidSemantic msid_semantic; std::vector media; SdpAttrGroup group;