aboutsummaryrefslogtreecommitdiff
path: root/video
diff options
context:
space:
mode:
authorNiels Möller <nisse@webrtc.org>2018-04-25 14:46:06 +0200
committerCommit Bot <commit-bot@chromium.org>2018-04-25 13:54:33 +0000
commit65fb4049c182cfd969f16cf6ca81085a1b06a8b3 (patch)
tree027120b4f0b2f0701e26476ec4c415163d9505b1 /video
parentd5cb477576d84ff3d819c24787998fcabca2d5ae (diff)
downloadwebrtc-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.cc172
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;