Propagate Environment to RtpPacketHistory

Passing Environment instead of Clock into this class simplifies some plumbing for downstream consumers that need to read field trials within this class.

Bug: webrtc:362762208
Change-Id: Ia501e9f7f1d91a8115a2f71fb005dd35146db172
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362535
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43048}
This commit is contained in:
Joachim Reiersen 2024-09-18 10:51:54 -07:00 committed by WebRTC LUCI CQ
parent 5cf1285330
commit bba1a2e476
7 changed files with 31 additions and 12 deletions

View File

@ -50,6 +50,15 @@ void RtpPacketHistory::StoredPacket::IncrementTimesRetransmitted() {
++times_retransmitted_; ++times_retransmitted_;
} }
RtpPacketHistory::RtpPacketHistory(const Environment& env,
PaddingMode padding_mode)
: clock_(&env.clock()),
padding_mode_(padding_mode),
number_to_store_(0),
mode_(StorageMode::kDisabled),
rtt_(TimeDelta::MinusInfinity()),
packets_inserted_(0) {}
RtpPacketHistory::RtpPacketHistory(Clock* clock, PaddingMode padding_mode) RtpPacketHistory::RtpPacketHistory(Clock* clock, PaddingMode padding_mode)
: clock_(clock), : clock_(clock),
padding_mode_(padding_mode), padding_mode_(padding_mode),

View File

