diff --git a/media/base/codec.cc b/media/base/codec.cc index f5a71cced0..cb2a8fc3df 100644 --- a/media/base/codec.cc +++ b/media/base/codec.cc @@ -346,6 +346,11 @@ bool HasRemb(const Codec& codec) { FeedbackParam(kRtcpFbParamRemb, kParamValueEmpty)); } +bool HasRrtr(const Codec& codec) { + return codec.HasFeedbackParam( + FeedbackParam(kRtcpFbParamRrtr, kParamValueEmpty)); +} + bool HasTransportCc(const Codec& codec) { return codec.HasFeedbackParam( FeedbackParam(kRtcpFbParamTransportCc, kParamValueEmpty)); diff --git a/media/base/codec.h b/media/base/codec.h index a49fe4b278..30844c7120 100644 --- a/media/base/codec.h +++ b/media/base/codec.h @@ -250,6 +250,7 @@ bool CodecNamesEq(const std::string& name1, const std::string& name2); bool CodecNamesEq(const char* name1, const char* name2); bool HasNack(const Codec& codec); bool HasRemb(const Codec& codec); +bool HasRrtr(const Codec& codec); bool HasTransportCc(const Codec& codec); // Returns the first codec in |supported_codecs| that matches |codec|, or // nullptr if no codec matches. diff --git a/media/base/mediaconstants.cc b/media/base/mediaconstants.cc index abc4e0c1b9..de21d04a25 100644 --- a/media/base/mediaconstants.cc +++ b/media/base/mediaconstants.cc @@ -86,6 +86,7 @@ const char kRtcpFbParamTransportCc[] = "transport-cc"; const char kRtcpFbParamCcm[] = "ccm"; const char kRtcpFbCcmParamFir[] = "fir"; +const char kRtcpFbParamRrtr[] = "rrtr"; const char kCodecParamMaxBitrate[] = "x-google-max-bitrate"; const char kCodecParamMinBitrate[] = "x-google-min-bitrate"; const char kCodecParamStartBitrate[] = "x-google-start-bitrate"; diff --git a/media/base/mediaconstants.h b/media/base/mediaconstants.h index 72edd89e20..14c49baf72 100644 --- a/media/base/mediaconstants.h +++ b/media/base/mediaconstants.h @@ -101,6 +101,9 @@ extern const char kRtcpFbParamTransportCc[]; // ccm submessages according to RFC 5104 extern const char kRtcpFbParamCcm[]; extern const char kRtcpFbCcmParamFir[]; +// Receiver reference time report +// https://tools.ietf.org/html/rfc3611 section 4.4 +extern const char kRtcpFbParamRrtr[]; // Google specific parameters extern const char kCodecParamMaxBitrate[]; extern const char kCodecParamMinBitrate[]; diff --git a/media/engine/webrtcvideoengine.cc b/media/engine/webrtcvideoengine.cc index 3cf72cf732..375eb4db32 100644 --- a/media/engine/webrtcvideoengine.cc +++ b/media/engine/webrtcvideoengine.cc @@ -2290,6 +2290,7 @@ void WebRtcVideoChannel::WebRtcVideoReceiveStream::ConfigureCodecs( config_.rtp.red_payload_type = codec.ulpfec.red_payload_type; config_.rtp.nack.rtp_history_ms = HasNack(codec.codec) ? kNackHistoryMs : 0; + config_.rtp.rtcp_xr.receiver_reference_time_report = HasRrtr(codec.codec); if (codec.ulpfec.red_rtx_payload_type != -1) { config_.rtp .rtx_associated_payload_types[codec.ulpfec.red_rtx_payload_type] =