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

Unified Diff: webrtc/modules/video_coding/codecs/vp8/temporal_layers.h

Issue 2924993002: Move temporal-layer properties to FrameConfig. (Closed)
Patch Set: improve unittests Created 3 years, 5 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/temporal_layers.h
diff --git a/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h b/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h
index b3601e69f0d6aa15ba498d55ce8f436649093eb1..9c4dd57044b1be604d5e173327a6cd7b29eacce5 100644
--- a/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h
+++ b/webrtc/modules/video_coding/codecs/vp8/temporal_layers.h
@@ -47,13 +47,23 @@ class TemporalLayers {
BufferFlags golden_buffer_flags;
BufferFlags arf_buffer_flags;
- // TODO(pbos): Consider breaking these out of here and returning only a
- // pattern index that needs to be returned to fill CodecSpecificInfoVP8 or
- // EncodeFlags.
+ // The encoder layer ID is used to utilize the correct bitrate allocator
+ // inside the encoder. It does not control references nor determine which
+ // "actual" temporal layer this is. The packetizer temporal index determines
+ // which layer the encoded frame should be packetized into.
+ // Normally these are the same, but current temporal-layer strategies for
+ // screenshare use one bitrate allocator for all layers, but attempt to
+ // packetize / utilize references to split a stream into multiple layers,
+ // with different quantizer settings, to hit target bitrate.
+ // TODO(pbos): Screenshare layers are being reconsidered at the time of
+ // writing, we might be able to remove this distinction, and have a temporal
+ // layer imply both (the normal case).
+ int encoder_layer_id;
+ int packetizer_temporal_idx;
+
bool layer_sync;
- bool freeze_entropy;
- int pattern_idx;
+ bool freeze_entropy;
bool operator==(const FrameConfig& o) const {
return drop_frame == o.drop_frame &&
@@ -61,7 +71,8 @@ class TemporalLayers {
golden_buffer_flags == o.golden_buffer_flags &&
arf_buffer_flags == o.arf_buffer_flags &&
layer_sync == o.layer_sync && freeze_entropy == o.freeze_entropy &&
- pattern_idx == o.pattern_idx;
+ encoder_layer_id == o.encoder_layer_id &&
+ packetizer_temporal_idx == o.packetizer_temporal_idx;
}
bool operator!=(const FrameConfig& o) const { return !(*this == o); }
@@ -101,8 +112,6 @@ class TemporalLayers {
// Returns the current tl0_pic_idx, so it can be reused in future
// instantiations.
virtual uint8_t Tl0PicIdx() const = 0;
- virtual int GetTemporalLayerId(
- const TemporalLayers::FrameConfig& tl_config) const = 0;
};
class TemporalLayersListener;

Powered by Google App Engine
This is Rietveld 408576698