Negotiation of LNTF controls instantiation of RTPSenderVideo::rtp_sequence_number_map_
Bug: webrtc:10662 Change-Id: I9e6b8636d915646c2a822599f5b1735494429ab9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138217 Commit-Queue: Elad Alon <eladalon@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28059}
This commit is contained in:
@ -31,7 +31,7 @@ struct RtpPayloadState {
|
||||
struct LntfConfig {
|
||||
std::string ToString() const;
|
||||
|
||||
bool enabled{false}; // TODO(bugs.webrtc.org/10662): Consume this flag.
|
||||
bool enabled{false};
|
||||
};
|
||||
|
||||
// Settings for NACK, see RFC 4585 for details.
|
||||
|
||||
@ -125,7 +125,7 @@ std::vector<RtpStreamSender> CreateRtpStreamSenders(
|
||||
configuration.clock, rtp_rtcp->RtpSender(),
|
||||
configuration.flexfec_sender, playout_delay_oracle.get(),
|
||||
frame_encryptor, crypto_options.sframe.require_frame_encryption,
|
||||
FieldTrialBasedConfig());
|
||||
rtp_config.lntf.enabled, FieldTrialBasedConfig());
|
||||
rtp_streams.emplace_back(std::move(playout_delay_oracle),
|
||||
std::move(rtp_rtcp), std::move(sender_video));
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ class RtpRtcpRtxNackTest : public ::testing::Test {
|
||||
rtp_rtcp_module_ = RtpRtcp::Create(configuration);
|
||||
rtp_sender_video_ = absl::make_unique<RTPSenderVideo>(
|
||||
&fake_clock, rtp_rtcp_module_->RtpSender(), nullptr,
|
||||
&playout_delay_oracle_, nullptr, false, FieldTrialBasedConfig());
|
||||
&playout_delay_oracle_, nullptr, false, false, FieldTrialBasedConfig());
|
||||
rtp_rtcp_module_->SetSSRC(kTestSsrc);
|
||||
rtp_rtcp_module_->SetRTCPStatus(RtcpMode::kCompound);
|
||||
rtp_rtcp_module_->SetStorePacketsStatus(true, 600);
|
||||
|
||||
@ -187,7 +187,7 @@ class RtpRtcpImplTest : public ::testing::Test {
|
||||
|
||||
sender_video_ = absl::make_unique<RTPSenderVideo>(
|
||||
&clock_, sender_.impl_->RtpSender(), nullptr, &playout_delay_oracle_,
|
||||
nullptr, false, FieldTrialBasedConfig());
|
||||
nullptr, false, false, FieldTrialBasedConfig());
|
||||
|
||||
memset(&codec_, 0, sizeof(VideoCodec));
|
||||
codec_.plType = 100;
|
||||
|
||||
@ -515,7 +515,7 @@ TEST_P(RtpSenderTestWithoutPacer, OnSendSideDelayUpdated) {
|
||||
rtp_sender_->SetSSRC(kSsrc);
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(), nullptr,
|
||||
&playout_delay_oracle, nullptr, false,
|
||||
&playout_delay_oracle, nullptr, false, false,
|
||||
FieldTrialBasedConfig());
|
||||
|
||||
const uint8_t kPayloadType = 127;
|
||||
@ -1098,7 +1098,7 @@ TEST_P(RtpSenderTestWithoutPacer, SendGenericVideo) {
|
||||
const uint8_t payload_type = 127;
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(), nullptr,
|
||||
&playout_delay_oracle, nullptr, false,
|
||||
&playout_delay_oracle, nullptr, false, false,
|
||||
FieldTrialBasedConfig());
|
||||
rtp_sender_video.RegisterPayloadType(payload_type, payload_name,
|
||||
/*raw_payload=*/false);
|
||||
@ -1141,7 +1141,7 @@ TEST_P(RtpSenderTestWithoutPacer, SendRawVideo) {
|
||||
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(), nullptr,
|
||||
&playout_delay_oracle, nullptr, false,
|
||||
&playout_delay_oracle, nullptr, false, false,
|
||||
FieldTrialBasedConfig());
|
||||
rtp_sender_video.RegisterPayloadType(payload_type, payload_name,
|
||||
/*raw_payload=*/true);
|
||||
@ -1180,9 +1180,9 @@ TEST_P(RtpSenderTest, SendFlexfecPackets) {
|
||||
rtp_sender_->SetStorePacketsStatus(true, 10);
|
||||
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(),
|
||||
&flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, FieldTrialBasedConfig());
|
||||
RTPSenderVideo rtp_sender_video(
|
||||
&fake_clock_, rtp_sender_.get(), &flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, false, FieldTrialBasedConfig());
|
||||
rtp_sender_video.RegisterPayloadType(kMediaPayloadType, "GENERIC",
|
||||
/*raw_payload=*/false);
|
||||
|
||||
@ -1257,9 +1257,9 @@ TEST_P(RtpSenderTest, NoFlexfecForTimingFrames) {
|
||||
rtp_sender_->SetStorePacketsStatus(true, 10);
|
||||
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(),
|
||||
&flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, FieldTrialBasedConfig());
|
||||
RTPSenderVideo rtp_sender_video(
|
||||
&fake_clock_, rtp_sender_.get(), &flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, false, FieldTrialBasedConfig());
|
||||
rtp_sender_video.RegisterPayloadType(kMediaPayloadType, "GENERIC",
|
||||
/*raw_payload=*/false);
|
||||
|
||||
@ -1359,9 +1359,9 @@ TEST_P(RtpSenderTestWithoutPacer, SendFlexfecPackets) {
|
||||
rtp_sender_->SetSequenceNumber(kSeqNum);
|
||||
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(),
|
||||
&flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, FieldTrialBasedConfig());
|
||||
RTPSenderVideo rtp_sender_video(
|
||||
&fake_clock_, rtp_sender_.get(), &flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, false, FieldTrialBasedConfig());
|
||||
rtp_sender_video.RegisterPayloadType(kMediaPayloadType, "GENERIC",
|
||||
/*raw_payload=*/false);
|
||||
|
||||
@ -1490,9 +1490,9 @@ TEST_P(RtpSenderTest, FecOverheadRate) {
|
||||
rtp_sender_->SetSequenceNumber(kSeqNum);
|
||||
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(),
|
||||
&flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, FieldTrialBasedConfig());
|
||||
RTPSenderVideo rtp_sender_video(
|
||||
&fake_clock_, rtp_sender_.get(), &flexfec_sender, &playout_delay_oracle,
|
||||
nullptr, false, false, FieldTrialBasedConfig());
|
||||
rtp_sender_video.RegisterPayloadType(kMediaPayloadType, "GENERIC",
|
||||
/*raw_payload=*/false);
|
||||
// Parameters selected to generate a single FEC packet per media packet.
|
||||
@ -1562,7 +1562,7 @@ TEST_P(RtpSenderTest, BitrateCallbacks) {
|
||||
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(), nullptr,
|
||||
&playout_delay_oracle, nullptr, false,
|
||||
&playout_delay_oracle, nullptr, false, false,
|
||||
FieldTrialBasedConfig());
|
||||
const char payload_name[] = "GENERIC";
|
||||
const uint8_t payload_type = 127;
|
||||
@ -1651,7 +1651,7 @@ TEST_P(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) {
|
||||
const uint8_t payload_type = 127;
|
||||
PlayoutDelayOracle playout_delay_oracle;
|
||||
RTPSenderVideo rtp_sender_video(&fake_clock_, rtp_sender_.get(), nullptr,
|
||||
&playout_delay_oracle, nullptr, false,
|
||||
&playout_delay_oracle, nullptr, false, false,
|
||||
FieldTrialBasedConfig());
|
||||
rtp_sender_video.RegisterPayloadType(payload_type, payload_name,
|
||||
/*raw_payload=*/false);
|
||||
|
||||
@ -187,6 +187,7 @@ RTPSenderVideo::RTPSenderVideo(Clock* clock,
|
||||
PlayoutDelayOracle* playout_delay_oracle,
|
||||
FrameEncryptorInterface* frame_encryptor,
|
||||
bool require_frame_encryption,
|
||||
bool need_rtp_packet_infos,
|
||||
const WebRtcKeyValueConfig& field_trials)
|
||||
: rtp_sender_(rtp_sender),
|
||||
clock_(clock),
|
||||
@ -195,15 +196,10 @@ RTPSenderVideo::RTPSenderVideo(Clock* clock,
|
||||
last_rotation_(kVideoRotation_0),
|
||||
transmit_color_space_next_frame_(false),
|
||||
playout_delay_oracle_(playout_delay_oracle),
|
||||
// TODO(bugs.webrtc.org/10662): Choose whether to instantiate
|
||||
// |rtp_sequence_number_map_| according to the negotiation of the
|
||||
// LNTF (loss notification) rtcp-fb message.
|
||||
rtp_sequence_number_map_(
|
||||
field_trials.Lookup("WebRTC-RtcpLossNotification").find("Enabled") !=
|
||||
std::string::npos
|
||||
? absl::make_unique<RtpSequenceNumberMap>(
|
||||
kRtpSequenceNumberMapMaxEntries)
|
||||
: nullptr),
|
||||
rtp_sequence_number_map_(need_rtp_packet_infos
|
||||
? absl::make_unique<RtpSequenceNumberMap>(
|
||||
kRtpSequenceNumberMapMaxEntries)
|
||||
: nullptr),
|
||||
red_payload_type_(-1),
|
||||
ulpfec_payload_type_(-1),
|
||||
flexfec_sender_(flexfec_sender),
|
||||
|
||||
@ -58,6 +58,7 @@ class RTPSenderVideo {
|
||||
PlayoutDelayOracle* playout_delay_oracle,
|
||||
FrameEncryptorInterface* frame_encryptor,
|
||||
bool require_frame_encryption,
|
||||
bool need_rtp_packet_infos,
|
||||
const WebRtcKeyValueConfig& field_trials);
|
||||
virtual ~RTPSenderVideo();
|
||||
|
||||
|
||||
@ -104,6 +104,7 @@ class TestRtpSenderVideo : public RTPSenderVideo {
|
||||
&playout_delay_oracle_,
|
||||
nullptr,
|
||||
false,
|
||||
false,
|
||||
field_trials) {}
|
||||
~TestRtpSenderVideo() override {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user