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

Unified Diff: webrtc/modules/video_coding/utility/frame_dropper.h

Issue 1750493002: Frame dropper improvements & cleanup (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed comments Created 4 years, 10 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/modules.gyp ('k') | webrtc/modules/video_coding/utility/frame_dropper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/video_coding/utility/frame_dropper.h
diff --git a/webrtc/modules/video_coding/utility/frame_dropper.h b/webrtc/modules/video_coding/utility/frame_dropper.h
index 7ec85ea880508f75be2d66b3a0bd79ca56770a2a..20ff3d79f5c6bb3944a4cd902dc330fb4162663b 100644
--- a/webrtc/modules/video_coding/utility/frame_dropper.h
+++ b/webrtc/modules/video_coding/utility/frame_dropper.h
@@ -53,8 +53,6 @@ class FrameDropper {
virtual void Leak(uint32_t inputFrameRate);
- void UpdateNack(uint32_t nackBytes);
-
// Sets the target bit rate and the frame rate produced by
// the camera.
//
@@ -62,34 +60,39 @@ class FrameDropper {
// - bitRate : The target bit rate
virtual void SetRates(float bitRate, float incoming_frame_rate);
- // Return value : The current average frame rate produced
- // if the DropFrame() function is used as
- // instruction of when to drop frames.
- virtual float ActualFrameRate(uint32_t inputFrameRate) const;
-
private:
- void FillBucket(float inKbits, float outKbits);
void UpdateRatio();
void CapAccumulator();
- rtc::ExpFilter _keyFrameSizeAvgKbits;
- rtc::ExpFilter _keyFrameRatio;
- float _keyFrameSpreadFrames;
- int32_t _keyFrameCount;
- float _accumulator;
- float _accumulatorMax;
- float _targetBitRate;
- bool _dropNext;
- rtc::ExpFilter _dropRatio;
- int32_t _dropCount;
- float _windowSize;
- float _incoming_frame_rate;
- bool _wasBelowMax;
- bool _enabled;
- bool _fastMode;
- float _cap_buffer_size;
- float _max_time_drops;
-}; // end of VCMFrameDropper class
+ rtc::ExpFilter key_frame_ratio_;
+ rtc::ExpFilter delta_frame_size_avg_kbits_;
+
+ // Key frames and large delta frames are not immediately accumulated in the
+ // bucket since they can immediately overflow the bucket leading to large
+ // drops on the following packets that may be much smaller. Instead these
+ // large frames are accumulated over several frames when the bucket leaks.
+
+ // |large_frame_accumulation_spread_| represents the number of frames over
+ // which a large frame is accumulated.
+ float large_frame_accumulation_spread_;
+ // |large_frame_accumulation_count_| represents the number of frames left
+ // to finish accumulating a large frame.
+ int large_frame_accumulation_count_;
+ // |large_frame_accumulation_chunk_size_| represents the size of a single
+ // chunk for large frame accumulation.
+ float large_frame_accumulation_chunk_size_;
+
+ float accumulator_;
+ float accumulator_max_;
+ float target_bitrate_;
+ bool drop_next_;
+ rtc::ExpFilter drop_ratio_;
+ int drop_count_;
+ float incoming_frame_rate_;
+ bool was_below_max_;
+ bool enabled_;
+ const float max_drop_duration_secs_;
+};
} // namespace webrtc
« no previous file with comments | « webrtc/modules/modules.gyp ('k') | webrtc/modules/video_coding/utility/frame_dropper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698