@ -19,6 +19,7 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
#include "api/environment/environment.h"
#include "api/function_view.h" #include "api/function_view.h"
#include "api/units/time_delta.h" #include "api/units/time_delta.h"
#include "api/units/timestamp.h" #include "api/units/timestamp.h"
@ -56,7 +57,11 @@ class RtpPacketHistory {
// With kStoreAndCull, always remove packets after 3x max(1000ms, 3x rtt). // With kStoreAndCull, always remove packets after 3x max(1000ms, 3x rtt).
static constexpr int kPacketCullingDelayFactor = 3; static constexpr int kPacketCullingDelayFactor = 3;
RtpPacketHistory(Clock* clock, PaddingMode padding_mode); RtpPacketHistory(const Environment& env, PaddingMode padding_mode);
[[deprecated("Use Environment constructor")]] RtpPacketHistory(
Clock* clock,
PaddingMode padding_mode);
RtpPacketHistory() = delete; RtpPacketHistory() = delete;
RtpPacketHistory(const RtpPacketHistory&) = delete; RtpPacketHistory(const RtpPacketHistory&) = delete;

View File

@ -15,6 +15,7 @@
#include <memory> #include <memory>
#include <utility> #include <utility>
#include "api/environment/environment_factory.h"
#include "api/units/time_delta.h" #include "api/units/time_delta.h"
#include "api/units/timestamp.h" #include "api/units/timestamp.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@ -57,9 +58,11 @@ class RtpPacketHistoryTest
protected: protected:
RtpPacketHistoryTest() RtpPacketHistoryTest()
: fake_clock_(123456), : fake_clock_(123456),
hist_(&fake_clock_, /*enable_padding_prio=*/GetParam()) {} env_(CreateEnvironment(&fake_clock_)),
hist_(env_, /*enable_padding_prio=*/GetParam()) {}
SimulatedClock fake_clock_; SimulatedClock fake_clock_;
Environment env_;
RtpPacketHistory hist_; RtpPacketHistory hist_;
std::unique_ptr<RtpPacketToSend> CreateRtpPacket(uint16_t seq_num) { std::unique_ptr<RtpPacketToSend> CreateRtpPacket(uint16_t seq_num) {
@ -626,7 +629,8 @@ INSTANTIATE_TEST_SUITE_P(
TEST(RtpPacketHistoryRecentLargePacketMode, TEST(RtpPacketHistoryRecentLargePacketMode,
GetPayloadPaddingPacketAfterCullWithAcksReturnOldPacket) { GetPayloadPaddingPacketAfterCullWithAcksReturnOldPacket) {
SimulatedClock fake_clock(1234); SimulatedClock fake_clock(1234);
RtpPacketHistory history(&fake_clock, Environment env = CreateEnvironment(&fake_clock);
RtpPacketHistory history(env,
RtpPacketHistory::PaddingMode::kRecentLargePacket); RtpPacketHistory::PaddingMode::kRecentLargePacket);
history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10); history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10);
@ -646,7 +650,8 @@ TEST(RtpPacketHistoryRecentLargePacketMode,
TEST(RtpPacketHistoryRecentLargePacketMode, TEST(RtpPacketHistoryRecentLargePacketMode,
GetPayloadPaddingPacketIgnoreSmallRecentPackets) { GetPayloadPaddingPacketIgnoreSmallRecentPackets) {
SimulatedClock fake_clock(1234); SimulatedClock fake_clock(1234);
RtpPacketHistory history(&fake_clock, Environment env = CreateEnvironment(&fake_clock);
RtpPacketHistory history(env,
RtpPacketHistory::PaddingMode::kRecentLargePacket); RtpPacketHistory::PaddingMode::kRecentLargePacket);
history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10); history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10);
std::unique_ptr<RtpPacketToSend> packet = CreatePacket(kStartSeqNum); std::unique_ptr<RtpPacketToSend> packet = CreatePacket(kStartSeqNum);
@ -667,7 +672,8 @@ TEST(RtpPacketHistoryRecentLargePacketMode,
TEST(RtpPacketHistoryRecentLargePacketMode, TEST(RtpPacketHistoryRecentLargePacketMode,
GetPayloadPaddingPacketReturnsRecentPacketIfSizeNearMax) { GetPayloadPaddingPacketReturnsRecentPacketIfSizeNearMax) {
SimulatedClock fake_clock(1234); SimulatedClock fake_clock(1234);
RtpPacketHistory history(&fake_clock, Environment env = CreateEnvironment(&fake_clock);
RtpPacketHistory history(env,
RtpPacketHistory::PaddingMode::kRecentLargePacket); RtpPacketHistory::PaddingMode::kRecentLargePacket);
history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10); history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10);
std::unique_ptr<RtpPacketToSend> packet = CreatePacket(kStartSeqNum); std::unique_ptr<RtpPacketToSend> packet = CreatePacket(kStartSeqNum);
@ -688,7 +694,8 @@ TEST(RtpPacketHistoryRecentLargePacketMode,
TEST(RtpPacketHistoryRecentLargePacketMode, TEST(RtpPacketHistoryRecentLargePacketMode,
GetPayloadPaddingPacketReturnsLastPacketAfterLargeSequenceNumberGap) { GetPayloadPaddingPacketReturnsLastPacketAfterLargeSequenceNumberGap) {
SimulatedClock fake_clock(1234); SimulatedClock fake_clock(1234);
RtpPacketHistory history(&fake_clock, Environment env = CreateEnvironment(&fake_clock);
RtpPacketHistory history(env,
RtpPacketHistory::PaddingMode::kRecentLargePacket); RtpPacketHistory::PaddingMode::kRecentLargePacket);
history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10); history.SetStorePacketsStatus(StorageMode::kStoreAndCull, 10);
uint16_t sequence_number = std::numeric_limits<uint16_t>::max() - 50; uint16_t sequence_number = std::numeric_limits<uint16_t>::max() - 50;

View File

@ -58,8 +58,7 @@ constexpr TimeDelta kDefaultExpectedRetransmissionTime = TimeDelta::Millis(125);
ModuleRtpRtcpImpl::RtpSenderContext::RtpSenderContext( ModuleRtpRtcpImpl::RtpSenderContext::RtpSenderContext(
const Environment& env, const Environment& env,
const RtpRtcpInterface::Configuration& config) const RtpRtcpInterface::Configuration& config)
: packet_history(&env.clock(), : packet_history(env, RtpPacketHistory::PaddingMode::kRecentLargePacket),
RtpPacketHistory::PaddingMode::kRecentLargePacket),
sequencer_(config.local_media_ssrc, sequencer_(config.local_media_ssrc,
config.rtx_send_ssrc, config.rtx_send_ssrc,
/*require_marker_before_media_padding=*/!config.audio, /*require_marker_before_media_padding=*/!config.audio,

View File

@ -73,8 +73,7 @@ ModuleRtpRtcpImpl2::RtpSenderContext::RtpSenderContext(
const Environment& env, const Environment& env,
TaskQueueBase& worker_queue, TaskQueueBase& worker_queue,
const RtpRtcpInterface::Configuration& config) const RtpRtcpInterface::Configuration& config)
: packet_history(&env.clock(), : packet_history(env, RtpPacketHistory::PaddingMode::kRecentLargePacket),
RtpPacketHistory::PaddingMode::kRecentLargePacket),
sequencer(config.local_media_ssrc, sequencer(config.local_media_ssrc,
config.rtx_send_ssrc, config.rtx_send_ssrc,
/*require_marker_before_media_padding=*/!config.audio, /*require_marker_before_media_padding=*/!config.audio,

View File

@ -124,7 +124,7 @@ class RtpSenderEgressTest : public ::testing::Test {
: time_controller_(kStartTime), : time_controller_(kStartTime),
env_(CreateEnvironment(time_controller_.GetClock())), env_(CreateEnvironment(time_controller_.GetClock())),
transport_(&header_extensions_), transport_(&header_extensions_),
packet_history_(&env_.clock(), packet_history_(env_,
RtpPacketHistory::PaddingMode::kRecentLargePacket), RtpPacketHistory::PaddingMode::kRecentLargePacket),
sequence_number_(kStartSequenceNumber) {} sequence_number_(kStartSequenceNumber) {}

View File

@ -154,7 +154,7 @@ class RtpSenderTest : public ::testing::Test {
void CreateSender(const RtpRtcpInterface::Configuration& config) { void CreateSender(const RtpRtcpInterface::Configuration& config) {
packet_history_ = std::make_unique<RtpPacketHistory>( packet_history_ = std::make_unique<RtpPacketHistory>(
&env_.clock(), RtpPacketHistory::PaddingMode::kRecentLargePacket); env_, RtpPacketHistory::PaddingMode::kRecentLargePacket);
sequencer_.emplace(kSsrc, kRtxSsrc, sequencer_.emplace(kSsrc, kRtxSsrc,
/*require_marker_before_media_padding=*/!config.audio, /*require_marker_before_media_padding=*/!config.audio,
&env_.clock()); &env_.clock());