Chromium Code Reviews| Index: webrtc/modules/pacing/bitrate_prober.h |
| diff --git a/webrtc/modules/pacing/bitrate_prober.h b/webrtc/modules/pacing/bitrate_prober.h |
| index fc0e13fb676cf4b3072c52e5eeaca5bcb6709ced..169e6268f33afd8cbcb10298ad066dfaed650206 100644 |
| --- a/webrtc/modules/pacing/bitrate_prober.h |
| +++ b/webrtc/modules/pacing/bitrate_prober.h |
| @@ -24,6 +24,20 @@ class BitrateProber { |
| public: |
| BitrateProber(); |
| + enum class State { |
|
danilchap
2016/08/19 17:19:34
what move this enum type into public part?
No publ
Irfan
2016/08/23 05:46:57
Done. It used to return in an earlier PS.
|
| + // Initial state. No probe clusters have been set up yet for probing. |
| + kInit, |
| + // Probe clusters have been set up and probes are being sent. |
| + kSending, |
| + // Probes have been sent, waiting on probing results. |
| + kWaitForResult, |
| + // Probing is complete. No active probing until an explicit |
| + // request for probing. |
| + kComplete, |
| + // Probing disabled. No probing until explicitly enabled again. |
| + kDisabled, |
| + }; |
| + |
| void SetEnabled(bool enable); |
| // Returns true if the prober is in a probing session, i.e., it currently |
| @@ -31,14 +45,18 @@ class BitrateProber { |
| // TimeUntilNextProbe(). |
| bool IsProbing() const; |
| + bool IsExpectingProbingResults() const; |
| + |
| + void SetEstimatedBitrate(int bitrate_bps); |
| + |
| // Initializes a new probing session if the prober is allowed to probe. Does |
| // not initialize the prober unless the packet size is large enough to probe |
| // with. |
| - void OnIncomingPacket(size_t packet_size); |
| + void OnIncomingPacket(int64_t now_ms, size_t packet_size); |
| // Create a cluster used to probe for |bitrate_bps| with |num_packets| number |
| // of packets. |
| - void ProbeAtBitrate(uint32_t bitrate_bps, int num_packets); |
| + void ProbeAtBitrate(int bitrate_bps, int num_packets); |
| // Returns the number of milliseconds until the next packet should be sent to |
| // get accurate probing. |
| @@ -51,24 +69,11 @@ class BitrateProber { |
| // packet. |
| size_t RecommendedPacketSize() const; |
| - // Called to report to the prober that a packet has been sent, which helps the |
| - // prober know when to move to the next packet in a probe. |
| + // Notifies the prober that a probe packet has been sent, which helps the |
| + // prober move to the next packet in a probe. |
| void PacketSent(int64_t now_ms, size_t packet_size); |
| private: |
| - enum class ProbingState { |
| - // Probing will not be triggered in this state at all times. |
| - kDisabled, |
| - // Probing is enabled and ready to trigger on the first packet arrival. |
| - kInactive, |
| - // Probe cluster is filled with the set of data rates to be probed and |
| - // probes are being sent. |
| - kActive, |
| - // Probing is enabled, but currently suspended until an explicit trigger |
| - // to start probing again. |
| - kSuspended, |
| - }; |
| - |
| struct ProbeCluster { |
| int max_probe_packets = 0; |
| int sent_probe_packets = 0; |
| @@ -79,7 +84,7 @@ class BitrateProber { |
| // Resets the state of the prober and clears any cluster/timing data tracked. |
| void ResetState(); |
| - ProbingState probing_state_; |
| + State probing_state_; |
| // Probe bitrate per packet. These are used to compute the delta relative to |
| // the previous probe packet based on the size and time when that packet was |
| // sent. |
| @@ -88,6 +93,8 @@ class BitrateProber { |
| // The last time a probe was sent. |
| int64_t time_last_probe_sent_ms_; |
| int next_cluster_id_; |
| + int min_bitrate_to_probe_further_; |
| + int estimated_bitrate_bps_; |
| }; |
| } // namespace webrtc |
| #endif // WEBRTC_MODULES_PACING_BITRATE_PROBER_H_ |