Index: webrtc/modules/audio_coding/main/acm2/codec_manager.cc |
diff --git a/webrtc/modules/audio_coding/main/acm2/codec_manager.cc b/webrtc/modules/audio_coding/main/acm2/codec_manager.cc |
index e4070c76aef7648c5ecba92a0fea1bff06d9e70b..ac21020dc2e3847b4e79b2dde50fad31f405092b 100644 |
--- a/webrtc/modules/audio_coding/main/acm2/codec_manager.cc |
+++ b/webrtc/modules/audio_coding/main/acm2/codec_manager.cc |
@@ -319,8 +319,15 @@ void CodecManager::RegisterEncoder(AudioEncoder* external_speech_encoder) { |
if (send_codec_inst_.channels != 1) |
dtx_enabled_ = false; |
- codec_fec_enabled_ = |
- codec_fec_enabled_ && codec_owner_.Encoder()->SetFec(codec_fec_enabled_); |
+ if (codec_fec_enabled_) { |
+ // Switch FEC on. On failure, remember that FEC is off. |
+ if (!external_speech_encoder->SetFec(true)) |
+ codec_fec_enabled_ = false; |
+ } else { |
+ // Switch FEC off. This shouldn't fail. |
+ const bool success = external_speech_encoder->SetFec(false); |
+ RTC_DCHECK(success); |
+ } |
int cng_pt = dtx_enabled_ |
? CngPayloadType(external_speech_encoder->SampleRateHz()) |
: -1; |