Index: webrtc/video/rampup_tests.h |
diff --git a/webrtc/video/rampup_tests.h b/webrtc/video/rampup_tests.h |
index 62edda3406f8df30aa0be82e46fc6e53b139eb27..ddab712dec25013a5a30fd1a44ff4ea3021c4761 100644 |
--- a/webrtc/video/rampup_tests.h |
+++ b/webrtc/video/rampup_tests.h |
@@ -36,133 +36,97 @@ class RtpHeaderParser; |
class RTPPayloadRegistry; |
class RtpRtcp; |
-class StreamObserver : public newapi::Transport, public RemoteBitrateObserver { |
+class RampUpTester : public test::EndToEndTest { |
public: |
- typedef std::map<uint32_t, int> BytesSentMap; |
- typedef std::map<uint32_t, uint32_t> SsrcMap; |
- StreamObserver(const SsrcMap& rtx_media_ssrcs, |
- newapi::Transport* feedback_transport, |
- Clock* clock); |
- virtual ~StreamObserver(); |
- |
- void set_expected_bitrate_bps(unsigned int expected_bitrate_bps); |
- |
- void set_start_bitrate_bps(unsigned int start_bitrate_bps); |
- |
- void OnReceiveBitrateChanged(const std::vector<unsigned int>& ssrcs, |
- unsigned int bitrate) override; |
+ RampUpTester(size_t num_streams, |
+ unsigned int start_bitrate_bps, |
+ const std::string& extension_type, |
+ bool rtx, |
+ bool red); |
+ ~RampUpTester() override; |
- bool SendRtp(const uint8_t* packet, size_t length) override; |
+ void PerformTest() override; |
- bool SendRtcp(const uint8_t* packet, size_t length) override; |
- |
- EventTypeWrapper Wait(); |
- |
- void SetRemoteBitrateEstimator(RemoteBitrateEstimator* rbe); |
+ protected: |
+ virtual bool PollStats(); |
- PacketRouter* GetPacketRouter(); |
+ void GetStats(const VideoSendStream::StreamStats& stream, |
+ size_t* total_packets_sent, |
+ size_t* total_sent, |
+ size_t* padding_sent, |
+ size_t* media_sent) const; |
- private: |
void ReportResult(const std::string& measurement, |
size_t value, |
- const std::string& units); |
- void TriggerTestDone() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ const std::string& units) const; |
+ void TriggerTestDone(); |
+ rtc::Event event_; |
Clock* const clock_; |
- const rtc::scoped_ptr<EventWrapper> test_done_; |
- const rtc::scoped_ptr<RtpHeaderParser> rtp_parser_; |
- rtc::scoped_ptr<RtpRtcp> rtp_rtcp_; |
- rtc::scoped_ptr<PacketRouter> packet_router_; |
- internal::TransportAdapter feedback_transport_; |
- const rtc::scoped_ptr<ReceiveStatistics> receive_stats_; |
- const rtc::scoped_ptr<RTPPayloadRegistry> payload_registry_; |
- rtc::scoped_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_; |
- |
- rtc::CriticalSection crit_; |
- unsigned int expected_bitrate_bps_ GUARDED_BY(crit_); |
- unsigned int start_bitrate_bps_ GUARDED_BY(crit_); |
- SsrcMap rtx_media_ssrcs_ GUARDED_BY(crit_); |
- size_t total_sent_ GUARDED_BY(crit_); |
- size_t padding_sent_ GUARDED_BY(crit_); |
- size_t rtx_media_sent_ GUARDED_BY(crit_); |
- int total_packets_sent_ GUARDED_BY(crit_); |
- int padding_packets_sent_ GUARDED_BY(crit_); |
- int rtx_media_packets_sent_ GUARDED_BY(crit_); |
- int64_t test_start_ms_ GUARDED_BY(crit_); |
- int64_t ramp_up_finished_ms_ GUARDED_BY(crit_); |
-}; |
- |
-class LowRateStreamObserver : public test::DirectTransport, |
- public RemoteBitrateObserver, |
- public PacketReceiver { |
- public: |
- LowRateStreamObserver(newapi::Transport* feedback_transport, |
- Clock* clock, |
- size_t number_of_streams, |
- bool rtx_used); |
- |
- virtual void SetSendStream(VideoSendStream* send_stream); |
- |
- virtual void OnReceiveBitrateChanged(const std::vector<unsigned int>& ssrcs, |
- unsigned int bitrate); |
- |
- bool SendRtp(const uint8_t* data, size_t length) override; |
- |
- DeliveryStatus DeliverPacket(MediaType media_type, |
- const uint8_t* packet, |
- size_t length, |
- const PacketTime& packet_time) override; |
- |
- bool SendRtcp(const uint8_t* packet, size_t length) override; |
- |
- // Produces a string similar to "1stream_nortx", depending on the values of |
- // number_of_streams_ and rtx_used_; |
- std::string GetModifierString(); |
- |
- // This method defines the state machine for the ramp up-down-up test. |
- void EvolveTestState(unsigned int bitrate_bps); |
- |
- EventTypeWrapper Wait(); |
+ const size_t num_streams_; |
+ const bool rtx_; |
+ const bool red_; |
+ VideoSendStream* send_stream_; |
private: |
- static const unsigned int kHighBandwidthLimitBps = 80000; |
- static const unsigned int kExpectedHighBitrateBps = 60000; |
- static const unsigned int kLowBandwidthLimitBps = 20000; |
- static const unsigned int kExpectedLowBitrateBps = 20000; |
- enum TestStates { kFirstRampup, kLowRate, kSecondRampup }; |
+ typedef std::map<uint32_t, uint32_t> SsrcMap; |
- Clock* const clock_; |
- const size_t number_of_streams_; |
- const bool rtx_used_; |
- const rtc::scoped_ptr<EventWrapper> test_done_; |
- const rtc::scoped_ptr<RtpHeaderParser> rtp_parser_; |
- const rtc::scoped_ptr<RTPPayloadRegistry> payload_registry_; |
- rtc::scoped_ptr<RtpRtcp> rtp_rtcp_; |
- internal::TransportAdapter feedback_transport_; |
- const rtc::scoped_ptr<ReceiveStatistics> receive_stats_; |
- rtc::scoped_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_; |
- |
- rtc::CriticalSection crit_; |
- VideoSendStream* send_stream_ GUARDED_BY(crit_); |
- FakeNetworkPipe::Config forward_transport_config_ GUARDED_BY(crit_); |
- TestStates test_state_ GUARDED_BY(crit_); |
- int64_t state_start_ms_ GUARDED_BY(crit_); |
- int64_t interval_start_ms_ GUARDED_BY(crit_); |
- unsigned int last_remb_bps_ GUARDED_BY(crit_); |
- size_t sent_bytes_ GUARDED_BY(crit_); |
- size_t total_overuse_bytes_ GUARDED_BY(crit_); |
- bool suspended_in_stats_ GUARDED_BY(crit_); |
+ Call::Config GetSenderCallConfig() override; |
+ void OnStreamsCreated( |
+ VideoSendStream* send_stream, |
+ const std::vector<VideoReceiveStream*>& receive_streams) override; |
+ size_t GetNumStreams() const; |
+ void ModifyConfigs(VideoSendStream::Config* send_config, |
+ std::vector<VideoReceiveStream::Config>* receive_configs, |
+ VideoEncoderConfig* encoder_config) override; |
+ void OnCallsCreated(Call* sender_call, Call* receiver_call) override; |
+ |
+ static bool BitrateStatsPollingThread(void* obj); |
+ |
+ const int start_bitrate_bps_; |
+ bool start_bitrate_verified_; |
+ int expected_bitrate_bps_; |
+ int64_t test_start_ms_; |
+ int64_t ramp_up_finished_ms_; |
+ |
+ const std::string extension_type_; |
+ std::vector<uint32_t> ssrcs_; |
+ std::vector<uint32_t> rtx_ssrcs_; |
+ SsrcMap rtx_ssrc_map_; |
+ |
+ rtc::scoped_ptr<ThreadWrapper> poller_thread_; |
+ Call* sender_call_; |
}; |
-class RampUpTest : public test::CallTest { |
- protected: |
- void RunRampUpTest(size_t num_streams, |
+class RampUpDownUpTester : public RampUpTester { |
+ public: |
+ RampUpDownUpTester(size_t num_streams, |
unsigned int start_bitrate_bps, |
const std::string& extension_type, |
bool rtx, |
bool red); |
+ ~RampUpDownUpTester() override; |
+ |
+ protected: |
+ bool PollStats() override; |
+ |
+ private: |
+ static const int kHighBandwidthLimitBps = 80000; |
+ static const int kExpectedHighBitrateBps = 60000; |
+ static const int kLowBandwidthLimitBps = 20000; |
+ static const int kExpectedLowBitrateBps = 20000; |
+ enum TestStates { kFirstRampup, kLowRate, kSecondRampup }; |
+ |
+ Call::Config GetReceiverCallConfig() override; |
+ |
+ std::string GetModifierString() const; |
+ void EvolveTestState(int bitrate_bps, bool suspended); |
- void RunRampUpDownUpTest(size_t number_of_streams, bool rtx, bool red); |
+ FakeNetworkPipe::Config forward_transport_config_; |
+ TestStates test_state_; |
+ int64_t state_start_ms_; |
+ int64_t interval_start_ms_; |
+ int sent_bytes_; |
}; |
} // namespace webrtc |
#endif // WEBRTC_VIDEO_RAMPUP_TESTS_H_ |