Revert "Enable WebRTC-Vp9DependencyDescriptor by default"
This reverts commit 472707150662bc4e174072e445938e5c405aa884. Reason for revert: Suspected cause for crashes in perf tests. Original change's description: > Enable WebRTC-Vp9DependencyDescriptor by default > > Bug: chromium:1178444 > Change-Id: I420e1e9b3c557b8b186cb08c15b962a779e1ca17 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226941 > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Commit-Queue: Emil Lundmark <lndmrk@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#34584} # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:1178444 Change-Id: I582d6d1c9d2091ca37b0943235b5cea8d4e2790d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227282 Reviewed-by: Björn Terelius <terelius@webrtc.org> Reviewed-by: Emil Lundmark <lndmrk@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Björn Terelius <terelius@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34619}
This commit is contained in:
parent
ff0378485c
commit
53adc7b1c8
@ -133,8 +133,8 @@ RtpPayloadParams::RtpPayloadParams(const uint32_t ssrc,
|
|||||||
absl::StartsWith(trials.Lookup("WebRTC-GenericPictureId"),
|
absl::StartsWith(trials.Lookup("WebRTC-GenericPictureId"),
|
||||||
"Enabled")),
|
"Enabled")),
|
||||||
simulate_generic_vp9_(
|
simulate_generic_vp9_(
|
||||||
!absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
|
absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
|
||||||
"Disabled")) {
|
"Enabled")) {
|
||||||
for (auto& spatial_layer : last_shared_frame_id_)
|
for (auto& spatial_layer : last_shared_frame_id_)
|
||||||
spatial_layer.fill(-1);
|
spatial_layer.fill(-1);
|
||||||
|
|
||||||
|
|||||||
@ -463,9 +463,17 @@ TEST_F(RtpPayloadParamsVp8ToGenericTest, FrameIdGaps) {
|
|||||||
ConvertAndCheck(1, 20, VideoFrameType::kVideoFrameDelta, kNoSync, {10, 15});
|
ConvertAndCheck(1, 20, VideoFrameType::kVideoFrameDelta, kNoSync, {10, 15});
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPayloadParamsVp9ToGenericTest, NoScalability) {
|
class RtpPayloadParamsVp9ToGenericTest : public ::testing::Test {
|
||||||
RtpPayloadState state;
|
protected:
|
||||||
RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
|
RtpPayloadParamsVp9ToGenericTest()
|
||||||
|
: field_trials_("WebRTC-Vp9DependencyDescriptor/Enabled/") {}
|
||||||
|
|
||||||
|
test::ExplicitKeyValueConfig field_trials_;
|
||||||
|
RtpPayloadState state_;
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(RtpPayloadParamsVp9ToGenericTest, NoScalability) {
|
||||||
|
RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
|
||||||
|
|
||||||
EncodedImage encoded_image;
|
EncodedImage encoded_image;
|
||||||
CodecSpecificInfo codec_info;
|
CodecSpecificInfo codec_info;
|
||||||
@ -512,13 +520,12 @@ TEST(RtpPayloadParamsVp9ToGenericTest, NoScalability) {
|
|||||||
EXPECT_THAT(header.generic->chain_diffs, ElementsAre(3 - 1));
|
EXPECT_THAT(header.generic->chain_diffs, ElementsAre(3 - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith2Layers) {
|
TEST_F(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith2Layers) {
|
||||||
// Test with 2 temporal layers structure that is not used by webrtc:
|
// Test with 2 temporal layers structure that is not used by webrtc:
|
||||||
// 1---3 5
|
// 1---3 5
|
||||||
// / / / ...
|
// / / / ...
|
||||||
// 0---2---4---
|
// 0---2---4---
|
||||||
RtpPayloadState state;
|
RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
|
||||||
RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
|
|
||||||
|
|
||||||
EncodedImage image;
|
EncodedImage image;
|
||||||
CodecSpecificInfo info;
|
CodecSpecificInfo info;
|
||||||
@ -617,11 +624,10 @@ TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith2Layers) {
|
|||||||
EXPECT_THAT(headers[5].generic->chain_diffs, ElementsAre(2));
|
EXPECT_THAT(headers[5].generic->chain_diffs, ElementsAre(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith3Layers) {
|
TEST_F(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith3Layers) {
|
||||||
// Test with 3 temporal layers structure that is not used by webrtc, but used
|
// Test with 3 temporal layers structure that is not used by webrtc, but used
|
||||||
// by chromium: https://imgur.com/pURAGvp
|
// by chromium: https://imgur.com/pURAGvp
|
||||||
RtpPayloadState state;
|
RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
|
||||||
RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
|
|
||||||
|
|
||||||
EncodedImage image;
|
EncodedImage image;
|
||||||
CodecSpecificInfo info;
|
CodecSpecificInfo info;
|
||||||
@ -762,12 +768,11 @@ TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith3Layers) {
|
|||||||
EXPECT_THAT(headers[8].generic->chain_diffs, ElementsAre(8));
|
EXPECT_THAT(headers[8].generic->chain_diffs, ElementsAre(8));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPayloadParamsVp9ToGenericTest, SpatialScalabilityKSvc) {
|
TEST_F(RtpPayloadParamsVp9ToGenericTest, SpatialScalabilityKSvc) {
|
||||||
// 1---3--
|
// 1---3--
|
||||||
// | ...
|
// | ...
|
||||||
// 0---2--
|
// 0---2--
|
||||||
RtpPayloadState state;
|
RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
|
||||||
RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
|
|
||||||
|
|
||||||
EncodedImage image;
|
EncodedImage image;
|
||||||
CodecSpecificInfo info;
|
CodecSpecificInfo info;
|
||||||
|
|||||||
@ -367,9 +367,9 @@ RtpVideoSender::RtpVideoSender(
|
|||||||
field_trials_.Lookup("WebRTC-Video-UseFrameRateForOverhead"),
|
field_trials_.Lookup("WebRTC-Video-UseFrameRateForOverhead"),
|
||||||
"Enabled")),
|
"Enabled")),
|
||||||
has_packet_feedback_(TransportSeqNumExtensionConfigured(rtp_config)),
|
has_packet_feedback_(TransportSeqNumExtensionConfigured(rtp_config)),
|
||||||
simulate_vp9_structure_(!absl::StartsWith(
|
simulate_vp9_structure_(absl::StartsWith(
|
||||||
field_trials_.Lookup("WebRTC-Vp9DependencyDescriptor"),
|
field_trials_.Lookup("WebRTC-Vp9DependencyDescriptor"),
|
||||||
"Disabled")),
|
"Enabled")),
|
||||||
active_(false),
|
active_(false),
|
||||||
suspended_ssrcs_(std::move(suspended_ssrcs)),
|
suspended_ssrcs_(std::move(suspended_ssrcs)),
|
||||||
fec_controller_(std::move(fec_controller)),
|
fec_controller_(std::move(fec_controller)),
|
||||||
|
|||||||
@ -772,6 +772,8 @@ TEST(RtpVideoSenderTest, SupportsDependencyDescriptorForVp9) {
|
|||||||
|
|
||||||
TEST(RtpVideoSenderTest,
|
TEST(RtpVideoSenderTest,
|
||||||
SupportsDependencyDescriptorForVp9NotProvidedByEncoder) {
|
SupportsDependencyDescriptorForVp9NotProvidedByEncoder) {
|
||||||
|
test::ScopedFieldTrials field_trials(
|
||||||
|
"WebRTC-Vp9DependencyDescriptor/Enabled/");
|
||||||
RtpVideoSenderTestFixture test({kSsrc1}, {}, kPayloadType, {});
|
RtpVideoSenderTestFixture test({kSsrc1}, {}, kPayloadType, {});
|
||||||
test.router()->SetActive(true);
|
test.router()->SetActive(true);
|
||||||
|
|
||||||
|
|||||||
@ -228,8 +228,8 @@ LibvpxVp9Encoder::LibvpxVp9Encoder(const cricket::VideoCodec& codec,
|
|||||||
ss_info_needed_(false),
|
ss_info_needed_(false),
|
||||||
force_all_active_layers_(false),
|
force_all_active_layers_(false),
|
||||||
use_svc_controller_(
|
use_svc_controller_(
|
||||||
!absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
|
absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
|
||||||
"Disabled")),
|
"Enabled")),
|
||||||
is_flexible_mode_(false),
|
is_flexible_mode_(false),
|
||||||
variable_framerate_experiment_(ParseVariableFramerateConfig(trials)),
|
variable_framerate_experiment_(ParseVariableFramerateConfig(trials)),
|
||||||
variable_framerate_controller_(
|
variable_framerate_controller_(
|
||||||
|
|||||||
@ -257,6 +257,8 @@ TEST(Vp9ImplTest, ParserQpEqualsEncodedQp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(Vp9ImplTest, EncodeAttachesTemplateStructureWithSvcController) {
|
TEST(Vp9ImplTest, EncodeAttachesTemplateStructureWithSvcController) {
|
||||||
|
test::ScopedFieldTrials override_field_trials(
|
||||||
|
"WebRTC-Vp9DependencyDescriptor/Enabled/");
|
||||||
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
||||||
VideoCodec codec_settings = DefaultCodecSettings();
|
VideoCodec codec_settings = DefaultCodecSettings();
|
||||||
EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
|
EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
|
||||||
@ -299,6 +301,8 @@ TEST(Vp9ImplTest, EncoderWith2TemporalLayers) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(Vp9ImplTest, EncodeTemporalLayersWithSvcController) {
|
TEST(Vp9ImplTest, EncodeTemporalLayersWithSvcController) {
|
||||||
|
test::ScopedFieldTrials override_field_trials(
|
||||||
|
"WebRTC-Vp9DependencyDescriptor/Enabled/");
|
||||||
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
||||||
VideoCodec codec_settings = DefaultCodecSettings();
|
VideoCodec codec_settings = DefaultCodecSettings();
|
||||||
codec_settings.VP9()->numberOfTemporalLayers = 2;
|
codec_settings.VP9()->numberOfTemporalLayers = 2;
|
||||||
@ -346,6 +350,8 @@ TEST(Vp9ImplTest, EncoderWith2SpatialLayers) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(Vp9ImplTest, EncodeSpatialLayersWithSvcController) {
|
TEST(Vp9ImplTest, EncodeSpatialLayersWithSvcController) {
|
||||||
|
test::ScopedFieldTrials override_field_trials(
|
||||||
|
"WebRTC-Vp9DependencyDescriptor/Enabled/");
|
||||||
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
||||||
VideoCodec codec_settings = DefaultCodecSettings();
|
VideoCodec codec_settings = DefaultCodecSettings();
|
||||||
codec_settings.VP9()->numberOfSpatialLayers = 2;
|
codec_settings.VP9()->numberOfSpatialLayers = 2;
|
||||||
@ -481,6 +487,8 @@ TEST_F(TestVp9Impl, EnableDisableSpatialLayers) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(Vp9ImplTest, EnableDisableSpatialLayersWithSvcController) {
|
TEST(Vp9ImplTest, EnableDisableSpatialLayersWithSvcController) {
|
||||||
|
test::ScopedFieldTrials override_field_trials(
|
||||||
|
"WebRTC-Vp9DependencyDescriptor/Enabled/");
|
||||||
const int num_spatial_layers = 3;
|
const int num_spatial_layers = 3;
|
||||||
// Configure encoder to produce 3 spatial layers. Encode frames of layer 0
|
// Configure encoder to produce 3 spatial layers. Encode frames of layer 0
|
||||||
// then enable layer 1 and encode more frames and so on.
|
// then enable layer 1 and encode more frames and so on.
|
||||||
@ -555,6 +563,8 @@ MATCHER_P2(GenericLayerIs, spatial_id, temporal_id, "") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(Vp9ImplTest, SpatialUpswitchNotAtGOFBoundary) {
|
TEST(Vp9ImplTest, SpatialUpswitchNotAtGOFBoundary) {
|
||||||
|
test::ScopedFieldTrials override_field_trials(
|
||||||
|
"WebRTC-Vp9DependencyDescriptor/Enabled/");
|
||||||
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
|
||||||
VideoCodec codec_settings = DefaultCodecSettings();
|
VideoCodec codec_settings = DefaultCodecSettings();
|
||||||
ConfigureSvc(codec_settings, /*num_spatial_layers=*/3,
|
ConfigureSvc(codec_settings, /*num_spatial_layers=*/3,
|
||||||
@ -753,6 +763,8 @@ TEST_F(TestVp9Impl, DisableEnableBaseLayerTriggersKeyFrame) {
|
|||||||
TEST(Vp9ImplTest, DisableEnableBaseLayerWithSvcControllerTriggersKeyFrame) {
|
TEST(Vp9ImplTest, DisableEnableBaseLayerWithSvcControllerTriggersKeyFrame) {
|
||||||
// Configure encoder to produce N spatial layers. Encode frames for all
|
// Configure encoder to produce N spatial layers. Encode frames for all
|
||||||
// layers. Then disable all but the last layer. Then reenable all back again.
|
// layers. Then disable all but the last layer. Then reenable all back again.
|
||||||
|
test::ScopedFieldTrials override_field_trials(
|
||||||
|
"WebRTC-Vp9DependencyDescriptor/Enabled/");
|
||||||
const size_t num_spatial_layers = 3;
|
const size_t num_spatial_layers = 3;
|
||||||
const size_t num_temporal_layers = 3;
|
const size_t num_temporal_layers = 3;
|
||||||
// Must not be multiple of temporal period to exercise all code paths.
|
// Must not be multiple of temporal period to exercise all code paths.
|
||||||
@ -2342,17 +2354,8 @@ TEST(Vp9SpeedSettingsTrialsTest, PerLayerFlagsWithSvc) {
|
|||||||
absl::WrapUnique<LibvpxInterface>(vpx), trials);
|
absl::WrapUnique<LibvpxInterface>(vpx), trials);
|
||||||
|
|
||||||
VideoCodec settings = DefaultCodecSettings();
|
VideoCodec settings = DefaultCodecSettings();
|
||||||
constexpr int kNumSpatialLayers = 3;
|
const int kNumSpatialLayers = 3;
|
||||||
constexpr int kNumTemporalLayers = 3;
|
ConfigureSvc(settings, kNumSpatialLayers, /*num_temporal_layers=*/3);
|
||||||
ConfigureSvc(settings, kNumSpatialLayers, kNumTemporalLayers);
|
|
||||||
VideoBitrateAllocation bitrate_allocation;
|
|
||||||
for (int si = 0; si < kNumSpatialLayers; ++si) {
|
|
||||||
for (int ti = 0; ti < kNumTemporalLayers; ++ti) {
|
|
||||||
uint32_t bitrate_bps =
|
|
||||||
settings.spatialLayers[si].targetBitrate * 1'000 / kNumTemporalLayers;
|
|
||||||
bitrate_allocation.SetBitrate(si, ti, bitrate_bps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
vpx_image_t img;
|
vpx_image_t img;
|
||||||
|
|
||||||
// Speed settings per spatial layer, for TL0.
|
// Speed settings per spatial layer, for TL0.
|
||||||
@ -2364,11 +2367,6 @@ TEST(Vp9SpeedSettingsTrialsTest, PerLayerFlagsWithSvc) {
|
|||||||
const int kLoopFilter[VPX_MAX_LAYERS] = {1, 0, 0};
|
const int kLoopFilter[VPX_MAX_LAYERS] = {1, 0, 0};
|
||||||
|
|
||||||
ON_CALL(*vpx, img_wrap).WillByDefault(GetWrapImageFunction(&img));
|
ON_CALL(*vpx, img_wrap).WillByDefault(GetWrapImageFunction(&img));
|
||||||
ON_CALL(*vpx, codec_enc_init)
|
|
||||||
.WillByDefault(WithArg<0>([](vpx_codec_ctx_t* ctx) {
|
|
||||||
memset(ctx, 0, sizeof(*ctx));
|
|
||||||
return VPX_CODEC_OK;
|
|
||||||
}));
|
|
||||||
ON_CALL(*vpx, codec_enc_config_default)
|
ON_CALL(*vpx, codec_enc_config_default)
|
||||||
.WillByDefault(DoAll(WithArg<1>([](vpx_codec_enc_cfg_t* cfg) {
|
.WillByDefault(DoAll(WithArg<1>([](vpx_codec_enc_cfg_t* cfg) {
|
||||||
memset(cfg, 0, sizeof(vpx_codec_enc_cfg_t));
|
memset(cfg, 0, sizeof(vpx_codec_enc_cfg_t));
|
||||||
@ -2393,9 +2391,6 @@ TEST(Vp9SpeedSettingsTrialsTest, PerLayerFlagsWithSvc) {
|
|||||||
|
|
||||||
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, encoder.InitEncode(&settings, kSettings));
|
EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, encoder.InitEncode(&settings, kSettings));
|
||||||
|
|
||||||
encoder.SetRates(VideoEncoder::RateControlParameters(bitrate_allocation,
|
|
||||||
settings.maxFramerate));
|
|
||||||
|
|
||||||
MockEncodedImageCallback callback;
|
MockEncodedImageCallback callback;
|
||||||
encoder.RegisterEncodeCompleteCallback(&callback);
|
encoder.RegisterEncodeCompleteCallback(&callback);
|
||||||
auto frame_generator = test::CreateSquareFrameGenerator(
|
auto frame_generator = test::CreateSquareFrameGenerator(
|
||||||
|
|||||||
@ -174,6 +174,7 @@ class FieldTrials : public WebRtcKeyValueConfig {
|
|||||||
~FieldTrials() override = default;
|
~FieldTrials() override = default;
|
||||||
std::string Lookup(absl::string_view key) const override {
|
std::string Lookup(absl::string_view key) const override {
|
||||||
static constexpr absl::string_view kBinaryFieldTrials[] = {
|
static constexpr absl::string_view kBinaryFieldTrials[] = {
|
||||||
|
"WebRTC-Vp9DependencyDescriptor",
|
||||||
"WebRTC-Vp9ExternalRefCtrl",
|
"WebRTC-Vp9ExternalRefCtrl",
|
||||||
"WebRTC-Vp9IssueKeyFrameOnLayerDeactivation",
|
"WebRTC-Vp9IssueKeyFrameOnLayerDeactivation",
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user