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

Reply via email to