diff --git a/api/video_codecs/video_encoder.cc b/api/video_codecs/video_encoder.cc index 056a4cbc0d..1abee76548 100644 --- a/api/video_codecs/video_encoder.cc +++ b/api/video_codecs/video_encoder.cc @@ -17,7 +17,7 @@ VideoCodecVP8 VideoEncoder::GetDefaultVp8Settings() { VideoCodecVP8 vp8_settings; memset(&vp8_settings, 0, sizeof(vp8_settings)); - vp8_settings.resilience = kResilientStream; + vp8_settings.resilienceOn = true; vp8_settings.numberOfTemporalLayers = 1; vp8_settings.denoisingOn = true; vp8_settings.automaticResizeOn = false; diff --git a/common_types.cc b/common_types.cc index 641c2c7f6d..5e0dc934f8 100644 --- a/common_types.cc +++ b/common_types.cc @@ -23,7 +23,7 @@ namespace webrtc { bool VideoCodecVP8::operator==(const VideoCodecVP8& other) const { return (complexity == other.complexity && - resilience == other.resilience && + resilienceOn == other.resilienceOn && numberOfTemporalLayers == other.numberOfTemporalLayers && denoisingOn == other.denoisingOn && automaticResizeOn == other.automaticResizeOn && diff --git a/common_types.h b/common_types.h index ae47811f73..140854c247 100644 --- a/common_types.h +++ b/common_types.h @@ -349,17 +349,6 @@ enum VideoCodecComplexity { kComplexityMax = 3 }; -enum VP8ResilienceMode { - kResilienceOff, // The stream produced by the encoder requires a - // recovery frame (typically a key frame) to be - // decodable after a packet loss. - kResilientStream, // A stream produced by the encoder is resilient to - // packet losses, but packets within a frame subsequent - // to a loss can't be decoded. - kResilientFrames // Same as kResilientStream but with added resilience - // within a frame. -}; - // VP8 specific struct VideoCodecVP8 { bool operator==(const VideoCodecVP8& other) const; @@ -367,7 +356,7 @@ struct VideoCodecVP8 { return !(*this == other); } VideoCodecComplexity complexity; - VP8ResilienceMode resilience; + bool resilienceOn; unsigned char numberOfTemporalLayers; bool denoisingOn; bool automaticResizeOn; diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc index d2acd94858..b3a6bd49c7 100644 --- a/media/engine/simulcast_encoder_adapter_unittest.cc +++ b/media/engine/simulcast_encoder_adapter_unittest.cc @@ -330,7 +330,7 @@ class TestSimulcastEncoderAdapterFake : public ::testing::Test, EXPECT_EQ(ref.minBitrate, target.minBitrate); EXPECT_EQ(ref.maxFramerate, target.maxFramerate); EXPECT_EQ(ref.VP8().complexity, target.VP8().complexity); - EXPECT_EQ(ref.VP8().resilience, target.VP8().resilience); + EXPECT_EQ(ref.VP8().resilienceOn, target.VP8().resilienceOn); EXPECT_EQ(ref.VP8().numberOfTemporalLayers, target.VP8().numberOfTemporalLayers); EXPECT_EQ(ref.VP8().denoisingOn, target.VP8().denoisingOn); diff --git a/modules/video_coding/codecs/test/test_config.cc b/modules/video_coding/codecs/test/test_config.cc index 70a88dcbec..727a009a18 100644 --- a/modules/video_coding/codecs/test/test_config.cc +++ b/modules/video_coding/codecs/test/test_config.cc @@ -68,7 +68,7 @@ std::string CodecSpecificToString(const VideoCodec& codec) { switch (codec.codecType) { case kVideoCodecVP8: ss << "complexity: " << codec.VP8().complexity; - ss << "\nresilience: " << codec.VP8().resilience; + ss << "\nresilience: " << codec.VP8().resilienceOn; ss << "\nnum_temporal_layers: " << static_cast(codec.VP8().numberOfTemporalLayers); ss << "\ndenoising: " << codec.VP8().denoisingOn; @@ -143,8 +143,7 @@ void TestConfig::SetCodecSettings(std::string codec_name, switch (codec_settings.codecType) { case kVideoCodecVP8: - codec_settings.VP8()->resilience = - resilience_on ? kResilientStream : kResilienceOff; + codec_settings.VP8()->resilienceOn = resilience_on; codec_settings.VP8()->numberOfTemporalLayers = static_cast(num_temporal_layers); codec_settings.VP8()->denoisingOn = denoising_on; diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc index 9eeb4b80b4..b1cecf0691 100644 --- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc +++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc @@ -441,16 +441,8 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst, configurations_[0].g_lag_in_frames = 0; // 0- no frame lagging // Set the error resilience mode according to user settings. - switch (inst->VP8().resilience) { - case kResilienceOff: - configurations_[0].g_error_resilient = 0; - break; - case kResilientStream: - configurations_[0].g_error_resilient = VPX_ERROR_RESILIENT_DEFAULT; - break; - case kResilientFrames: - return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; // Not supported - } + configurations_[0].g_error_resilient = + inst->VP8().resilienceOn ? VPX_ERROR_RESILIENT_DEFAULT : 0; // rate control settings configurations_[0].rc_dropframe_thresh = inst->VP8().frameDroppingOn ? 30 : 0; @@ -675,7 +667,7 @@ int LibvpxVp8Encoder::InitAndSetControlSettings() { vpx_codec_control(&(encoders_[i]), VP8E_SET_SCREEN_CONTENT_MODE, codec_.mode == kScreensharing ? 2 : 0); // Apply boost on golden frames (has only effect when resilience is off). - if (use_gf_boost_ && codec_.VP8()->resilience == kResilienceOff) { + if (use_gf_boost_ && !codec_.VP8()->resilienceOn) { int gf_boost_percent; if (GetGfBoostPercentageFromFieldTrialGroup(&gf_boost_percent)) { vpx_codec_control(&(encoders_[i]), VP8E_SET_GF_CBR_BOOST_PCT, diff --git a/modules/video_coding/codecs/vp8/simulcast_test_utility.h b/modules/video_coding/codecs/vp8/simulcast_test_utility.h index 01d4aebcfb..59d8226c79 100644 --- a/modules/video_coding/codecs/vp8/simulcast_test_utility.h +++ b/modules/video_coding/codecs/vp8/simulcast_test_utility.h @@ -214,7 +214,7 @@ class TestVp8Simulcast : public ::testing::Test { ConfigureStream(kDefaultWidth, kDefaultHeight, kMaxBitrates[2], kMinBitrates[2], kTargetBitrates[2], &settings->simulcastStream[2], temporal_layer_profile[2]); - settings->VP8()->resilience = kResilientStream; + settings->VP8()->resilienceOn = true; settings->VP8()->denoisingOn = true; settings->VP8()->automaticResizeOn = false; settings->VP8()->frameDroppingOn = true; diff --git a/modules/video_coding/video_codec_initializer.cc b/modules/video_coding/video_codec_initializer.cc index a0ec33f98d..57bce50843 100644 --- a/modules/video_coding/video_codec_initializer.cc +++ b/modules/video_coding/video_codec_initializer.cc @@ -186,7 +186,7 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec( if (nack_enabled && video_codec.VP8()->numberOfTemporalLayers == 1) { RTC_LOG(LS_INFO) << "No temporal layers and nack enabled -> resilience off"; - video_codec.VP8()->resilience = kResilienceOff; + video_codec.VP8()->resilienceOn = false; } break; } diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc index 4b392239bb..85d411804a 100644 --- a/video/video_stream_encoder_unittest.cc +++ b/video/video_stream_encoder_unittest.cc @@ -853,7 +853,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor1S1TLWithNackEnabled) { 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_EQ(kResilienceOff, fake_encoder_.codec_config().VP8()->resilience); + EXPECT_FALSE(fake_encoder_.codec_config().VP8()->resilienceOn); video_stream_encoder_->Stop(); } @@ -873,7 +873,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor2S1TlWithNackEnabled) { 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_EQ(kResilienceOff, fake_encoder_.codec_config().VP8()->resilience); + EXPECT_FALSE(fake_encoder_.codec_config().VP8()->resilienceOn); video_stream_encoder_->Stop(); } @@ -893,7 +893,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S1TLWithNackDisabled) { 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_EQ(kResilientStream, fake_encoder_.codec_config().VP8()->resilience); + EXPECT_TRUE(fake_encoder_.codec_config().VP8()->resilienceOn); video_stream_encoder_->Stop(); } @@ -913,7 +913,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S2TlWithNackEnabled) { EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); // Resilience is on for temporal layers. - EXPECT_EQ(kResilientStream, fake_encoder_.codec_config().VP8()->resilience); + EXPECT_TRUE(fake_encoder_.codec_config().VP8()->resilienceOn); video_stream_encoder_->Stop(); }