Chromium Code Reviews| 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 6d9511f9ddd6ca57dc353e7292adc5897b2c4765..e315a93638ebf56ea132de621d70ecd0fe4c1ab3 100644 |
| --- a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc |
| +++ b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers.cc |
| @@ -78,24 +78,26 @@ ScreenshareLayers::~ScreenshareLayers() { |
| UpdateHistograms(); |
| } |
| -int ScreenshareLayers::CurrentLayerId() const { |
| +int ScreenshareLayers::GetTemporalLayerId( |
| + TemporalLayers::FrameConfig tl_config) const { |
| // Codec does not use temporal layers for screenshare. |
| return 0; |
| } |
| -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) |
| @@ -161,21 +163,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, |
| @@ -246,15 +250,20 @@ 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, |
| + 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. |
|
sprang_webrtc
2017/05/03 15:18:43
reflow comment
pbos-webrtc
2017/05/04 10:52:22
Oops, done, thanks. :)
|
| RTC_DCHECK_NE(-1, active_layer_); |
| vp8_info->temporalIdx = active_layer_; |
| if (frame_is_keyframe) { |