Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(681)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc

Issue 2131913003: Revert of Refactor NACK bitrate allocation (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender_video.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index 99cef009e733a38b9727ddeeb0305951005751dd..f0b6411af2711ffc3d2d39c446774268e5ecebec 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -15,7 +15,6 @@
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "webrtc/base/buffer.h"
-#include "webrtc/base/rate_limiter.h"
#include "webrtc/call/mock/mock_rtc_event_log.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_cvo.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
@@ -134,11 +133,11 @@
: fake_clock_(kStartTime),
mock_rtc_event_log_(),
mock_paced_sender_(),
- retransmission_rate_limiter_(&fake_clock_, 1000),
rtp_sender_(),
payload_(kPayload),
transport_(),
- kMarkerBit(true) {}
+ kMarkerBit(true) {
+ }
void SetUp() override { SetUpRtpSender(true); }
@@ -146,8 +145,7 @@
rtp_sender_.reset(new RTPSender(
false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr,
&seq_num_allocator_, nullptr, nullptr, nullptr, nullptr,
- &mock_rtc_event_log_, &send_packet_observer_,
- &retransmission_rate_limiter_));
+ &mock_rtc_event_log_, &send_packet_observer_));
rtp_sender_->SetSequenceNumber(kSeqNum);
}
@@ -156,7 +154,6 @@
MockRtpPacketSender mock_paced_sender_;
MockTransportSequenceNumberAllocator seq_num_allocator_;
MockSendPacketObserver send_packet_observer_;
- RateLimiter retransmission_rate_limiter_;
std::unique_ptr<RTPSender> rtp_sender_;
int payload_;
LoopbackTransportTest transport_;
@@ -746,6 +743,7 @@
EXPECT_EQ(
0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime,
kAbsoluteSendTimeExtensionId));
+ rtp_sender_->SetTargetBitrate(300000);
int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
int rtp_length_int = rtp_sender_->BuildRTPheader(
packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms);
@@ -799,6 +797,7 @@
EXPECT_EQ(
0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime,
kAbsoluteSendTimeExtensionId));
+ rtp_sender_->SetTargetBitrate(300000);
int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
int rtp_length_int = rtp_sender_->BuildRTPheader(
packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms);
@@ -880,6 +879,7 @@
kAbsoluteSendTimeExtensionId);
webrtc::RTPHeader rtp_header;
+ rtp_sender_->SetTargetBitrate(300000);
int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
int rtp_length_int = rtp_sender_->BuildRTPheader(
packet_, kPayload, kMarkerBit, timestamp, capture_time_ms);
@@ -1011,7 +1011,7 @@
rtp_sender_.reset(new RTPSender(
false, &fake_clock_, &transport_, &mock_paced_sender_,
nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr,
- nullptr, nullptr, &send_packet_observer_, nullptr));
+ nullptr, nullptr, &send_packet_observer_));
rtp_sender_->SetSequenceNumber(kSeqNum);
rtp_sender_->SetStorePacketsStatus(true, 10);
@@ -1029,7 +1029,7 @@
MockTransport transport;
rtp_sender_.reset(new RTPSender(
false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr,
- nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, nullptr));
+ nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr));
rtp_sender_->SetSequenceNumber(kSeqNum);
rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload);
@@ -1054,6 +1054,7 @@
kTransmissionTimeOffsetExtensionId);
rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime,
kAbsoluteSendTimeExtensionId);
+ rtp_sender_->SetTargetBitrate(300000);
const size_t kNumPayloadSizes = 10;
const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700,
750, 800, 850, 900, 950};
@@ -1175,7 +1176,7 @@
rtp_sender_.reset(new RTPSender(
false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, nullptr,
- nullptr, &callback, nullptr, nullptr, nullptr, nullptr));
+ nullptr, &callback, nullptr, nullptr, nullptr));
char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC";
const uint8_t payload_type = 127;
@@ -1212,39 +1213,30 @@
TEST_F(RtpSenderTest, BitrateCallbacks) {
class TestCallback : public BitrateStatisticsObserver {
public:
- TestCallback()
- : BitrateStatisticsObserver(),
- num_calls_(0),
- ssrc_(0),
- total_bitrate_(0),
- retransmit_bitrate_(0) {}
+ TestCallback() : BitrateStatisticsObserver(), num_calls_(0), ssrc_(0) {}
virtual ~TestCallback() {}
- void Notify(uint32_t total_bitrate,
- uint32_t retransmit_bitrate,
+ void Notify(const BitrateStatistics& total_stats,
+ const BitrateStatistics& retransmit_stats,
uint32_t ssrc) override {
++num_calls_;
ssrc_ = ssrc;
- total_bitrate_ = total_bitrate;
- retransmit_bitrate_ = retransmit_bitrate;
+ total_stats_ = total_stats;
+ retransmit_stats_ = retransmit_stats;
}
uint32_t num_calls_;
uint32_t ssrc_;
- uint32_t total_bitrate_;
- uint32_t retransmit_bitrate_;
+ BitrateStatistics total_stats_;
+ BitrateStatistics retransmit_stats_;
} callback;
rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
nullptr, nullptr, &callback, nullptr, nullptr,
- nullptr, nullptr, nullptr));
-
- // Simulate kNumPackets sent with kPacketInterval ms intervals, with the
- // number of packets selected so that we fill (but don't overflow) the one
- // second averaging window.
- const uint32_t kWindowSizeMs = 1000;
+ nullptr, nullptr));
+
+ // Simulate kNumPackets sent with kPacketInterval ms intervals.
+ const uint32_t kNumPackets = 15;
const uint32_t kPacketInterval = 20;
- const uint32_t kNumPackets =
- (kWindowSizeMs - kPacketInterval) / kPacketInterval;
// Overhead = 12 bytes RTP header + 1 byte generic header.
const uint32_t kPacketOverhead = 13;
@@ -1258,6 +1250,7 @@
// Initial process call so we get a new time window.
rtp_sender_->ProcessBitrate();
+ uint64_t start_time = fake_clock_.CurrentNtpInMilliseconds();
// Send a few frames.
for (uint32_t i = 0; i < kNumPackets; ++i) {
@@ -1269,18 +1262,17 @@
rtp_sender_->ProcessBitrate();
+ const uint32_t expected_packet_rate = 1000 / kPacketInterval;
+
// We get one call for every stats updated, thus two calls since both the
// stream stats and the retransmit stats are updated once.
EXPECT_EQ(2u, callback.num_calls_);
EXPECT_EQ(ssrc, callback.ssrc_);
- const uint32_t kTotalPacketSize = kPacketOverhead + sizeof(payload);
- // Bitrate measured over delta between last and first timestamp, plus one.
- const uint32_t kExpectedWindowMs = kNumPackets * kPacketInterval + 1;
- const uint32_t kExpectedBitsAccumulated = kTotalPacketSize * kNumPackets * 8;
- const uint32_t kExpectedRateBps =
- (kExpectedBitsAccumulated * 1000 + (kExpectedWindowMs / 2)) /
- kExpectedWindowMs;
- EXPECT_EQ(kExpectedRateBps, callback.total_bitrate_);
+ EXPECT_EQ(start_time + (kNumPackets * kPacketInterval),
+ callback.total_stats_.timestamp_ms);
+ EXPECT_EQ(expected_packet_rate, callback.total_stats_.packet_rate);
+ EXPECT_EQ((kPacketOverhead + sizeof(payload)) * 8 * expected_packet_rate,
+ callback.total_stats_.bitrate_bps);
rtp_sender_.reset();
}
@@ -1293,7 +1285,7 @@
payload_ = kAudioPayload;
rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr,
nullptr, nullptr, nullptr, nullptr, nullptr,
- nullptr, nullptr, nullptr));
+ nullptr, nullptr));
rtp_sender_->SetSequenceNumber(kSeqNum);
}
};
@@ -1561,9 +1553,9 @@
const int32_t kPacketSize = 1400;
const int32_t kNumPackets = 30;
- retransmission_rate_limiter_.SetMaxRate(kPacketSize * kNumPackets * 8);
-
rtp_sender_->SetStorePacketsStatus(true, kNumPackets);
+ // Set bitrate (in kbps) to fit kNumPackets รก kPacketSize bytes in one second.
+ rtp_sender_->SetTargetBitrate(kNumPackets * kPacketSize * 8);
const uint16_t kStartSequenceNumber = rtp_sender_->SequenceNumber();
std::list<uint16_t> sequence_numbers;
for (int32_t i = 0; i < kNumPackets; ++i) {
@@ -1581,9 +1573,6 @@
rtp_sender_->OnReceivedNACK(sequence_numbers, 0);
EXPECT_EQ(kNumPackets * 2, transport_.packets_sent_);
- // Must be at least 5ms in between retransmission attempts.
- fake_clock_.AdvanceTimeMilliseconds(5);
-
// Resending should not work, bandwidth exceeded.
rtp_sender_->OnReceivedNACK(sequence_numbers, 0);
EXPECT_EQ(kNumPackets * 2, transport_.packets_sent_);
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender_video.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698