Negotiate use of RTCP loss notification feedback (LNTF)

When the LossNotifications field trial is in effect, LNTF should
be offered/accepted in the SDP message, not assumed to be configured
on both sides equally.

Bug: webrtc:10662
Change-Id: Ibd827779bd301821cbb4196857f6baebfc9e7dc2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138079
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28056}
This commit is contained in:
Elad Alon
2019-05-24 13:40:02 +02:00
committed by Commit Bot
parent 815b1a6f53
commit fadb1811a8
29 changed files with 297 additions and 82 deletions

View File

@ -45,6 +45,7 @@ VideoReceiveStream::Config ParseVideoReceiveStreamJsonConfig(
: RtcpMode::kReducedSize;
receive_config.rtp.remb = json["rtp"]["remb"].asBool();
receive_config.rtp.transport_cc = json["rtp"]["transport_cc"].asBool();
receive_config.rtp.lntf.enabled = json["rtp"]["lntf"]["enabled"].asInt64();
receive_config.rtp.nack.rtp_history_ms =
json["rtp"]["nack"]["rtp_history_ms"].asInt64();
receive_config.rtp.ulpfec_payload_type =
@ -94,6 +95,7 @@ Json::Value GenerateVideoReceiveStreamJsonConfig(
: "RtcpMode::kReducedSize";
rtp_json["remb"] = config.rtp.remb;
rtp_json["transport_cc"] = config.rtp.transport_cc;
rtp_json["lntf"]["enabled"] = config.rtp.lntf.enabled;
rtp_json["nack"]["rtp_history_ms"] = config.rtp.nack.rtp_history_ms;
rtp_json["ulpfec_payload_type"] = config.rtp.ulpfec_payload_type;
rtp_json["red_payload_type"] = config.rtp.red_payload_type;

View File

@ -31,6 +31,7 @@ TEST(CallConfigUtils, MarshalUnmarshalProcessSameObject) {
recv_config.rtp.rtcp_mode = RtcpMode::kCompound;
recv_config.rtp.remb = false;
recv_config.rtp.transport_cc = false;
recv_config.rtp.lntf.enabled = false;
recv_config.rtp.nack.rtp_history_ms = 150;
recv_config.rtp.red_payload_type = 50;
recv_config.rtp.rtx_ssrc = 1000;
@ -54,6 +55,7 @@ TEST(CallConfigUtils, MarshalUnmarshalProcessSameObject) {
EXPECT_EQ(recv_config.rtp.rtcp_mode, unmarshaled_config.rtp.rtcp_mode);
EXPECT_EQ(recv_config.rtp.remb, unmarshaled_config.rtp.remb);
EXPECT_EQ(recv_config.rtp.transport_cc, unmarshaled_config.rtp.transport_cc);
EXPECT_EQ(recv_config.rtp.lntf.enabled, unmarshaled_config.rtp.lntf.enabled);
EXPECT_EQ(recv_config.rtp.nack.rtp_history_ms,
unmarshaled_config.rtp.nack.rtp_history_ms);
EXPECT_EQ(recv_config.rtp.red_payload_type,

View File

@ -112,6 +112,9 @@
}
],
"local_ssrc" : 1,
"lntf" : {
"enabled": false,
},
"nack" : {
"rtp_history_ms" : 1000
},

View File

@ -36,6 +36,9 @@
"rtp" : {
"extensions" : [],
"local_ssrc" : 1,
"lntf" : {
"enabled": false,
},
"nack" : {
"rtp_history_ms" : 1000
},

View File

@ -36,6 +36,9 @@
"rtp" : {
"extensions" : [],
"local_ssrc" : 1,
"lntf" : {
"enabled": false,
},
"nack" : {
"rtp_history_ms" : 1000
},

View File

@ -10,6 +10,9 @@
"rtp" : {
"extensions" : [],
"local_ssrc" : 7331,
"lntf" : {
"enabled": false,
},
"nack" : {
"rtp_history_ms" : 1000
},

View File

@ -47,6 +47,9 @@
}
],
"local_ssrc" : 1,
"lntf" : {
"enabled": false,
},
"nack" : {
"rtp_history_ms" : 1000
},

View File

@ -10,6 +10,9 @@
"rtp" : {
"extensions" : [],
"local_ssrc" : 7331,
"lntf" : {
"enabled": false,
},
"nack" : {
"rtp_history_ms" : 1000
},

View File

@ -52,6 +52,9 @@
}
],
"local_ssrc" : 1,
"lntf" : {
"enabled": false,
},
"nack" : {
"rtp_history_ms" : 1000
},

View File

@ -31,6 +31,7 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
vp8_config.rtp.transport_cc = true;
vp8_config.rtp.remb = true;
vp8_config.rtp.nack.rtp_history_ms = 1000;
vp8_config.rtp.lntf.enabled = true;
std::vector<VideoReceiveStream::Config> replay_configs;
replay_configs.push_back(std::move(vp8_config));