diff --git a/ChangeLog b/ChangeLog index 1c73e894d9..d9fdeffce8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-11 Wim Taymans + + * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_setcaps): + Copy the codec aspect ratio to the stream, ffmpeg expects them to be the + same. Fixes #560305. + 2008-11-10 Sebastian Dröge * configure.ac: diff --git a/ext/ffmpeg/gstffmpegmux.c b/ext/ffmpeg/gstffmpegmux.c index 5db9ef4158..dc6e716591 100644 --- a/ext/ffmpeg/gstffmpegmux.c +++ b/ext/ffmpeg/gstffmpegmux.c @@ -316,13 +316,22 @@ gst_ffmpegmux_setcaps (GstPad * pad, GstCaps * caps) /* for the format-specific guesses, we'll go to * our famous codec mapper */ - if (gst_ffmpeg_caps_to_codecid (caps, st->codec) != CODEC_ID_NONE) { - GST_LOG_OBJECT (pad, "accepted caps %" GST_PTR_FORMAT, caps); - return TRUE; - } + if (gst_ffmpeg_caps_to_codecid (caps, st->codec) == CODEC_ID_NONE) + goto not_accepted; + + /* copy over the aspect ratios, ffmpeg expects the stream aspect to match the + * codec aspect. */ + st->sample_aspect_ratio = st->codec->sample_aspect_ratio; + + GST_LOG_OBJECT (pad, "accepted caps %" GST_PTR_FORMAT, caps); + return TRUE; - GST_LOG_OBJECT (pad, "rejecting caps %" GST_PTR_FORMAT, caps); - return FALSE; + /* ERRORS */ +not_accepted: + { + GST_LOG_OBJECT (pad, "rejecting caps %" GST_PTR_FORMAT, caps); + return FALSE; + } }