diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index 670a898d1576e5ff0cad86630126fa47e64d425e..555eed28fcd7726e2ca9ecfad24b94e0e0ff066b 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -904,7 +904,6 @@ int opus_decoder_ctl(OpusDecoder *st, int request, ...)
    break;
    case OPUS_RESET_STATE:
    {
-      dred_deinit_decoder(&st->dred_decoder);
       OPUS_CLEAR((char*)&st->OPUS_DECODER_RESET_START,
             sizeof(OpusDecoder)-
             ((char*)&st->OPUS_DECODER_RESET_START - (char*)st));
@@ -1075,6 +1074,7 @@ int opus_decoder_get_nb_samples(const OpusDecoder *dec,
 int opus_decoder_dred_input(OpusDecoder *st, const unsigned char *data,
       opus_int32 len, int offset)
 {
+#ifdef ENABLE_NEURAL_FEC
    const unsigned char *data0;
    int len0;
    const unsigned char *payload = NULL;
@@ -1128,5 +1128,6 @@ int opus_decoder_dred_input(OpusDecoder *st, const unsigned char *data,
       lpcnet_plc_fec_clear(silk_dec->sPLC.lpcnet);
       return st->nb_fec_frames;
    }
+#endif
    return 0;
 }
diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index f05b3829237d84a38930e64c7a45cc76e2cf4dc6..67200da817122afeb8a0f58c7de3b0abbe086453 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -1884,10 +1884,12 @@ opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_
            st->silk_bw_switch = 1;
         }
     } else {
+#ifdef ENABLE_NEURAL_FEC
         /* If we're not in SILK mode, delete all the processed DRED.
            TODO: Remove this if/when DRED gets encoded for CELT. */
         DREDEnc *dred = &((silk_encoder*)silk_enc)->state_Fxx[0].sCmn.dred_encoder;
         dred->latents_buffer_fill = 0;
+#endif
     }
 
     /* CELT processing */