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

Unified Diff: webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc

Issue 2636443002: Add experimental simulcast screen content mode (Closed)
Patch Set: Rebase, again Created 3 years, 11 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
Index: webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
diff --git a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
index feb8da9f28c43e935928f51c21384204bb2c66ef..aca4514279f8f3a6c08ad4b3ebc2bd94018d0a53 100644
--- a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
+++ b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
@@ -30,6 +30,8 @@ static const int kQpDeltaThresholdForSync = 8;
const double ScreenshareLayers::kMaxTL0FpsReduction = 2.5;
const double ScreenshareLayers::kAcceptableTargetOvershoot = 2.0;
+constexpr int ScreenshareLayers::kMaxNumTemporalLayers;
+
// Since this is TL0 we only allow updating and predicting from the LAST
// reference frame.
const int ScreenshareLayers::kTl0Flags =
@@ -55,8 +57,14 @@ webrtc::TemporalLayers* ScreenshareTemporalLayersFactory::Create(
int simulcast_id,
int num_temporal_layers,
uint8_t initial_tl0_pic_idx) const {
- webrtc::TemporalLayers* tl = new webrtc::ScreenshareLayers(
- num_temporal_layers, rand(), webrtc::Clock::GetRealTimeClock());
+ webrtc::TemporalLayers* tl;
+ if (simulcast_id == 0) {
+ tl = new webrtc::ScreenshareLayers(num_temporal_layers, rand(),
+ webrtc::Clock::GetRealTimeClock());
+ } else {
+ RealTimeTemporalLayersFactory rt_tl_factory;
+ tl = rt_tl_factory.Create(simulcast_id, num_temporal_layers, rand());
+ }
if (listener_)
listener_->OnTemporalLayersCreated(simulcast_id, tl);
return tl;
@@ -66,7 +74,8 @@ ScreenshareLayers::ScreenshareLayers(int num_temporal_layers,
uint8_t initial_tl0_pic_idx,
Clock* clock)
: clock_(clock),
- number_of_temporal_layers_(num_temporal_layers),
+ number_of_temporal_layers_(
+ std::min(kMaxNumTemporalLayers, num_temporal_layers)),
last_base_layer_sync_(false),
tl0_pic_idx_(initial_tl0_pic_idx),
active_layer_(-1),
@@ -78,8 +87,8 @@ ScreenshareLayers::ScreenshareLayers(int num_temporal_layers,
max_debt_bytes_(0),
encode_framerate_(1000.0f, 1000.0f), // 1 second window, second scale.
bitrate_updated_(false) {
- RTC_CHECK_GT(num_temporal_layers, 0);
- RTC_CHECK_LE(num_temporal_layers, 2);
+ RTC_CHECK_GT(number_of_temporal_layers_, 0);
+ RTC_CHECK_LE(number_of_temporal_layers_, kMaxNumTemporalLayers);
}
ScreenshareLayers::~ScreenshareLayers() {
« no previous file with comments | « webrtc/modules/video_coding/codecs/vp8/screenshare_layers.h ('k') | webrtc/modules/video_coding/video_codec_initializer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698