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

Unified Diff: webrtc/media/engine/webrtcvideoengine2.cc

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/media/engine/webrtcvideoengine2.h ('k') | webrtc/media/engine/webrtcvideoengine2_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/engine/webrtcvideoengine2.cc
diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc
index f5682edfe65638877736145b50eadc5925fa2c92..fceff8994bb71a5639e75a635255136df6dd59b5 100644
--- a/webrtc/media/engine/webrtcvideoengine2.cc
+++ b/webrtc/media/engine/webrtcvideoengine2.cc
@@ -38,9 +38,10 @@
#include "webrtc/video_decoder.h"
#include "webrtc/video_encoder.h"
+using DegradationPreference = webrtc::VideoSendStream::DegradationPreference;
+
namespace cricket {
namespace {
-
// If this field trial is enabled, we will enable sending FlexFEC and disable
// sending ULPFEC whenever the former has been negotiated. Receiving FlexFEC
// is enabled whenever FlexFEC has been negotiated.
@@ -1637,26 +1638,35 @@ bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend(
}
if (source_ && stream_) {
- stream_->SetSource(
- nullptr, webrtc::VideoSendStream::DegradationPreference::kBalanced);
+ stream_->SetSource(nullptr, DegradationPreference::kDegradationDisabled);
}
// Switch to the new source.
source_ = source;
if (source && stream_) {
- // Do not adapt resolution for screen content as this will likely
- // result in blurry and unreadable text.
- // |this| acts like a VideoSource to make sure SinkWants are handled on the
- // correct thread.
- stream_->SetSource(
- this, enable_cpu_overuse_detection_ &&
- !parameters_.options.is_screencast.value_or(false)
- ? webrtc::VideoSendStream::DegradationPreference::kBalanced
- : webrtc::VideoSendStream::DegradationPreference::
- kMaintainResolution);
+ stream_->SetSource(this, GetDegradationPreference());
}
return true;
}
+webrtc::VideoSendStream::DegradationPreference
+WebRtcVideoChannel2::WebRtcVideoSendStream::GetDegradationPreference() const {
+ // Do not adapt resolution for screen content as this will likely
+ // result in blurry and unreadable text.
+ // |this| acts like a VideoSource to make sure SinkWants are handled on the
+ // correct thread.
+ DegradationPreference degradation_preference;
+ if (!enable_cpu_overuse_detection_) {
+ degradation_preference = DegradationPreference::kDegradationDisabled;
+ } else {
+ if (parameters_.options.is_screencast.value_or(false)) {
+ degradation_preference = DegradationPreference::kMaintainResolution;
+ } else {
+ degradation_preference = DegradationPreference::kMaintainFramerate;
+ }
+ }
+ return degradation_preference;
+}
+
const std::vector<uint32_t>&
WebRtcVideoChannel2::WebRtcVideoSendStream::GetSsrcs() const {
return ssrcs_;
@@ -2094,16 +2104,7 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::RecreateWebRtcStream() {
parameters_.encoder_config.encoder_specific_settings = NULL;
if (source_) {
- // Do not adapt resolution for screen content as this will likely result in
- // blurry and unreadable text.
- // |this| acts like a VideoSource to make sure SinkWants are handled on the
- // correct thread.
- stream_->SetSource(
- this, enable_cpu_overuse_detection_ &&
- !parameters_.options.is_screencast.value_or(false)
- ? webrtc::VideoSendStream::DegradationPreference::kBalanced
- : webrtc::VideoSendStream::DegradationPreference::
- kMaintainResolution);
+ stream_->SetSource(this, GetDegradationPreference());
}
// Call stream_->Start() if necessary conditions are met.
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.h ('k') | webrtc/media/engine/webrtcvideoengine2_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698