diff --git a/webrtc/Sdp.cpp b/webrtc/Sdp.cpp index 987d095f..9abe83b2 100644 --- a/webrtc/Sdp.cpp +++ b/webrtc/Sdp.cpp @@ -1394,6 +1394,29 @@ void RtcConfigure::enableTWCC(bool enable, TrackType type){ } } +void RtcConfigure::enableREMB(bool enable, TrackType type){ + switch (type) { + case TrackAudio: { + audio.enableREMB(enable); + break; + } + case TrackVideo: { + video.enableREMB(enable); + break; + } + case TrackApplication: { + application.enableREMB(enable); + break; + } + default: { + audio.enableREMB(enable); + video.enableREMB(enable); + application.enableREMB(enable); + break; + } + } +} + shared_ptr RtcConfigure::createAnswer(const RtcSession &offer){ shared_ptr ret = std::make_shared(); ret->version = offer.version; diff --git a/webrtc/Sdp.h b/webrtc/Sdp.h index fa7f31a3..cd044e23 100644 --- a/webrtc/Sdp.h +++ b/webrtc/Sdp.h @@ -719,6 +719,7 @@ public: void setPlayRtspInfo(const string &sdp); void enableTWCC(bool enable = true, TrackType type = TrackInvalid); + void enableREMB(bool enable = true, TrackType type = TrackInvalid); private: void matchMedia(shared_ptr &ret, TrackType type, const vector &medias, const RtcTrackConfigure &configure); diff --git a/webrtc/WebRtcTransport.cpp b/webrtc/WebRtcTransport.cpp index 484400db..7ce870ae 100644 --- a/webrtc/WebRtcTransport.cpp +++ b/webrtc/WebRtcTransport.cpp @@ -187,7 +187,13 @@ void WebRtcTransport::onCheckSdp(SdpType type, RtcSession &sdp){ void WebRtcTransport::onRtcConfigure(RtcConfigure &configure) const { //开启remb后关闭twcc,因为开启twcc后remb无效 GET_CONFIG(size_t, remb_bit_rate, RTC::kRembBitRate); - configure.enableTWCC(!remb_bit_rate); + if (remb_bit_rate) { + configure.enableREMB(true); + configure.enableTWCC(false); + } else { + configure.enableREMB(false); + configure.enableTWCC(true); + } } std::string WebRtcTransport::getAnswerSdp(const string &offer){