Fix use_dtx for DISABLE_FLOAT_API
authorFelicia Lim <flim@google.com>
Wed, 20 Jul 2016 11:37:13 +0000 (13:37 +0200)
committerTimothy B. Terriberry <tterribe@xiph.org>
Wed, 20 Jul 2016 12:02:39 +0000 (05:02 -0700)
Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
src/opus_encoder.c

index 2bb29f6..0c4e297 100644 (file)
@@ -86,9 +86,9 @@ struct OpusEncoder {
     int          encoder_buffer;
     int          lfe;
     int          arch;
+    int          use_dtx;                 /* general DTX for both SILK and CELT */
 #ifndef DISABLE_FLOAT_API
     TonalityAnalysisState analysis;
-    int          use_dtx;                 /* general DTX for both SILK and CELT */
 #endif
 
 #define OPUS_ENCODER_RESET_START stream_channels
@@ -1422,9 +1422,13 @@ opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_
        if (st->silk_mode.useInBandFEC && st->silk_mode.packetLossPercentage > (128-voice_est)>>4)
           st->mode = MODE_SILK_ONLY;
        /* When encoding voice and DTX is enabled but the generalized DTX cannot be used,
-          because of complexity and sampling frequency settings,
-          set the encoder to SILK mode so that the SILK DTX can be used */
+          because of complexity and sampling frequency settings, switch to SILK DTX and
+          set the encoder to SILK mode */
+#ifndef DISABLE_FLOAT_API
        st->silk_mode.useDTX = st->use_dtx && !(analysis_info.valid || is_silence);
+#else
+       st->silk_mode.useDTX = st->use_dtx;
+#endif
        if (st->silk_mode.useDTX && voice_est > 100)
           st->mode = MODE_SILK_ONLY;
 #endif