diff options
author | stefan@webrtc.org <stefan@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-07-11 13:44:02 +0000 |
---|---|---|
committer | stefan@webrtc.org <stefan@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-07-11 13:44:02 +0000 |
commit | 55b0f2e500fac8fc0932ea5b60359d268371f8c5 (patch) | |
tree | e31bd1de2cd9050d0d068f4fbafafb2d9c07e055 /modules | |
parent | c928d3609b9e61907f54505a236c5c1f917c211b (diff) | |
download | webrtc-55b0f2e500fac8fc0932ea5b60359d268371f8c5.tar.gz |
Move pacer to fully use webrtc::Clock instead of webrtc::TickTime.
This required rewriting the send-side delay stats api to be callback based, as otherwise the SuspendBelowMinBitrate test started flaking much more frequently since it had lock order inversion problems.
R=pbos@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/21869005
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@6664 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'modules')
-rw-r--r-- | modules/pacing/include/paced_sender.h | 5 | ||||
-rw-r--r-- | modules/pacing/paced_sender.cc | 13 | ||||
-rw-r--r-- | modules/pacing/paced_sender_unittest.cc | 29 | ||||
-rw-r--r-- | modules/rtp_rtcp/interface/rtp_rtcp.h | 5 | ||||
-rw-r--r-- | modules/rtp_rtcp/source/rtp_rtcp_impl.cc | 6 | ||||
-rw-r--r-- | modules/rtp_rtcp/source/rtp_sender.cc | 32 | ||||
-rw-r--r-- | modules/rtp_rtcp/source/rtp_sender.h | 4 | ||||
-rw-r--r-- | modules/rtp_rtcp/source/rtp_sender_unittest.cc | 10 |
8 files changed, 48 insertions, 56 deletions
diff --git a/modules/pacing/include/paced_sender.h b/modules/pacing/include/paced_sender.h index 55497db3..b9151a5f 100644 --- a/modules/pacing/include/paced_sender.h +++ b/modules/pacing/include/paced_sender.h @@ -17,7 +17,6 @@ #include "webrtc/modules/interface/module.h" #include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/system_wrappers/interface/thread_annotations.h" -#include "webrtc/system_wrappers/interface/tick_util.h" #include "webrtc/typedefs.h" namespace webrtc { @@ -147,8 +146,8 @@ class PacedSender : public Module { scoped_ptr<paced_sender::IntervalBudget> padding_budget_ GUARDED_BY(critsect_); - TickTime time_last_update_ GUARDED_BY(critsect_); - TickTime time_last_send_ GUARDED_BY(critsect_); + int64_t time_last_update_ GUARDED_BY(critsect_); + int64_t time_last_send_ GUARDED_BY(critsect_); int64_t capture_time_ms_last_queued_ GUARDED_BY(critsect_); int64_t capture_time_ms_last_sent_ GUARDED_BY(critsect_); diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc index 323cafec..52e9cfb4 100644 --- a/modules/pacing/paced_sender.cc +++ b/modules/pacing/paced_sender.cc @@ -142,7 +142,7 @@ PacedSender::PacedSender(Clock* clock, max_queue_length_ms_(kDefaultMaxQueueLengthMs), media_budget_(new paced_sender::IntervalBudget(max_bitrate_kbps)), padding_budget_(new paced_sender::IntervalBudget(min_bitrate_kbps)), - time_last_update_(TickTime::Now()), + time_last_update_(clock->TimeInMilliseconds()), capture_time_ms_last_queued_(0), capture_time_ms_last_sent_(0), high_priority_packets_(new paced_sender::PacketList), @@ -248,8 +248,7 @@ int PacedSender::QueueInMs() const { int32_t PacedSender::TimeUntilNextProcess() { CriticalSectionScoped cs(critsect_.get()); - int64_t elapsed_time_ms = - (TickTime::Now() - time_last_update_).Milliseconds(); + int64_t elapsed_time_ms = clock_->TimeInMilliseconds() - time_last_update_; if (elapsed_time_ms <= 0) { return kMinPacketLimitMs; } @@ -260,9 +259,9 @@ int32_t PacedSender::TimeUntilNextProcess() { } int32_t PacedSender::Process() { - TickTime now = TickTime::Now(); + int64_t now = clock_->TimeInMilliseconds(); CriticalSectionScoped cs(critsect_.get()); - int elapsed_time_ms = (now - time_last_update_).Milliseconds(); + int elapsed_time_ms = now - time_last_update_; time_last_update_ = now; if (!enabled_) { return 0; @@ -335,7 +334,7 @@ bool PacedSender::ShouldSendNextPacket(paced_sender::PacketList** packet_list) { if (media_budget_->bytes_remaining() <= 0) { // All bytes consumed for this interval. // Check if we have not sent in a too long time. - if ((TickTime::Now() - time_last_send_).Milliseconds() > + if (clock_->TimeInMilliseconds() - time_last_send_ > kMaxQueueTimeWithoutSendingMs) { if (!high_priority_packets_->empty()) { *packet_list = high_priority_packets_.get(); @@ -389,7 +388,7 @@ paced_sender::Packet PacedSender::GetNextPacketFromList( // MUST have critsect_ when calling. void PacedSender::UpdateMediaBytesSent(int num_bytes) { - time_last_send_ = TickTime::Now(); + time_last_send_ = clock_->TimeInMilliseconds(); media_budget_->UseBudget(num_bytes); padding_budget_->UseBudget(num_bytes); } diff --git a/modules/pacing/paced_sender_unittest.cc b/modules/pacing/paced_sender_unittest.cc index 55188558..14dcdbc5 100644 --- a/modules/pacing/paced_sender_unittest.cc +++ b/modules/pacing/paced_sender_unittest.cc @@ -58,7 +58,6 @@ class PacedSenderTest : public ::testing::Test { protected: PacedSenderTest() : clock_(123456) { srand(0); - TickTime::UseFakeClock(123456); // Need to initialize PacedSender after we initialize clock. send_bucket_.reset( new PacedSender( @@ -99,10 +98,8 @@ TEST_F(PacedSenderTest, QueuePacket) { EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); clock_.AdvanceTimeMilliseconds(4); - TickTime::AdvanceFakeClock(4); EXPECT_EQ(1, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(1); - TickTime::AdvanceFakeClock(1); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_CALL(callback_, TimeToSendPacket( ssrc, sequence_number++, queued_packet_timestamp, false)) @@ -137,7 +134,6 @@ TEST_F(PacedSenderTest, PaceQueuedPackets) { for (int k = 0; k < 10; ++k) { EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, _, false)) .Times(3) @@ -147,7 +143,6 @@ TEST_F(PacedSenderTest, PaceQueuedPackets) { } EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, @@ -185,7 +180,6 @@ TEST_F(PacedSenderTest, PaceQueuedPacketsWithDuplicates) { for (int k = 0; k < 10; ++k) { EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); for (int i = 0; i < 3; ++i) { EXPECT_CALL(callback_, TimeToSendPacket(ssrc, queued_sequence_number++, @@ -199,7 +193,6 @@ TEST_F(PacedSenderTest, PaceQueuedPacketsWithDuplicates) { } EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, @@ -233,7 +226,6 @@ TEST_F(PacedSenderTest, CanQueuePacketsWithSameSequenceNumberOnDifferentSsrcs) { false); clock_.AdvanceTimeMilliseconds(1000); - TickTime::AdvanceFakeClock(1000); send_bucket_->Process(); } @@ -253,7 +245,6 @@ TEST_F(PacedSenderTest, Padding) { EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); @@ -262,7 +253,6 @@ TEST_F(PacedSenderTest, Padding) { WillOnce(Return(250)); EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); } @@ -274,13 +264,11 @@ TEST_F(PacedSenderTest, NoPaddingWhenDisabled) { EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); } @@ -297,7 +285,6 @@ TEST_F(PacedSenderTest, VerifyPaddingUpToBitrate) { SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, capture_time_ms, 250, false); clock_.AdvanceTimeMilliseconds(kTimeStep); - TickTime::AdvanceFakeClock(kTimeStep); EXPECT_CALL(callback_, TimeToSendPadding(250)).Times(1). WillOnce(Return(250)); send_bucket_->Process(); @@ -323,7 +310,6 @@ TEST_F(PacedSenderTest, VerifyAverageBitrateVaryingMediaPayload) { media_payload, false)); media_bytes += media_payload; clock_.AdvanceTimeMilliseconds(kTimeStep); - TickTime::AdvanceFakeClock(kTimeStep); send_bucket_->Process(); } EXPECT_NEAR(kTargetBitrate, 8 * (media_bytes + callback.padding_sent()) / @@ -365,7 +351,6 @@ TEST_F(PacedSenderTest, Priority) { EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); @@ -376,7 +361,6 @@ TEST_F(PacedSenderTest, Priority) { EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); } @@ -408,7 +392,6 @@ TEST_F(PacedSenderTest, Pause) { ssrc, sequence_number++, capture_time_ms, 250, false)); clock_.AdvanceTimeMilliseconds(10000); - TickTime::AdvanceFakeClock(10000); int64_t second_capture_time_ms = clock_.TimeInMilliseconds(); // Expect everything to be queued. @@ -425,7 +408,6 @@ TEST_F(PacedSenderTest, Pause) { for (int i = 0; i < 10; ++i) { clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); } @@ -438,7 +420,6 @@ TEST_F(PacedSenderTest, Pause) { EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); @@ -448,7 +429,6 @@ TEST_F(PacedSenderTest, Pause) { .WillRepeatedly(Return(true)); EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); clock_.AdvanceTimeMilliseconds(5); - TickTime::AdvanceFakeClock(5); EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); EXPECT_EQ(0, send_bucket_->Process()); EXPECT_EQ(0, send_bucket_->QueueInMs()); @@ -467,7 +447,6 @@ TEST_F(PacedSenderTest, ResendPacket) { 250, false)); clock_.AdvanceTimeMilliseconds(1); - TickTime::AdvanceFakeClock(1); EXPECT_FALSE(send_bucket_->SendPacket(PacedSender::kNormalPriority, ssrc, sequence_number + 1, @@ -475,7 +454,6 @@ TEST_F(PacedSenderTest, ResendPacket) { 250, false)); clock_.AdvanceTimeMilliseconds(9999); - TickTime::AdvanceFakeClock(9999); EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms, send_bucket_->QueueInMs()); // Fails to send first packet so only one call. @@ -484,7 +462,6 @@ TEST_F(PacedSenderTest, ResendPacket) { .Times(1) .WillOnce(Return(false)); clock_.AdvanceTimeMilliseconds(10000); - TickTime::AdvanceFakeClock(10000); send_bucket_->Process(); // Queue remains unchanged. @@ -501,7 +478,6 @@ TEST_F(PacedSenderTest, ResendPacket) { .Times(1) .WillOnce(Return(false)); clock_.AdvanceTimeMilliseconds(10000); - TickTime::AdvanceFakeClock(10000); send_bucket_->Process(); // Queue is reduced by 1 packet. @@ -514,7 +490,6 @@ TEST_F(PacedSenderTest, ResendPacket) { .Times(1) .WillOnce(Return(true)); clock_.AdvanceTimeMilliseconds(10000); - TickTime::AdvanceFakeClock(10000); send_bucket_->Process(); EXPECT_EQ(0, send_bucket_->QueueInMs()); } @@ -535,7 +510,6 @@ TEST_F(PacedSenderTest, MaxQueueLength) { } clock_.AdvanceTimeMilliseconds(2001); - TickTime::AdvanceFakeClock(2001); SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, @@ -546,7 +520,7 @@ TEST_F(PacedSenderTest, MaxQueueLength) { send_bucket_->Process(); EXPECT_EQ(0, send_bucket_->QueueInMs()); clock_.AdvanceTimeMilliseconds(31); - TickTime::AdvanceFakeClock(31); + send_bucket_->Process(); } @@ -564,7 +538,6 @@ TEST_F(PacedSenderTest, QueueTimeGrowsOverTime) { false); clock_.AdvanceTimeMilliseconds(500); - TickTime::AdvanceFakeClock(500); EXPECT_EQ(500, send_bucket_->QueueInMs()); send_bucket_->Process(); EXPECT_EQ(0, send_bucket_->QueueInMs()); diff --git a/modules/rtp_rtcp/interface/rtp_rtcp.h b/modules/rtp_rtcp/interface/rtp_rtcp.h index b662849b..7b0a4f8a 100644 --- a/modules/rtp_rtcp/interface/rtp_rtcp.h +++ b/modules/rtp_rtcp/interface/rtp_rtcp.h @@ -47,8 +47,8 @@ class RtpRtcp : public Module { * intra_frame_callback - Called when the receiver request a intra frame. * bandwidth_callback - Called when we receive a changed estimate from * the receiver of out stream. - * audio_messages - Telehone events. May not be NULL; default callback - * will do nothing. + * audio_messages - Telephone events. May not be NULL; default + * callback will do nothing. * remote_bitrate_estimator - Estimates the bandwidth available for a set of * streams from the same client. * paced_sender - Spread any bursts of packets into smaller @@ -69,6 +69,7 @@ class RtpRtcp : public Module { PacedSender* paced_sender; BitrateStatisticsObserver* send_bitrate_observer; FrameCountObserver* send_frame_count_observer; + SendSideDelayObserver* send_side_delay_observer; }; /* diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc index f706b42e..0c771c51 100644 --- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc +++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc @@ -39,7 +39,8 @@ RtpRtcp::Configuration::Configuration() remote_bitrate_estimator(NULL), paced_sender(NULL), send_bitrate_observer(NULL), - send_frame_count_observer(NULL) { + send_frame_count_observer(NULL), + send_side_delay_observer(NULL) { } RtpRtcp* RtpRtcp::CreateRtpRtcp(const RtpRtcp::Configuration& configuration) { @@ -64,7 +65,8 @@ ModuleRtpRtcpImpl::ModuleRtpRtcpImpl(const Configuration& configuration) configuration.audio_messages, configuration.paced_sender, configuration.send_bitrate_observer, - configuration.send_frame_count_observer), + configuration.send_frame_count_observer, + configuration.send_side_delay_observer), rtcp_sender_(configuration.id, configuration.audio, configuration.clock, diff --git a/modules/rtp_rtcp/source/rtp_sender.cc b/modules/rtp_rtcp/source/rtp_sender.cc index e638074c..c24b15a3 100644 --- a/modules/rtp_rtcp/source/rtp_sender.cc +++ b/modules/rtp_rtcp/source/rtp_sender.cc @@ -47,7 +47,8 @@ RTPSender::RTPSender(const int32_t id, RtpAudioFeedback* audio_feedback, PacedSender* paced_sender, BitrateStatisticsObserver* bitrate_callback, - FrameCountObserver* frame_count_observer) + FrameCountObserver* frame_count_observer, + SendSideDelayObserver* send_side_delay_observer) : clock_(clock), bitrate_sent_(clock, this), id_(id), @@ -75,6 +76,7 @@ RTPSender::RTPSender(const int32_t id, rtp_stats_callback_(NULL), bitrate_callback_(bitrate_callback), frame_count_observer_(frame_count_observer), + send_side_delay_observer_(send_side_delay_observer), // RTP variables start_timestamp_forced_(false), start_timestamp_(0), @@ -164,9 +166,7 @@ uint32_t RTPSender::NackOverheadRate() const { bool RTPSender::GetSendSideDelay(int* avg_send_delay_ms, int* max_send_delay_ms) const { - if (!SendingMedia()) - return false; - CriticalSectionScoped cs(statistics_crit_.get()); + CriticalSectionScoped lock(statistics_crit_.get()); SendDelayMap::const_iterator it = send_delays_.upper_bound( clock_->TimeInMilliseconds() - kSendSideDelayWindowMs); if (it == send_delays_.end()) @@ -997,10 +997,26 @@ int32_t RTPSender::SendToNetwork( } void RTPSender::UpdateDelayStatistics(int64_t capture_time_ms, int64_t now_ms) { - CriticalSectionScoped cs(statistics_crit_.get()); - send_delays_[now_ms] = now_ms - capture_time_ms; - send_delays_.erase(send_delays_.begin(), - send_delays_.lower_bound(now_ms - kSendSideDelayWindowMs)); + uint32_t ssrc; + int avg_delay_ms = 0; + int max_delay_ms = 0; + { + CriticalSectionScoped lock(send_critsect_); + ssrc = ssrc_; + } + { + CriticalSectionScoped cs(statistics_crit_.get()); + // TODO(holmer): Compute this iteratively instead. + send_delays_[now_ms] = now_ms - capture_time_ms; + send_delays_.erase(send_delays_.begin(), + send_delays_.lower_bound(now_ms - + kSendSideDelayWindowMs)); + } + if (send_side_delay_observer_ && + GetSendSideDelay(&avg_delay_ms, &max_delay_ms)) { + send_side_delay_observer_->SendSideDelayUpdated(avg_delay_ms, + max_delay_ms, ssrc); + } } void RTPSender::ProcessBitrate() { diff --git a/modules/rtp_rtcp/source/rtp_sender.h b/modules/rtp_rtcp/source/rtp_sender.h index f65c8c27..4a9e10ed 100644 --- a/modules/rtp_rtcp/source/rtp_sender.h +++ b/modules/rtp_rtcp/source/rtp_sender.h @@ -71,7 +71,8 @@ class RTPSender : public RTPSenderInterface, public Bitrate::Observer { Transport *transport, RtpAudioFeedback *audio_feedback, PacedSender *paced_sender, BitrateStatisticsObserver* bitrate_callback, - FrameCountObserver* frame_count_observer); + FrameCountObserver* frame_count_observer, + SendSideDelayObserver* send_side_delay_observer); virtual ~RTPSender(); void ProcessBitrate(); @@ -379,6 +380,7 @@ class RTPSender : public RTPSenderInterface, public Bitrate::Observer { StreamDataCountersCallback* rtp_stats_callback_ GUARDED_BY(statistics_crit_); BitrateStatisticsObserver* const bitrate_callback_; FrameCountObserver* const frame_count_observer_; + SendSideDelayObserver* const send_side_delay_observer_; // RTP variables bool start_timestamp_forced_ GUARDED_BY(send_critsect_); diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc index 57f1460f..40b10548 100644 --- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc @@ -94,7 +94,7 @@ class RtpSenderTest : public ::testing::Test { virtual void SetUp() { rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport_, NULL, - &mock_paced_sender_, NULL, NULL)); + &mock_paced_sender_, NULL, NULL, NULL)); rtp_sender_->SetSequenceNumber(kSeqNum); } @@ -672,7 +672,7 @@ TEST_F(RtpSenderTest, SendPadding) { TEST_F(RtpSenderTest, SendRedundantPayloads) { MockTransport transport; rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport, NULL, - &mock_paced_sender_, NULL, NULL)); + &mock_paced_sender_, NULL, NULL, NULL)); rtp_sender_->SetSequenceNumber(kSeqNum); // Make all packets go through the pacer. EXPECT_CALL(mock_paced_sender_, @@ -818,7 +818,7 @@ TEST_F(RtpSenderTest, FrameCountCallbacks) { } callback; rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport_, NULL, - &mock_paced_sender_, NULL, &callback)); + &mock_paced_sender_, NULL, &callback, NULL)); char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; const uint8_t payload_type = 127; @@ -867,7 +867,7 @@ TEST_F(RtpSenderTest, BitrateCallbacks) { BitrateStatistics bitrate_; } callback; rtp_sender_.reset(new RTPSender(0, false, &fake_clock_, &transport_, NULL, - &mock_paced_sender_, &callback, NULL)); + &mock_paced_sender_, &callback, NULL, NULL)); // Simulate kNumPackets sent with kPacketInterval ms intervals. const uint32_t kNumPackets = 15; @@ -923,7 +923,7 @@ class RtpSenderAudioTest : public RtpSenderTest { virtual void SetUp() { payload_ = kAudioPayload; rtp_sender_.reset(new RTPSender(0, true, &fake_clock_, &transport_, NULL, - &mock_paced_sender_, NULL, NULL)); + &mock_paced_sender_, NULL, NULL, NULL)); rtp_sender_->SetSequenceNumber(kSeqNum); } }; |