summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward.hervey@collabora.co.uk>2012-06-14 15:13:31 +0200
committerEdward Hervey <edward.hervey@collabora.co.uk>2012-06-14 15:13:31 +0200
commitce7f65f752dfff124c672a418bbd1728df2fd137 (patch)
tree7b10db407343d5009b192c0c186609320e9685dc
parent1ca115c44bca894a6bbb2334e60a361dbd64a157 (diff)
downloadgst-libav-ce7f65f752dfff124c672a418bbd1728df2fd137.tar.gz
ffmpegviddec: Properly update the interlacing
Fixes #678080
-rw-r--r--ext/ffmpeg/gstffmpegviddec.c25
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);
}