Delete enum VP8ResilienceMode.

We only support on (formely kResilientStream) and off (formely
kResilienceOff). The third mode, kResilientFrames, was not
implemented.

Bug: None
Change-Id: Ida82f6a33eda9d943ea70bc8ae4e6bddb720b0e8
Reviewed-on: https://webrtc-review.googlesource.com/71481
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22984}
This commit is contained in:
Niels Möller
2018-04-20 14:20:01 +02:00
committed by Commit Bot
parent 5987f2a9ae
commit e8a9c45cc1
9 changed files with 15 additions and 35 deletions

View File

@ -17,7 +17,7 @@ VideoCodecVP8 VideoEncoder::GetDefaultVp8Settings() {
VideoCodecVP8 vp8_settings; VideoCodecVP8 vp8_settings;
memset(&vp8_settings, 0, sizeof(vp8_settings)); memset(&vp8_settings, 0, sizeof(vp8_settings));
vp8_settings.resilience = kResilientStream; vp8_settings.resilienceOn = true;
vp8_settings.numberOfTemporalLayers = 1; vp8_settings.numberOfTemporalLayers = 1;
vp8_settings.denoisingOn = true; vp8_settings.denoisingOn = true;
vp8_settings.automaticResizeOn = false; vp8_settings.automaticResizeOn = false;

View File

@ -23,7 +23,7 @@ namespace webrtc {
bool VideoCodecVP8::operator==(const VideoCodecVP8& other) const { bool VideoCodecVP8::operator==(const VideoCodecVP8& other) const {
return (complexity == other.complexity && return (complexity == other.complexity &&
resilience == other.resilience && resilienceOn == other.resilienceOn &&
numberOfTemporalLayers == other.numberOfTemporalLayers && numberOfTemporalLayers == other.numberOfTemporalLayers &&
denoisingOn == other.denoisingOn && denoisingOn == other.denoisingOn &&
automaticResizeOn == other.automaticResizeOn && automaticResizeOn == other.automaticResizeOn &&

View File

@ -349,17 +349,6 @@ enum VideoCodecComplexity {
kComplexityMax = 3 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 // VP8 specific
struct VideoCodecVP8 { struct VideoCodecVP8 {
bool operator==(const VideoCodecVP8& other) const; bool operator==(const VideoCodecVP8& other) const;
@ -367,7 +356,7 @@ struct VideoCodecVP8 {
return !(*this == other); return !(*this == other);
} }
VideoCodecComplexity complexity; VideoCodecComplexity complexity;
VP8ResilienceMode resilience; bool resilienceOn;
unsigned char numberOfTemporalLayers; unsigned char numberOfTemporalLayers;
bool denoisingOn; bool denoisingOn;
bool automaticResizeOn; bool automaticResizeOn;

View File

@ -330,7 +330,7 @@ class TestSimulcastEncoderAdapterFake : public ::testing::Test,
EXPECT_EQ(ref.minBitrate, target.minBitrate); EXPECT_EQ(ref.minBitrate, target.minBitrate);
EXPECT_EQ(ref.maxFramerate, target.maxFramerate); EXPECT_EQ(ref.maxFramerate, target.maxFramerate);
EXPECT_EQ(ref.VP8().complexity, target.VP8().complexity); 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, EXPECT_EQ(ref.VP8().numberOfTemporalLayers,
target.VP8().numberOfTemporalLayers); target.VP8().numberOfTemporalLayers);
EXPECT_EQ(ref.VP8().denoisingOn, target.VP8().denoisingOn); EXPECT_EQ(ref.VP8().denoisingOn, target.VP8().denoisingOn);

View File

@ -68,7 +68,7 @@ std::string CodecSpecificToString(const VideoCodec& codec) {
switch (codec.codecType) { switch (codec.codecType) {
case kVideoCodecVP8: case kVideoCodecVP8:
ss << "complexity: " << codec.VP8().complexity; ss << "complexity: " << codec.VP8().complexity;
ss << "\nresilience: " << codec.VP8().resilience; ss << "\nresilience: " << codec.VP8().resilienceOn;
ss << "\nnum_temporal_layers: " ss << "\nnum_temporal_layers: "
<< static_cast<int>(codec.VP8().numberOfTemporalLayers); << static_cast<int>(codec.VP8().numberOfTemporalLayers);
ss << "\ndenoising: " << codec.VP8().denoisingOn; ss << "\ndenoising: " << codec.VP8().denoisingOn;
@ -143,8 +143,7 @@ void TestConfig::SetCodecSettings(std::string codec_name,
switch (codec_settings.codecType) { switch (codec_settings.codecType) {
case kVideoCodecVP8: case kVideoCodecVP8:
codec_settings.VP8()->resilience = codec_settings.VP8()->resilienceOn = resilience_on;
resilience_on ? kResilientStream : kResilienceOff;
codec_settings.VP8()->numberOfTemporalLayers = codec_settings.VP8()->numberOfTemporalLayers =
static_cast<uint8_t>(num_temporal_layers); static_cast<uint8_t>(num_temporal_layers);
codec_settings.VP8()->denoisingOn = denoising_on; codec_settings.VP8()->denoisingOn = denoising_on;

View File

@ -441,16 +441,8 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst,
configurations_[0].g_lag_in_frames = 0; // 0- no frame lagging configurations_[0].g_lag_in_frames = 0; // 0- no frame lagging
// Set the error resilience mode according to user settings. // Set the error resilience mode according to user settings.
switch (inst->VP8().resilience) { configurations_[0].g_error_resilient =
case kResilienceOff: inst->VP8().resilienceOn ? VPX_ERROR_RESILIENT_DEFAULT : 0;
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
}
// rate control settings // rate control settings
configurations_[0].rc_dropframe_thresh = inst->VP8().frameDroppingOn ? 30 : 0; 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, vpx_codec_control(&(encoders_[i]), VP8E_SET_SCREEN_CONTENT_MODE,
codec_.mode == kScreensharing ? 2 : 0); codec_.mode == kScreensharing ? 2 : 0);
// Apply boost on golden frames (has only effect when resilience is off). // 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; int gf_boost_percent;
if (GetGfBoostPercentageFromFieldTrialGroup(&gf_boost_percent)) { if (GetGfBoostPercentageFromFieldTrialGroup(&gf_boost_percent)) {
vpx_codec_control(&(encoders_[i]), VP8E_SET_GF_CBR_BOOST_PCT, vpx_codec_control(&(encoders_[i]), VP8E_SET_GF_CBR_BOOST_PCT,

View File

@ -214,7 +214,7 @@ class TestVp8Simulcast : public ::testing::Test {
ConfigureStream(kDefaultWidth, kDefaultHeight, kMaxBitrates[2], ConfigureStream(kDefaultWidth, kDefaultHeight, kMaxBitrates[2],
kMinBitrates[2], kTargetBitrates[2], kMinBitrates[2], kTargetBitrates[2],
&settings->simulcastStream[2], temporal_layer_profile[2]); &settings->simulcastStream[2], temporal_layer_profile[2]);
settings->VP8()->resilience = kResilientStream; settings->VP8()->resilienceOn = true;
settings->VP8()->denoisingOn = true; settings->VP8()->denoisingOn = true;
settings->VP8()->automaticResizeOn = false; settings->VP8()->automaticResizeOn = false;
settings->VP8()->frameDroppingOn = true; settings->VP8()->frameDroppingOn = true;

View File

@ -186,7 +186,7 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec(
if (nack_enabled && video_codec.VP8()->numberOfTemporalLayers == 1) { if (nack_enabled && video_codec.VP8()->numberOfTemporalLayers == 1) {
RTC_LOG(LS_INFO) RTC_LOG(LS_INFO)
<< "No temporal layers and nack enabled -> resilience off"; << "No temporal layers and nack enabled -> resilience off";
video_codec.VP8()->resilience = kResilienceOff; video_codec.VP8()->resilienceOn = false;
} }
break; break;
} }

View File

@ -853,7 +853,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor1S1TLWithNackEnabled) {
EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams);
EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
// Resilience is off for no temporal layers with nack on. // 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(); video_stream_encoder_->Stop();
} }
@ -873,7 +873,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOffFor2S1TlWithNackEnabled) {
EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams);
EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
// Resilience is off for no temporal layers and >1 streams with nack on. // 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(); video_stream_encoder_->Stop();
} }
@ -893,7 +893,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S1TLWithNackDisabled) {
EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams);
EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
// Resilience is on for no temporal layers with nack off. // 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(); video_stream_encoder_->Stop();
} }
@ -913,7 +913,7 @@ TEST_F(VideoStreamEncoderTest, Vp8ResilienceIsOnFor1S2TlWithNackEnabled) {
EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams); EXPECT_EQ(kNumStreams, fake_encoder_.codec_config().numberOfSimulcastStreams);
EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers); EXPECT_EQ(kNumTl, fake_encoder_.codec_config().VP8()->numberOfTemporalLayers);
// Resilience is on for temporal layers. // 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(); video_stream_encoder_->Stop();
} }