Reland "Launch external ref control for vp9 encoder"

This reverts commit 9665b7d1017bc5b44ffe550c4625921d0315df90.

Reason for revert: Fixes are in the PS#2

Original change's description:
> Revert "Launch external ref control for vp9 encoder"
> 
> This reverts commit 9427b51d6ff50af73c217cb725b1c59b9d701796.
> 
> Reason for revert: Breaks downstream tests
> 
> Original change's description:
> > Launch external ref control for vp9 encoder
> > 
> > Change field trial condition to killswitch instead.
> > 
> > Finch trial is going to 100% public today.
> > 
> > Bug: chromium:1027108,webrtc:11319
> > Change-Id: I29494a7c8515a454706983dd15ae444d3f85271f
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173752
> > Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> > Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#31122}
> 
> TBR=ilnik@webrtc.org,ssilkin@webrtc.org
> 
> Change-Id: I44436febb2b646cdd350fa9afee1c3a7ea307d04
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: chromium:1027108, webrtc:11319
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173761
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31123}

TBR=ilnik@webrtc.org,ssilkin@webrtc.org

Change-Id: I8aed0edca2015297da512aa084515812103c6f48
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1027108, webrtc:11319
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173780
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31125}
This commit is contained in:
Ilya Nikolaevskiy 2020-04-23 13:34:48 +02:00 committed by Commit Bot
parent e110a44628
commit 1fb4a05e9e
2 changed files with 12 additions and 6 deletions

View File

@ -582,10 +582,18 @@ int VP9EncoderImpl::InitEncode(const VideoCodec* inst,
// External reference control is required for different frame rate on spatial
// layers because libvpx generates rtp incompatible references in this case.
external_ref_control_ = field_trial::IsEnabled("WebRTC-Vp9ExternalRefCtrl") ||
(num_spatial_layers_ > 1 &&
codec_.mode == VideoCodecMode::kScreensharing) ||
inter_layer_pred_ == InterLayerPredMode::kOn;
external_ref_control_ =
!field_trial::IsDisabled("WebRTC-Vp9ExternalRefCtrl") ||
(num_spatial_layers_ > 1 &&
codec_.mode == VideoCodecMode::kScreensharing) ||
inter_layer_pred_ == InterLayerPredMode::kOn;
// TODO(ilnik): Remove this workaround once external reference control works
// nicely with simulcast SVC mode.
// Simlucast SVC mode is currently only used in some tests and is impossible
// to trigger for users without using some field trials.
if (inter_layer_pred_ == InterLayerPredMode::kOff) {
external_ref_control_ = false;
}
if (num_temporal_layers_ == 1) {
gof_.SetGofInfoVP9(kTemporalStructureMode1);

View File

@ -121,8 +121,6 @@ bool LayerFilteringTransport::SendRtp(const uint8_t* packet,
if (vp9_header.ss_data_available) {
RTC_DCHECK(vp9_header.temporal_idx == kNoTemporalIdx ||
vp9_header.temporal_idx == 0);
RTC_DCHECK(vp9_header.spatial_idx == kNoSpatialIdx ||
vp9_header.spatial_idx == 0);
num_active_spatial_layers_ = vp9_header.num_spatial_layers;
}
}