Index: webrtc/modules/remote_bitrate_estimator/test/packet_sender.h |
diff --git a/webrtc/modules/remote_bitrate_estimator/test/packet_sender.h b/webrtc/modules/remote_bitrate_estimator/test/packet_sender.h |
index 2e690c83770c7c6b0c2e9f8b951b957e2319e9bb..8f0b3cdfcb9c4282d58b038ff5cab2eead29a10d 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/test/packet_sender.h |
+++ b/webrtc/modules/remote_bitrate_estimator/test/packet_sender.h |
@@ -42,6 +42,8 @@ class PacketSender : public PacketProcessor { |
virtual int GetFeedbackIntervalMs() const = 0; |
void SetSenderTimestamps(Packets* in_out); |
+ virtual uint32_t TargetBitrateKbps() { return 0; } |
+ |
protected: |
SimulatedClock clock_; |
}; |
@@ -58,22 +60,29 @@ class VideoSender : public PacketSender, public BitrateObserver { |
virtual VideoSource* source() const { return source_; } |
+ uint32_t TargetBitrateKbps() override; |
+ |
// Implements BitrateObserver. |
void OnNetworkChanged(uint32_t target_bitrate_bps, |
uint8_t fraction_lost, |
int64_t rtt) override; |
+ void Pause(); |
+ void Resume(); |
+ |
protected: |
void ProcessFeedbackAndGeneratePackets(int64_t time_ms, |
std::list<FeedbackPacket*>* feedbacks, |
Packets* generated); |
+ bool running_; |
VideoSource* source_; |
rtc::scoped_ptr<BweSender> bwe_; |
int64_t start_of_run_ms_; |
std::list<Module*> modules_; |
private: |
+ uint32_t previous_sending_bitrate_; |
DISALLOW_COPY_AND_ASSIGN(VideoSender); |
}; |
@@ -112,28 +121,24 @@ class PacedVideoSender : public VideoSender, public PacedSender::Callback { |
class TcpSender : public PacketSender { |
public: |
- TcpSender(PacketProcessorListener* listener, int flow_id, int64_t offset_ms) |
- : PacketSender(listener, flow_id), |
- cwnd_(10), |
- ssthresh_(std::numeric_limits<int>::max()), |
- ack_received_(false), |
- last_acked_seq_num_(0), |
- next_sequence_number_(0), |
- offset_ms_(offset_ms), |
- last_reduction_time_ms_(-1), |
- last_rtt_ms_(0) {} |
- |
+ TcpSender(PacketProcessorListener* listener, int flow_id, int64_t offset_ms); |
+ TcpSender(PacketProcessorListener* listener, |
+ int flow_id, |
+ int64_t offset_ms, |
+ int send_limit_bytes); |
virtual ~TcpSender() {} |
void RunFor(int64_t time_ms, Packets* in_out) override; |
int GetFeedbackIntervalMs() const override { return 10; } |
+ uint32_t TargetBitrateKbps() override; |
+ |
private: |
struct InFlight { |
public: |
InFlight(const MediaPacket& packet) |
: sequence_number(packet.header().sequenceNumber), |
- time_ms(packet.send_time_us() / 1000) {} |
+ time_ms(packet.send_time_ms()) {} |
InFlight(uint16_t seq_num, int64_t now_ms) |
: sequence_number(seq_num), time_ms(now_ms) {} |
@@ -153,6 +158,7 @@ class TcpSender : public PacketSender { |
int TriggerTimeouts(); |
void HandleLoss(); |
Packets GeneratePackets(size_t num_packets); |
+ void UpdateSendBitrateEstimate(size_t num_packets); |
float cwnd_; |
int ssthresh_; |
@@ -163,6 +169,12 @@ class TcpSender : public PacketSender { |
int64_t offset_ms_; |
int64_t last_reduction_time_ms_; |
int64_t last_rtt_ms_; |
+ int total_sent_bytes_; |
+ int send_limit_bytes_; // Initialized by default as kNoLimit. |
+ bool running_; // Initialized by default as true. |
+ int64_t last_generated_packets_ms_; |
+ size_t num_recent_sent_packets_; |
+ uint32_t bitrate_kbps_; |
}; |
} // namespace bwe |
} // namespace testing |