Add RRTR parameter to media engine and pass it to video receive stream

This allows clients to enable Receiver reference time reports via
PeerConnection.

RRTR is not enabled by default but can be added to SDP string.

Bug: webrtc:9108
Change-Id: I851f0d65152875bf115553a851b839f83e3d241e
Reviewed-on: https://webrtc-review.googlesource.com/66861
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22767}
This commit is contained in:
Ilya Nikolaevskiy
2018-04-04 16:33:49 +02:00
committed by Commit Bot
parent ac6475e031
commit 634a777b9d
5 changed files with 11 additions and 0 deletions

View File

@ -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));

View File

@ -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.

View File

@ -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";

View File

@ -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[];

View File

@ -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] =