A possible patch (completely untested).
--
Anton Khirnov
>From 33bcb1628a5ab907bce3a83e93dd55a32c64a01d Mon Sep 17 00:00:00 2001
From: Anton Khirnov <an...@khirnov.net>
Date: Sun, 15 Jan 2012 21:22:25 +0100
Subject: [PATCH] ffmpegdec: only override AVCodecContext.get_buffer and pals
for video.
It only handles video, setting it for other types is wrong and actually
breaks with libavcodec containing avcodec_decode_audio4().
---
ext/ffmpeg/gstffmpegdec.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c
index db02a69..a92fcc1 100644
--- a/ext/ffmpeg/gstffmpegdec.c
+++ b/ext/ffmpeg/gstffmpegdec.c
@@ -766,9 +766,11 @@ gst_ffmpegdec_setcaps (GstPad * pad, GstCaps * caps)
}
/* set buffer functions */
- ffmpegdec->context->get_buffer = gst_ffmpegdec_get_buffer;
- ffmpegdec->context->release_buffer = gst_ffmpegdec_release_buffer;
- ffmpegdec->context->draw_horiz_band = NULL;
+ if (oclass->in_plugin->type == AVMEDIA_TYPE_VIDEO) {
+ ffmpegdec->context->get_buffer = gst_ffmpegdec_get_buffer;
+ ffmpegdec->context->release_buffer = gst_ffmpegdec_release_buffer;
+ ffmpegdec->context->draw_horiz_band = NULL;
+ }
/* default is to let format decide if it needs a parser */
ffmpegdec->turnoff_parser = FALSE;
--
1.7.7.3