+2005-07-11 Luca Ognibene <luogni@tin.it>
+
+ * ext/ffmpeg/gstffmpegdec.c (struct _GstFFMpegDec)
+ (gst_ffmpegdec_open, gst_ffmpegdec_negotiate):
+ Cache the pixel format value and renegotiate the pipeline
+ if this value changes. Fixes segfault when decoding a
+ stream with different colorspaces like a sequence of jpeg.
+
2005-07-11 daniel fischer <dan@f3c.com>
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
union {
struct {
gint width, height, fps, fps_base;
+ enum PixelFormat pix_fmt;
} video;
struct {
gint channels, samplerate;
ffmpegdec->format.video.height = 0;
ffmpegdec->format.video.fps = 0;
ffmpegdec->format.video.fps_base = 0;
+ ffmpegdec->format.video.pix_fmt = PIX_FMT_NB;
break;
case CODEC_TYPE_AUDIO:
ffmpegdec->format.audio.samplerate = 0;
ffmpegdec->format.video.height == ffmpegdec->context->height &&
ffmpegdec->format.video.fps == ffmpegdec->context->frame_rate &&
ffmpegdec->format.video.fps_base ==
- ffmpegdec->context->frame_rate_base)
+ ffmpegdec->context->frame_rate_base &&
+ ffmpegdec->format.video.pix_fmt == ffmpegdec->context->pix_fmt)
return TRUE;
GST_DEBUG ("Renegotiating video from %dx%d@%d/%dfps to %dx%d@%d/%dfps",
ffmpegdec->format.video.width, ffmpegdec->format.video.height,
ffmpegdec->format.video.height = ffmpegdec->context->height;
ffmpegdec->format.video.fps = ffmpegdec->context->frame_rate;
ffmpegdec->format.video.fps_base = ffmpegdec->context->frame_rate_base;
+ ffmpegdec->format.video.pix_fmt = ffmpegdec->context->pix_fmt;
break;
case CODEC_TYPE_AUDIO:
if (ffmpegdec->format.audio.samplerate ==