diff options
author | Niels Möller <nisse@webrtc.org> | 2018-04-25 14:46:06 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2018-04-25 13:54:33 +0000 |
commit | 65fb4049c182cfd969f16cf6ca81085a1b06a8b3 (patch) | |
tree | 027120b4f0b2f0701e26476ec4c415163d9505b1 /video | |
parent | d5cb477576d84ff3d819c24787998fcabca2d5ae (diff) | |
download | webrtc-65fb4049c182cfd969f16cf6ca81085a1b06a8b3.tar.gz |
Don't expose resilience mode in VP8 and VP9 configuration.
This deletes the resilienceOn flag in VideoCodecVP8 and VideoCodecVP9.
Instead, the implementations of VP8 and VP9 set resilience mode
internally, based on the configuration of temporal and spatial layers.
The nack_enabled argument to VideoCodecInitializer::SetupCodec becomes
unused with this cl. In a followup, it will be deleted, together with
the corresponding argument to VideoStreamEncoder methods.
An applications which really wants to configure resilience differently
can do that by injecting an EncoderFactory with encoders behaving
as desired.
Bug: webrtc:8830
Change-Id: I9990faf07d3e95c0fb4a56fcc9a56c2005b4a6fa
Reviewed-on: https://webrtc-review.googlesource.com/71380
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23025}
Diffstat (limited to 'video')
-rw-r--r-- | video/video_stream_encoder_unittest.cc | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc index 5289f9a9a5..ba21cf9959 100644 --- a/video/video_stream_encoder_unittest.cc +++ b/video/video_stream_encoder_unittest.cc @@ -35,7 +35,6 @@ const int kMinPixelsPerFrame = 320 * 180; const int kMinFramerateFps = 2; const int kMinBalancedFramerateFps = 7; const int64_t kFrameTimeoutMs = 100; -const unsigned char kNumSlDummy = 0; } // namespace namespace webrtc { @@ -837,177 +836,6 @@ TEST_F(VideoStreamEncoderTest, FrameResolutionChangeReconfigureEncoder) { video_stream_encoder_->Stop(); } -TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor1S1TLWithNackEnabled) { - const bool kNackEnabled = true; - const size_t kNumStreams = 1; - const size_t kNumTl = 1; - ResetEncoder("VP8", kNumStreams, kNumTl, kNumSlDummy, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr)); - WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP8, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); - // Resilience is off for no temporal layers with nack on. - EXPECT_FALSE(fake_encoder_.codec_config().VP8()->resilienceOn); - video_stream_encoder_->Stop(); -} - -TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor2S1TlWithNackEnabled) { - const bool kNackEnabled = true; - const size_t kNumStreams = 2; - const size_t kNumTl = 1; - ResetEncoder("VP8", kNumStreams, kNumTl, kNumSlDummy, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr)); - WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP8, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); - // Resilience is off for no temporal layers and >1 streams with nack on. - EXPECT_FALSE(fake_encoder_.codec_config().VP8()->resilienceOn); - video_stream_encoder_->Stop(); -} - -TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S1TLWithNackDisabled) { - const bool kNackEnabled = false; - const size_t kNumStreams = 1; - const size_t kNumTl = 1; - ResetEncoder("VP8", kNumStreams, kNumTl, kNumSlDummy, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr)); - WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP8, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); - // Resilience is on for no temporal layers with nack off. - EXPECT_TRUE(fake_encoder_.codec_config().VP8()->resilienceOn); - video_stream_encoder_->Stop(); -} - -TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S2TlWithNackEnabled) { - const bool kNackEnabled = true; - const size_t kNumStreams = 1; - const size_t kNumTl = 2; - ResetEncoder("VP8", kNumStreams, kNumTl, kNumSlDummy, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr)); - WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP8, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); - // Resilience is on for temporal layers. - EXPECT_TRUE(fake_encoder_.codec_config().VP8()->resilienceOn); - video_stream_encoder_->Stop(); -} - -TEST_F(VideoStreamEncoderTest, Vp9ResilienceIsOffFor1SL1TLWithNackEnabled) { - const bool kNackEnabled = true; - const size_t kNumStreams = 1; - const size_t kNumTl = 1; - const unsigned char kNumSl = 1; - ResetEncoder("VP9", kNumStreams, kNumTl, kNumSl, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr)); - sink_.WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP9, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP9()->numberOfTemporalLayers); - EXPECT_EQ(kNumSl, fake_encoder_.codec_config().VP9()->numberOfSpatialLayers); - // Resilience is off for no spatial and temporal layers with nack on. - EXPECT_FALSE(fake_encoder_.codec_config().VP9()->resilienceOn); - video_stream_encoder_->Stop(); -} - -TEST_F(VideoStreamEncoderTest, Vp9ResilienceIsOnFor1SL1TLWithNackDisabled) { - const bool kNackEnabled = false; - const size_t kNumStreams = 1; - const size_t kNumTl = 1; - const unsigned char kNumSl = 1; - ResetEncoder("VP9", kNumStreams, kNumTl, kNumSl, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr)); - sink_.WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP9, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP9()->numberOfTemporalLayers); - EXPECT_EQ(kNumSl, fake_encoder_.codec_config().VP9()->numberOfSpatialLayers); - // Resilience is on if nack is off. - EXPECT_TRUE(fake_encoder_.codec_config().VP9()->resilienceOn); - video_stream_encoder_->Stop(); -} - -TEST_F(VideoStreamEncoderTest, Vp9ResilienceIsOnFor2SL1TLWithNackEnabled) { - const bool kNackEnabled = true; - const size_t kNumStreams = 1; - const size_t kNumTl = 1; - const unsigned char kNumSl = 2; - const int kFrameWidth = kMinVp9SpatialLayerWidth << (kNumSl - 1); - const int kFrameHeight = kMinVp9SpatialLayerHeight << (kNumSl - 1); - ResetEncoder("VP9", kNumStreams, kNumTl, kNumSl, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame( - CreateFrame(1, kFrameWidth, kFrameHeight)); - sink_.WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP9, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP9()->numberOfTemporalLayers); - EXPECT_EQ(kNumSl, fake_encoder_.codec_config().VP9()->numberOfSpatialLayers); - // Resilience is on for spatial layers. - EXPECT_TRUE(fake_encoder_.codec_config().VP9()->resilienceOn); - video_stream_encoder_->Stop(); -} - -TEST_F(VideoStreamEncoderTest, Vp9ResilienceIsOnFor1SL2TLWithNackEnabled) { - const bool kNackEnabled = true; - const size_t kNumStreams = 1; - const size_t kNumTl = 2; - const unsigned char kNumSl = 1; - ResetEncoder("VP9", kNumStreams, kNumTl, kNumSl, kNackEnabled, false); - video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); - - // Capture a frame and wait for it to synchronize with the encoder thread. - video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr)); - sink_.WaitForEncodedFrame(1); - // The encoder have been configured once when the first frame is received. - EXPECT_EQ(1, sink_.number_of_reconfigurations()); - EXPECT_EQ(kVideoCodecVP9, fake_encoder_.codec_config().codecType); - EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); - EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP9()->numberOfTemporalLayers); - EXPECT_EQ(kNumSl, fake_encoder_.codec_config().VP9()->numberOfSpatialLayers); - // Resilience is on for temporal layers. - EXPECT_TRUE(fake_encoder_.codec_config().VP9()->resilienceOn); - video_stream_encoder_->Stop(); -} - TEST_F(VideoStreamEncoderTest, SwitchSourceDeregisterEncoderAsSink) { EXPECT_TRUE(video_source_.has_sinks()); test::FrameForwarder new_video_source; |