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

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

Issue 2853073004: Derive current layer from TL frame config. (Closed)
Patch Set: rebase 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 d217bdbed7d78cba8c179670e01a44fd43ac8fbd..6bfd03fb50b9abb8500301aa6beced6945231b5a 100644
--- a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
+++ b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc
@@ -78,7 +78,8 @@ ScreenshareLayers::~ScreenshareLayers() {
UpdateHistograms();
}
-int ScreenshareLayers::CurrentLayerId() const {
+int ScreenshareLayers::GetTemporalLayerId(
+ const TemporalLayers::FrameConfig& tl_config) const {
// Codec does not use temporal layers for screenshare.
return 0;
}
@@ -87,19 +88,20 @@ uint8_t ScreenshareLayers::Tl0PicIdx() const {
return tl0_pic_idx_;
}
-TemporalReferences ScreenshareLayers::UpdateLayerConfig(uint32_t timestamp) {
+TemporalLayers::FrameConfig ScreenshareLayers::UpdateLayerConfig(
+ uint32_t timestamp) {
if (number_of_temporal_layers_ <= 1) {
// No flags needed for 1 layer screenshare.
// TODO(pbos): Consider updating only last, and not all buffers.
- return TemporalReferences(kReferenceAndUpdate, kReferenceAndUpdate,
- kReferenceAndUpdate);
+ return TemporalLayers::FrameConfig(kReferenceAndUpdate, kReferenceAndUpdate,
+ kReferenceAndUpdate);
}
const int64_t now_ms = clock_->TimeInMilliseconds();
if (target_framerate_.value_or(0) > 0 &&
encode_framerate_.Rate(now_ms).value_or(0) > *target_framerate_) {
// Max framerate exceeded, drop frame.
- return TemporalReferences(kNone, kNone, kNone);
+ return TemporalLayers::FrameConfig(kNone, kNone, kNone);
}
if (stats_.first_frame_time_ms_ == -1)
@@ -165,21 +167,23 @@ TemporalReferences ScreenshareLayers::UpdateLayerConfig(uint32_t timestamp) {
// layers.
switch (layer_state) {
case kDrop:
- return TemporalReferences(kNone, kNone, kNone);
+ return TemporalLayers::FrameConfig(kNone, kNone, kNone);
case kTl0:
// TL0 only references and updates 'last'.
- return TemporalReferences(kReferenceAndUpdate, kNone, kNone);
+ return TemporalLayers::FrameConfig(kReferenceAndUpdate, kNone, kNone);
case kTl1:
// TL1 references both 'last' and 'golden' but only updates 'golden'.
- return TemporalReferences(kReference, kReferenceAndUpdate, kNone);
+ return TemporalLayers::FrameConfig(kReference, kReferenceAndUpdate,
+ kNone);
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 TemporalReferences(kReference, kUpdate, kNone, kLayerSync);
+ return TemporalLayers::FrameConfig(kReference, kUpdate, kNone,
+ kLayerSync);
}
RTC_NOTREACHED();
- return TemporalReferences(kNone, kNone, kNone);
+ return TemporalLayers::FrameConfig(kNone, kNone, kNone);
}
std::vector<uint32_t> ScreenshareLayers::OnRatesUpdated(int bitrate_kbps,
@@ -250,15 +254,19 @@ void ScreenshareLayers::FrameEncoded(unsigned int size, int qp) {
}
}
-void ScreenshareLayers::PopulateCodecSpecific(bool frame_is_keyframe,
- CodecSpecificInfoVP8* vp8_info,
- uint32_t timestamp) {
+void ScreenshareLayers::PopulateCodecSpecific(
+ bool frame_is_keyframe,
+ const TemporalLayers::FrameConfig& tl_config,
+ CodecSpecificInfoVP8* vp8_info,
+ uint32_t timestamp) {
int64_t unwrapped_timestamp = time_wrap_handler_.Unwrap(timestamp);
if (number_of_temporal_layers_ == 1) {
vp8_info->temporalIdx = kNoTemporalIdx;
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_;
if (frame_is_keyframe) {

Powered by Google App Engine
This is Rietveld 408576698