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

Unified Diff: webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.h

Issue 2126793002: Reset InterArrival if arrival time clock makes a jump. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cleanup 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
Index: webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.h
diff --git a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h b/webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.h
similarity index 66%
copy from webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h
copy to webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.h
index b4bff670e75529e3a8fb36bcf17bb96ce30c4301..fb3028a8fa8ec6d4c5eeb0b659881fdf9b1003d6 100644
--- a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h
+++ b/webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+ * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
@@ -8,8 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_REMOTE_BITRATE_ESTIMATOR_UNITTEST_HELPER_H_
-#define WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_REMOTE_BITRATE_ESTIMATOR_UNITTEST_HELPER_H_
+#ifndef WEBRTC_MODULES_CONGESTION_CONTROLLER_DELAY_BASED_BWE_UNITTEST_HELPER_H_
+#define WEBRTC_MODULES_CONGESTION_CONTROLLER_DELAY_BASED_BWE_UNITTEST_HELPER_H_
#include <list>
#include <map>
@@ -23,7 +23,7 @@
#include "webrtc/system_wrappers/include/clock.h"
namespace webrtc {
-namespace testing {
+namespace test {
class TestBitrateObserver : public RemoteBitrateObserver {
public:
@@ -46,72 +46,36 @@ class TestBitrateObserver : public RemoteBitrateObserver {
class RtpStream {
public:
- struct RtpPacket {
- int64_t send_time;
- int64_t arrival_time;
- uint32_t rtp_timestamp;
- size_t size;
- uint32_t ssrc;
- };
-
- struct RtcpPacket {
- uint32_t ntp_secs;
- uint32_t ntp_frac;
- uint32_t timestamp;
- uint32_t ssrc;
- };
-
- typedef std::list<RtpPacket*> PacketList;
-
enum { kSendSideOffsetUs = 1000000 };
- RtpStream(int fps,
- int bitrate_bps,
- uint32_t ssrc,
- uint32_t frequency,
- uint32_t timestamp_offset,
- int64_t rtcp_receive_time);
- void set_rtp_timestamp_offset(uint32_t offset);
+ RtpStream(int fps, int bitrate_bps);
// Generates a new frame for this stream. If called too soon after the
// previous frame, no frame will be generated. The frame is split into
// packets.
- int64_t GenerateFrame(int64_t time_now_us, PacketList* packets);
+ int64_t GenerateFrame(int64_t time_now_us, std::vector<PacketInfo>* packets);
// The send-side time when the next frame can be generated.
double next_rtp_time() const;
- // Generates an RTCP packet.
- RtcpPacket* Rtcp(int64_t time_now_us);
-
void set_bitrate_bps(int bitrate_bps);
int bitrate_bps() const;
- uint32_t ssrc() const;
-
- static bool Compare(const std::pair<uint32_t, RtpStream*>& left,
- const std::pair<uint32_t, RtpStream*>& right);
+ static bool Compare(const std::unique_ptr<RtpStream>& lhs,
+ const std::unique_ptr<RtpStream>& rhs);
private:
- enum { kRtcpIntervalUs = 1000000 };
-
int fps_;
int bitrate_bps_;
- uint32_t ssrc_;
- uint32_t frequency_;
int64_t next_rtp_time_;
- int64_t next_rtcp_time_;
- uint32_t rtp_timestamp_offset_;
- const double kNtpFracPerMs;
+ uint16_t sequence_number_;
RTC_DISALLOW_COPY_AND_ASSIGN(RtpStream);
};
class StreamGenerator {
public:
- typedef std::list<RtpStream::RtcpPacket*> RtcpList;
-
StreamGenerator(int capacity, double time_now);
~StreamGenerator();
@@ -131,30 +95,26 @@ class StreamGenerator {
// TODO(holmer): Break out the channel simulation part from this class to make
// it possible to simulate different types of channels.
- int64_t GenerateFrame(RtpStream::PacketList* packets, int64_t time_now_us);
+ int64_t GenerateFrame(std::vector<PacketInfo>* packets, int64_t time_now_us);
private:
- typedef std::map<uint32_t, RtpStream*> StreamMap;
-
// Capacity of the simulated channel in bits per second.
int capacity_;
// The time when the last packet arrived.
int64_t prev_arrival_time_us_;
// All streams being transmitted on this simulated channel.
- StreamMap streams_;
+ std::vector<std::unique_ptr<RtpStream>> streams_;
RTC_DISALLOW_COPY_AND_ASSIGN(StreamGenerator);
};
-} // namespace testing
+} // namespace test
-class RemoteBitrateEstimatorTest : public ::testing::Test {
+class DelayBasedBweTest : public ::testing::Test {
philipel 2016/07/06 13:36:36 Can we rename this to something else? The problem
stefan-webrtc 2016/07/06 14:53:24 I'm removing the existing test class the existing
philipel 2016/07/07 08:11:38 Acknowledged.
public:
- RemoteBitrateEstimatorTest();
- virtual ~RemoteBitrateEstimatorTest();
+ DelayBasedBweTest();
+ virtual ~DelayBasedBweTest();
protected:
- virtual void SetUp() = 0;
-
void AddDefaultStream();
// Helper to convert some time format to resolution used in absolute send time
@@ -166,14 +126,16 @@ class RemoteBitrateEstimatorTest : public ::testing::Test {
// Helper to add two absolute send time values and keep it less than 1<<24.
static uint32_t AddAbsSendTime(uint32_t t1, uint32_t t2);
- // Helper to create a WebRtcRTPHeader containing the relevant data for the
- // estimator (all other fields are cleared) and call IncomingPacket on the
- // estimator.
- void IncomingPacket(uint32_t ssrc,
- size_t payload_size,
- int64_t arrival_time,
- uint32_t rtp_timestamp,
- uint32_t absolute_send_time);
+ // Helpers to insert a single packet into the delay-based BWE.
+ void IncomingPacket(size_t payload_size,
+ int64_t arrival_time_ms,
+ int64_t send_time_ms,
+ uint16_t sequence_number);
+ void IncomingPacket(size_t payload_size,
+ int64_t arrival_time_ms,
+ int64_t send_time_ms,
+ uint16_t sequence_number,
+ int probe_cluster_id);
// Generates a frame of packets belonging to a stream at a given bitrate and
// with a given ssrc. The stream is pushed through a very simple simulated
@@ -203,18 +165,19 @@ class RemoteBitrateEstimatorTest : public ::testing::Test {
void RateIncreaseRtpTimestampsTestHelper(int expected_iterations);
void CapacityDropTestHelper(int number_of_streams,
bool wrap_time_stamp,
- uint32_t expected_bitrate_drop_delta);
+ uint32_t expected_bitrate_drop_delta,
+ int64_t receiver_clock_offset_change_ms);
static const uint32_t kDefaultSsrc;
- static const int kArrivalTimeClockOffsetMs = 60000;
SimulatedClock clock_; // Time at the receiver.
- std::unique_ptr<testing::TestBitrateObserver> bitrate_observer_;
+ std::unique_ptr<test::TestBitrateObserver> bitrate_observer_;
std::unique_ptr<RemoteBitrateEstimator> bitrate_estimator_;
- std::unique_ptr<testing::StreamGenerator> stream_generator_;
+ std::unique_ptr<test::StreamGenerator> stream_generator_;
+ int64_t arrival_time_offset_ms_;
- RTC_DISALLOW_COPY_AND_ASSIGN(RemoteBitrateEstimatorTest);
+ RTC_DISALLOW_COPY_AND_ASSIGN(DelayBasedBweTest);
};
} // namespace webrtc
-#endif // WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_REMOTE_BITRATE_ESTIMATOR_UNITTEST_HELPER_H_
+#endif // WEBRTC_MODULES_CONGESTION_CONTROLLER_DELAY_BASED_BWE_UNITTEST_HELPER_H_

Powered by Google App Engine
This is Rietveld 408576698