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

Unified Diff: webrtc/video/vie_encoder.h

Issue 2716643002: Add framerate to VideoSinkWants and ability to signal on overuse (Closed)
Patch Set: Comments Created 3 years, 9 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/video/video_send_stream_tests.cc ('k') | webrtc/video/vie_encoder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/vie_encoder.h
diff --git a/webrtc/video/vie_encoder.h b/webrtc/video/vie_encoder.h
index c0b80baadd6e948c918b8f75fb704b5b77b4e2b4..d0325fe6d9de47255e4729fccaf1b5ce86989a4e 100644
--- a/webrtc/video/vie_encoder.h
+++ b/webrtc/video/vie_encoder.h
@@ -11,6 +11,7 @@
#ifndef WEBRTC_VIDEO_VIE_ENCODER_H_
#define WEBRTC_VIDEO_VIE_ENCODER_H_
+#include <map>
#include <memory>
#include <string>
#include <vector>
@@ -62,7 +63,9 @@ class ViEEncoder : public rtc::VideoSinkInterface<VideoFrame>,
};
// Downscale resolution at most 2 times for CPU reasons.
- static const int kMaxCpuDowngrades = 2;
+ static const int kMaxCpuResolutionDowngrades = 2;
+ // Downscale framerate at most 4 times.
+ static const int kMaxCpuFramerateDowngrades = 4;
ViEEncoder(uint32_t number_of_cores,
SendStatisticsProxy* stats_proxy,
@@ -174,6 +177,11 @@ class ViEEncoder : public rtc::VideoSinkInterface<VideoFrame>,
void TraceFrameDropStart();
void TraceFrameDropEnd();
+ const std::vector<int>& GetScaleCounters()
+ EXCLUSIVE_LOCKS_REQUIRED(&encoder_queue_);
+ void IncrementScaleCounter(int reason, int delta)
+ EXCLUSIVE_LOCKS_REQUIRED(&encoder_queue_);
+
rtc::Event shutdown_event_;
const uint32_t number_of_cores_;
@@ -216,8 +224,11 @@ class ViEEncoder : public rtc::VideoSinkInterface<VideoFrame>,
uint64_t picture_id_rpsi_ ACCESS_ON(&encoder_queue_);
Clock* const clock_;
// Counters used for deciding if the video resolution is currently
- // restricted, and if so, why.
- std::vector<int> scale_counter_ ACCESS_ON(&encoder_queue_);
+ // restricted, and if so, why, on a per degradation preference basis.
+ // TODO(sprang): Replace this with a state holding a relative overuse measure
+ // instead, that can be translated into suitable down-scale or fps limit.
+ std::map<const VideoSendStream::DegradationPreference, std::vector<int>>
+ scale_counters_ ACCESS_ON(&encoder_queue_);
// Set depending on degradation preferences
VideoSendStream::DegradationPreference degradation_preference_
ACCESS_ON(&encoder_queue_);
@@ -225,6 +236,8 @@ class ViEEncoder : public rtc::VideoSinkInterface<VideoFrame>,
struct AdaptationRequest {
// The pixel count produced by the source at the time of the adaptation.
int input_pixel_count_;
+ // Framerate received from the source at the time of the adaptation.
+ int framerate_fps_;
// Indicates if request was to adapt up or down.
enum class Mode { kAdaptUp, kAdaptDown } mode_;
};
« no previous file with comments | « webrtc/video/video_send_stream_tests.cc ('k') | webrtc/video/vie_encoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698