From 98167578c45b91b5b73f4e1165fb68d03b10ed92 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 6 Mar 2009 17:37:51 +0100 Subject: ffmpegdec: Make sure we provide 16 byte aligned data to ffmpeg. Fixes #572863 We simply allocate the memory using ffmpeg's av_malloc which provides us with properly memalign'ed data. This avoids write-outside-of-bounds when sse/altivec code is being used. --- ext/ffmpeg/gstffmpegdec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'ext') diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index aeec910..019140c 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -1794,8 +1794,12 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec * ffmpegdec, GST_TIME_ARGS (in_timestamp), GST_TIME_ARGS (in_duration), GST_TIME_ARGS (ffmpegdec->next_ts)); - /* outgoing buffer */ - *outbuf = gst_buffer_new_and_alloc (AVCODEC_MAX_AUDIO_FRAME_SIZE); + /* outgoing buffer. We use av_malloc() to have properly aligned memory. */ + *outbuf = gst_buffer_new (); + GST_BUFFER_DATA (*outbuf) = GST_BUFFER_MALLOCDATA (*outbuf) = + av_malloc (AVCODEC_MAX_AUDIO_FRAME_SIZE); + GST_BUFFER_SIZE (*outbuf) = AVCODEC_MAX_AUDIO_FRAME_SIZE; + GST_BUFFER_FREE_FUNC (*outbuf) = av_free; len = avcodec_decode_audio2 (ffmpegdec->context, (int16_t *) GST_BUFFER_DATA (*outbuf), &have_data, data, size); -- cgit v1.2.3