diff options
author | Edward Hervey <edward.hervey@collabora.co.uk> | 2012-06-14 15:13:31 +0200 |
---|---|---|
committer | Edward Hervey <edward.hervey@collabora.co.uk> | 2012-06-14 15:13:31 +0200 |
commit | ce7f65f752dfff124c672a418bbd1728df2fd137 (patch) | |
tree | 7b10db407343d5009b192c0c186609320e9685dc | |
parent | 1ca115c44bca894a6bbb2334e60a361dbd64a157 (diff) | |
download | gst-libav-ce7f65f752dfff124c672a418bbd1728df2fd137.tar.gz |
ffmpegviddec: Properly update the interlacing
Fixes #678080
-rw-r--r-- | ext/ffmpeg/gstffmpegviddec.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/ext/ffmpeg/gstffmpegviddec.c b/ext/ffmpeg/gstffmpegviddec.c index a4afe08..8e8b03d 100644 --- a/ext/ffmpeg/gstffmpegviddec.c +++ b/ext/ffmpeg/gstffmpegviddec.c @@ -1073,20 +1073,21 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec, (guint64) ffmpegdec->picture->reordered_opaque); GST_DEBUG_OBJECT (ffmpegdec, "repeat_pict:%d", ffmpegdec->picture->repeat_pict); - GST_DEBUG_OBJECT (ffmpegdec, "interlaced_frame:%d", - ffmpegdec->picture->interlaced_frame); + GST_DEBUG_OBJECT (ffmpegdec, "interlaced_frame:%d (current:%d)", + ffmpegdec->picture->interlaced_frame, + GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->input_state->info)); - if (G_UNLIKELY (ffmpegdec->output_state + if (G_UNLIKELY (ffmpegdec->input_state && ffmpegdec->picture->interlaced_frame != - GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->output_state->info))) { + GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->input_state->info))) { GST_WARNING ("Change in interlacing ! picture:%d, recorded:%d", ffmpegdec->picture->interlaced_frame, - GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->output_state->info)); + GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->input_state->info)); if (ffmpegdec->picture->interlaced_frame) - GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->output_state->info) = + GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->input_state->info) = GST_VIDEO_INTERLACE_MODE_INTERLEAVED; else - GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->output_state->info) = + GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->input_state->info) = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; gst_ffmpegviddec_negotiate (ffmpegdec, TRUE); } @@ -1097,17 +1098,17 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec, if (G_UNLIKELY (*ret != GST_FLOW_OK)) goto no_output; - if (G_UNLIKELY (ffmpegdec->output_state + if (G_UNLIKELY (ffmpegdec->input_state && ffmpegdec->picture->interlaced_frame != - GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->output_state->info))) { + GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->input_state->info))) { GST_WARNING ("Change in interlacing ! picture:%d, recorded:%d", ffmpegdec->picture->interlaced_frame, - GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->output_state->info)); + GST_VIDEO_INFO_IS_INTERLACED (&ffmpegdec->input_state->info)); if (ffmpegdec->picture->interlaced_frame) - GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->output_state->info) = + GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->input_state->info) = GST_VIDEO_INTERLACE_MODE_INTERLEAVED; else - GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->output_state->info) = + GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->input_state->info) = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; gst_ffmpegviddec_negotiate (ffmpegdec, TRUE); } |