[opus] patch to fix error in src/opus_multistream_encoder.c when DISABLE_FLOAT_API is defined
Jean-Marc Valin
jmvalin at jmvalin.ca
Thu Jul 11 17:28:15 PDT 2013
Thanks for noticing. It's fixed now.
Jean-Marc
On 07/08/2013 07:23 PM, Pedro Becerra wrote:
> 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,
> _______________________________________________
> opus mailing list
> opus at xiph.org
> http://lists.xiph.org/mailman/listinfo/opus
>
More information about the opus
mailing list