In Vp9 wrapper allow to use ScalableVideoController with simulcast structures
Bug: webrtc:11999 Change-Id: Ifed99e8676a75f869a7df6b3ac64a6ad1c29c62f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/189550 Reviewed-by: Philip Eliasson <philipel@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32452}
This commit is contained in:

committed by
Commit Bot

parent
81bf2fe945
commit
42aab25b7f
@ -669,6 +669,7 @@ TEST(Vp9ImplTest, DisableEnableBaseLayerWithSvcControllerTriggersKeyFrame) {
|
|||||||
ConfigureSvc(codec_settings, num_spatial_layers, num_temporal_layers);
|
ConfigureSvc(codec_settings, num_spatial_layers, num_temporal_layers);
|
||||||
codec_settings.VP9()->frameDroppingOn = false;
|
codec_settings.VP9()->frameDroppingOn = false;
|
||||||
codec_settings.VP9()->flexibleMode = false;
|
codec_settings.VP9()->flexibleMode = false;
|
||||||
|
codec_settings.VP9()->interLayerPred = InterLayerPredMode::kOnKeyPic;
|
||||||
codec_settings.mode = VideoCodecMode::kRealtimeVideo;
|
codec_settings.mode = VideoCodecMode::kRealtimeVideo;
|
||||||
|
|
||||||
EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
|
EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
|
||||||
|
@ -227,16 +227,21 @@ std::unique_ptr<ScalableVideoController> CreateVp9ScalabilityStructure(
|
|||||||
return std::make_unique<ScalableVideoControllerNoLayering>();
|
return std::make_unique<ScalableVideoControllerNoLayering>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (codec.VP9().interLayerPred != InterLayerPredMode::kOn ||
|
|
||||||
codec.mode == VideoCodecMode::kScreensharing) {
|
|
||||||
// TODO(bugs.webrtc.org/11999): Return names of the structure when they are
|
|
||||||
// implemented and support frame skipping.
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
char name[20];
|
char name[20];
|
||||||
rtc::SimpleStringBuilder ss(name);
|
rtc::SimpleStringBuilder ss(name);
|
||||||
ss << "L" << num_spatial_layers << "T" << num_temporal_layers;
|
if (codec.mode == VideoCodecMode::kScreensharing) {
|
||||||
|
// TODO(bugs.webrtc.org/11999): Compose names of the structures when they
|
||||||
|
// are implemented.
|
||||||
|
return nullptr;
|
||||||
|
} else if (codec.VP9().interLayerPred == InterLayerPredMode::kOn ||
|
||||||
|
num_spatial_layers == 1) {
|
||||||
|
ss << "L" << num_spatial_layers << "T" << num_temporal_layers;
|
||||||
|
} else if (codec.VP9().interLayerPred == InterLayerPredMode::kOnKeyPic) {
|
||||||
|
ss << "L" << num_spatial_layers << "T" << num_temporal_layers << "_KEY";
|
||||||
|
} else {
|
||||||
|
RTC_DCHECK_EQ(codec.VP9().interLayerPred, InterLayerPredMode::kOff);
|
||||||
|
ss << "S" << num_spatial_layers << "T" << num_temporal_layers;
|
||||||
|
}
|
||||||
|
|
||||||
// Check spatial ratio.
|
// Check spatial ratio.
|
||||||
if (num_spatial_layers > 1 && codec.spatialLayers[0].targetBitrate > 0) {
|
if (num_spatial_layers > 1 && codec.spatialLayers[0].targetBitrate > 0) {
|
||||||
|
Reference in New Issue
Block a user