Remove WebRTC-ExcludeTransportSequenceNumberFromFec.
Bug: webrtc:11503 Change-Id: I5e0b7038286d9501a617e002b70638f34ac556ac Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173580 Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31072}
This commit is contained in:

committed by
Commit Bot

parent
2136b569eb
commit
3ebb6e93f4
@ -45,22 +45,6 @@ namespace {
|
||||
constexpr size_t kRedForFecHeaderLength = 1;
|
||||
constexpr int64_t kMaxUnretransmittableFrameIntervalMs = 33 * 4;
|
||||
|
||||
// This is experimental field trial to exclude transport sequence number from
|
||||
// FEC packets and should only be used in conjunction with datagram transport.
|
||||
// Datagram transport removes transport sequence numbers from RTP packets and
|
||||
// uses datagram feedback loop to re-generate RTCP feedback packets, but FEC
|
||||
// contorol packets are calculated before sequence number is removed and as a
|
||||
// result recovered packets will be corrupt unless we also remove transport
|
||||
// sequence number during FEC calculation.
|
||||
//
|
||||
// TODO(sukhanov): We need to find a better way to implement FEC with datagram
|
||||
// transport, probably moving FEC to datagram integration layter. We should
|
||||
// also remove special field trial once we switch datagram path from
|
||||
// RTCConfiguration flags to field trial and use the same field trial for FEC
|
||||
// workaround.
|
||||
const char kExcludeTransportSequenceNumberFromFecFieldTrial[] =
|
||||
"WebRTC-ExcludeTransportSequenceNumberFromFec";
|
||||
|
||||
void BuildRedPayload(const RtpPacketToSend& media_packet,
|
||||
RtpPacketToSend* red_packet) {
|
||||
uint8_t* red_payload = red_packet->AllocatePayload(
|
||||
@ -151,10 +135,6 @@ RTPSenderVideo::RTPSenderVideo(const Config& config)
|
||||
generic_descriptor_auth_experiment_(!absl::StartsWith(
|
||||
config.field_trials->Lookup("WebRTC-GenericDescriptorAuth"),
|
||||
"Disabled")),
|
||||
exclude_transport_sequence_number_from_fec_experiment_(absl::StartsWith(
|
||||
config.field_trials->Lookup(
|
||||
kExcludeTransportSequenceNumberFromFecFieldTrial),
|
||||
"Enabled")),
|
||||
absolute_capture_time_sender_(config.clock),
|
||||
frame_transformer_delegate_(
|
||||
config.frame_transformer
|
||||
@ -613,24 +593,6 @@ bool RTPSenderVideo::SendVideo(
|
||||
}
|
||||
|
||||
if (protect_packet && fec_generator_) {
|
||||
if (red_enabled() &&
|
||||
exclude_transport_sequence_number_from_fec_experiment_) {
|
||||
// See comments at the top of the file why experiment
|
||||
// "WebRTC-kExcludeTransportSequenceNumberFromFec" is needed in
|
||||
// conjunction with datagram transport.
|
||||
// TODO(sukhanov): We may also need to implement it for flexfec_sender
|
||||
// if we decide to keep this approach in the future.
|
||||
uint16_t transport_senquence_number;
|
||||
if (packet->GetExtension<webrtc::TransportSequenceNumber>(
|
||||
&transport_senquence_number)) {
|
||||
if (!packet->RemoveExtension(webrtc::TransportSequenceNumber::kId)) {
|
||||
RTC_NOTREACHED()
|
||||
<< "Failed to remove transport sequence number, packet="
|
||||
<< packet->ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fec_generator_->AddPacketAndGenerateFec(*packet);
|
||||
}
|
||||
|
||||
|
@ -211,8 +211,6 @@ class RTPSenderVideo {
|
||||
// Set to true if the generic descriptor should be authenticated.
|
||||
const bool generic_descriptor_auth_experiment_;
|
||||
|
||||
const bool exclude_transport_sequence_number_from_fec_experiment_;
|
||||
|
||||
AbsoluteCaptureTimeSender absolute_capture_time_sender_;
|
||||
|
||||
const rtc::scoped_refptr<RTPSenderVideoFrameTransformerDelegate>
|
||||
|
@ -77,11 +77,6 @@ DatagramRtpTransport::DatagramRtpTransport(
|
||||
"datagram transport connection";
|
||||
}
|
||||
|
||||
// TODO(sukhanov): Add CHECK to make sure that field trial
|
||||
// WebRTC-ExcludeTransportSequenceNumberFromFecFieldTrial is enabled.
|
||||
// If feedback loop is translation is enabled, FEC packets must exclude
|
||||
// transport sequence numbers, otherwise recovered packets will be corrupt.
|
||||
|
||||
RTC_DCHECK(ice_transport_);
|
||||
RTC_DCHECK(datagram_transport_);
|
||||
|
||||
|
Reference in New Issue
Block a user