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:
@ -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;
|
||||||
|
@ -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 &&
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user