[opus] patch to fix error in src/opus_multistream_encoder.c when DISABLE_FLOAT_API is defined

Pedro Becerra pbecerr at gmail.com
Mon Jul 8 16:23:43 PDT 2013


Hello,
for your consideration.
The following patch moves the channel_pos()
function from within the #if !defined(DISABLE_FLOAT_API).
This change is required when compiling with FIXED_POINT
and DISABLE_FLOAT_API defined.

####  ###

diff --git a/src/opus_multistream_encoder.c b/src/opus_multistream_encoder.c
index 3efab53..6f3eb53 100644
--- a/src/opus_multistream_encoder.c
+++ b/src/opus_multistream_encoder.c
@@ -454,7 +454,9 @@ static int opus_multistream_encode_native
     unsigned char tmp_data[MS_FRAME_TMP];
     OpusRepacketizer rp;
     opus_int32 complexity;
+#ifndef FIXED_POINT
     AnalysisInfo analysis_info;
+#endif
     const CELTMode *celt_mode;
     opus_int32 bitrates[256];
     opus_val16 bandLogE[42];
@@ -629,27 +631,6 @@ static int opus_multistream_encode_native

  }

-#if !defined(DISABLE_FLOAT_API)
-static void opus_copy_channel_in_float(
-  opus_val16 *dst,
-  int dst_stride,
-  const void *src,
-  int src_stride,
-  int src_channel,
-  int frame_size
-)
-{
-   const float *float_src;
-   opus_int32 i;
-   float_src = (const float *)src;
-   for (i=0;i<frame_size;i++)
-#if defined(FIXED_POINT)
-      dst[i*dst_stride] = FLOAT2INT16(float_src[i*src_stride+src_channel]);
-#else
-      dst[i*dst_stride] = float_src[i*src_stride+src_channel];
-#endif
-}
-
  static void channel_pos(int channels, int pos[8])
  {
     /* Position in the mix: 0 don't mix, 1: left, 2: center, 3:right */
@@ -689,6 +670,27 @@ static void channel_pos(int channels, int pos[8])
     }
  }

+#if !defined(DISABLE_FLOAT_API)
+static void opus_copy_channel_in_float(
+  opus_val16 *dst,
+  int dst_stride,
+  const void *src,
+  int src_stride,
+  int src_channel,
+  int frame_size
+)
+{
+   const float *float_src;
+   opus_int32 i;
+   float_src = (const float *)src;
+   for (i=0;i<frame_size;i++)
+#if defined(FIXED_POINT)
+      dst[i*dst_stride] = FLOAT2INT16(float_src[i*src_stride+src_channel]);
+#else
+      dst[i*dst_stride] = float_src[i*src_stride+src_channel];
+#endif
+}
+
  static void opus_surround_downmix_float(
    opus_val16 *dst,
    const void *src,


More information about the opus mailing list