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

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

Issue 2860063002: Remove layer_sync from TL frame config. (Closed)
Patch Set: remove enum Created 3 years, 7 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 6bfd03fb50b9abb8500301aa6beced6945231b5a..d535c617cd19ae1e028d4dddde655477ac61b1b4 100644
--- a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
+++ b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
@@ -93,8 +93,10 @@ TemporalLayers::FrameConfig ScreenshareLayers::UpdateLayerConfig(
if (number_of_temporal_layers_ <= 1) {
// No flags needed for 1 layer screenshare.
// TODO(pbos): Consider updating only last, and not all buffers.
- return TemporalLayers::FrameConfig(kReferenceAndUpdate, kReferenceAndUpdate,
- kReferenceAndUpdate);
+ TemporalLayers::FrameConfig tl_config(
+ kReferenceAndUpdate, kReferenceAndUpdate, kReferenceAndUpdate);
+ tl_config.pattern_idx = static_cast<int>(kTl1);
+ return tl_config;
}
const int64_t now_ms = clock_->TimeInMilliseconds();
@@ -108,8 +110,7 @@ TemporalLayers::FrameConfig ScreenshareLayers::UpdateLayerConfig(
stats_.first_frame_time_ms_ = now_ms;
int64_t unwrapped_timestamp = time_wrap_handler_.Unwrap(timestamp);
- enum TemporalLayerState { kDrop, kTl0, kTl1, kTl1Sync };
- enum TemporalLayerState layer_state = kDrop;
+ TemporalLayerState layer_state = kDrop;
if (active_layer_ == -1 ||
layers_[active_layer_].state != TemporalLayer::State::kDropped) {
if (last_emitted_tl0_timestamp_ != -1 &&
@@ -163,27 +164,33 @@ TemporalLayers::FrameConfig ScreenshareLayers::UpdateLayerConfig(
layers_[0].UpdateDebt(ts_diff / 90);
layers_[1].UpdateDebt(ts_diff / 90);
last_timestamp_ = timestamp;
+ TemporalLayers::FrameConfig tl_config;
// TODO(pbos): Consider referencing but not updating the 'alt' buffer for all
// layers.
switch (layer_state) {
case kDrop:
- return TemporalLayers::FrameConfig(kNone, kNone, kNone);
+ tl_config = TemporalLayers::FrameConfig(kNone, kNone, kNone);
+ break;
case kTl0:
// TL0 only references and updates 'last'.
- return TemporalLayers::FrameConfig(kReferenceAndUpdate, kNone, kNone);
+ tl_config =
+ TemporalLayers::FrameConfig(kReferenceAndUpdate, kNone, kNone);
+ break;
case kTl1:
// TL1 references both 'last' and 'golden' but only updates 'golden'.
- return TemporalLayers::FrameConfig(kReference, kReferenceAndUpdate,
- kNone);
+ tl_config =
+ TemporalLayers::FrameConfig(kReference, kReferenceAndUpdate, kNone);
+ break;
case kTl1Sync:
// Predict from only TL0 to allow participants to switch to the high
// bitrate stream. Updates 'golden' so that TL1 can continue to refer to
// and update 'golden' from this point on.
- return TemporalLayers::FrameConfig(kReference, kUpdate, kNone,
- kLayerSync);
+ tl_config = TemporalLayers::FrameConfig(kReference, kUpdate, kNone);
+ break;
}
- RTC_NOTREACHED();
- return TemporalLayers::FrameConfig(kNone, kNone, kNone);
+
+ tl_config.pattern_idx = static_cast<int>(layer_state);
+ return tl_config;
}
std::vector<uint32_t> ScreenshareLayers::OnRatesUpdated(int bitrate_kbps,
@@ -265,10 +272,20 @@ void ScreenshareLayers::PopulateCodecSpecific(
vp8_info->layerSync = false;
vp8_info->tl0PicIdx = kNoTl0PicIdx;
} else {
- // TODO(pbos): Add active_layer_ to TemporalLayers::FrameConfig (as
- // pattern_idx) and make function const.
- RTC_DCHECK_NE(-1, active_layer_);
- vp8_info->temporalIdx = active_layer_;
+ TemporalLayerState layer_state =
+ static_cast<TemporalLayerState>(tl_config.pattern_idx);
+ switch (layer_state) {
+ case kDrop:
+ RTC_NOTREACHED();
+ break;
+ case kTl0:
+ vp8_info->temporalIdx = 0;
+ break;
+ case kTl1:
+ case kTl1Sync:
+ vp8_info->temporalIdx = 1;
+ break;
+ }
if (frame_is_keyframe) {
vp8_info->temporalIdx = 0;
last_sync_timestamp_ = unwrapped_timestamp;
« no previous file with comments | « webrtc/modules/video_coding/codecs/vp8/screenshare_layers.h ('k') | webrtc/modules/video_coding/codecs/vp8/temporal_layers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698