summaryrefslogtreecommitdiff
path: root/media-libs/libsndfile/files/libsndfile-1.0.29-pointer-aliasing.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/libsndfile/files/libsndfile-1.0.29-pointer-aliasing.patch')
-rw-r--r--media-libs/libsndfile/files/libsndfile-1.0.29-pointer-aliasing.patch128
1 files changed, 0 insertions, 128 deletions
diff --git a/media-libs/libsndfile/files/libsndfile-1.0.29-pointer-aliasing.patch b/media-libs/libsndfile/files/libsndfile-1.0.29-pointer-aliasing.patch
deleted file mode 100644
index 644bf333413f..000000000000
--- a/media-libs/libsndfile/files/libsndfile-1.0.29-pointer-aliasing.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From e5f9469a824fc660494b52ec3edc0dda2509594c Mon Sep 17 00:00:00 2001
-From: Arthur Taylor <art@ified.ca>
-Date: Tue, 8 Sep 2020 09:31:37 -0700
-Subject: [PATCH] Opus: Fix integer bug in header parsing. Fixes issue #581.
-
-Fix errors in parsing an OggOpus header packet where aliased pointers of
-different type widths are used with psf_binheader_readf(), resulting in
-incorrect data or endian issues. Telling psf_binheader_readf() to read
-an integer of fixed width, but then passing a pointer to an integer
-of a different width is a bug.
----
- src/ogg_opus.c | 38 ++++++++++++++++++++++----------------
- 1 file changed, 22 insertions(+), 16 deletions(-)
-
-diff --git a/src/ogg_opus.c b/src/ogg_opus.c
-index de66b061..b40a6fb1 100644
---- a/src/ogg_opus.c
-+++ b/src/ogg_opus.c
-@@ -183,32 +183,32 @@
- #define OGG_OPUS_PREROLL (80 * 48) /* 80 milliseconds */
-
- typedef struct
--{ int version ;
-+{ uint8_t version ;
-
- /* Number of channels, 1...255 */
-- int channels ;
-+ uint8_t channels ;
-
- /* Encoder latency, the amount to skip before valid data comes out. */
-- int preskip ;
-+ uint16_t preskip ;
-
- /* The sample rate of a the encoded source, as it may have been converted. */
-- int input_samplerate ;
-+ int32_t input_samplerate ;
-
- /* 'baked-in' gain to apply, dB S7.8 format. Should be zero when possible. */
- int16_t gain ;
-
- /* Channel mapping type. See OggOpus spec */
-- int channel_mapping ;
-+ uint8_t channel_mapping ;
-
- /* The rest is only used if channel_mapping != 0 */
- /* How many streams are there? */
-- int nb_streams ;
-+ uint8_t nb_streams ;
-
- /* How man of those streams are coupled? (aka stereo) */
-- int nb_coupled ;
-+ uint8_t nb_coupled ;
-
- /* Mapping of opus streams to output channels */
-- unsigned char stream_map [255] ;
-+ uint8_t stream_map [255] ;
- } OpusHeader ;
-
- typedef struct
-@@ -637,6 +637,9 @@ ogg_opus_setup_decoder (SF_PRIVATE *psf, int input_samplerate)
- static int
- ogg_opus_setup_encoder (SF_PRIVATE *psf, OGG_PRIVATE *odata, OPUS_PRIVATE *oopus)
- { int error ;
-+ int lookahead ;
-+ int nb_streams ;
-+ int nb_coupled ;
-
- /* default page latency value (1000ms) */
- oopus->u.encode.latency = 1000 * 48 ;
-@@ -655,16 +658,16 @@ ogg_opus_setup_encoder (SF_PRIVATE *psf, OGG_PRIVATE *odata, OPUS_PRIVATE *oopus
-
- if (psf->sf.channels <= 2)
- { oopus->header.channel_mapping = 0 ;
-- oopus->header.nb_streams = 1 ;
-- oopus->header.nb_coupled = psf->sf.channels - 1 ;
-+ nb_streams = 1 ;
-+ nb_coupled = psf->sf.channels - 1 ;
- oopus->header.stream_map [0] = 0 ;
- oopus->header.stream_map [1] = 1 ;
-
- oopus->u.encode.state = opus_multistream_encoder_create (
- psf->sf.samplerate,
- psf->sf.channels,
-- oopus->header.nb_streams,
-- oopus->header.nb_coupled,
-+ nb_streams,
-+ nb_coupled,
- oopus->header.stream_map,
- OPUS_APPLICATION_AUDIO,
- &error) ;
-@@ -683,17 +686,20 @@ ogg_opus_setup_encoder (SF_PRIVATE *psf, OGG_PRIVATE *odata, OPUS_PRIVATE *oopus
- psf->sf.samplerate,
- psf->sf.channels,
- oopus->header.channel_mapping,
-- &oopus->header.nb_streams,
-- &oopus->header.nb_coupled,
-+ &nb_streams,
-+ &nb_coupled,
- oopus->header.stream_map,
- OPUS_APPLICATION_AUDIO,
- &error) ;
-+
- }
-
- if (error != OPUS_OK)
- { psf_log_printf (psf, "Opus : Error, opus_multistream_encoder_create returned %s\n", opus_strerror (error)) ;
- return SFE_BAD_OPEN_FORMAT ;
- } ;
-+ oopus->header.nb_streams = nb_streams ;
-+ oopus->header.nb_coupled = nb_coupled ;
-
- opus_multistream_encoder_ctl (oopus->u.encode.state, OPUS_GET_BITRATE (&oopus->u.encode.bitrate)) ;
- psf_log_printf (psf, "Encoding at target bitrate of %dbps\n", oopus->u.encode.bitrate) ;
-@@ -711,12 +717,12 @@ ogg_opus_setup_encoder (SF_PRIVATE *psf, OGG_PRIVATE *odata, OPUS_PRIVATE *oopus
- ** GOTCHA: This returns the preskip at the encoder samplerate, not the
- ** granulepos rate of 48000Hz needed for header.preskip.
- */
-- error = opus_multistream_encoder_ctl (oopus->u.encode.state, OPUS_GET_LOOKAHEAD (&oopus->header.preskip)) ;
-+ error = opus_multistream_encoder_ctl (oopus->u.encode.state, OPUS_GET_LOOKAHEAD (&lookahead)) ;
- if (error != OPUS_OK)
- { psf_log_printf (psf, "Opus : OPUS_GET_LOOKAHEAD returned: %s\n", opus_strerror (error)) ;
- return SFE_BAD_OPEN_FORMAT ;
- } ;
-- oopus->header.preskip *= oopus->sr_factor ;
-+ oopus->header.preskip = lookahead * oopus->sr_factor ;
-
- oopus->len = OGG_OPUS_ENCODE_PACKET_LEN (psf->sf.samplerate) ;
- oopus->buffer = malloc (sizeof (float) * psf->sf.channels * oopus->len) ;