From b264c990747bbe837caf89bad1b6c4924750e9fd Mon Sep 17 00:00:00 2001 From: David Schleef Date: Wed, 25 Feb 2009 19:58:29 -0800 Subject: dvdec: Add interlacing info to caps and buffers --- ext/dv/gstdvdec.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'ext/dv/gstdvdec.c') diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c index ade97966..fad43be2 100644 --- a/ext/dv/gstdvdec.c +++ b/ext/dv/gstdvdec.c @@ -43,6 +43,7 @@ #endif #include #include +#include #include "gstdvdec.h" @@ -328,7 +329,7 @@ gst_dvdec_src_negotiate (GstDVDec * dvdec) "framerate", GST_TYPE_FRACTION, dvdec->framerate_numerator, dvdec->framerate_denominator, "pixel-aspect-ratio", GST_TYPE_FRACTION, dvdec->par_x, - dvdec->par_y, NULL); + dvdec->par_y, "interlaced", G_TYPE_BOOLEAN, dvdec->interlaced, NULL); gst_pad_set_caps (dvdec->srcpad, othercaps); gst_caps_unref (othercaps); @@ -434,6 +435,7 @@ gst_dvdec_chain (GstPad * pad, GstBuffer * buf) dvdec->height = (dvdec->PAL ? PAL_HEIGHT : NTSC_HEIGHT); + dvdec->interlaced = !dv_is_progressive (dvdec->decoder); /* negotiate if not done yet */ if (!dvdec->src_negotiated) { @@ -466,6 +468,12 @@ gst_dvdec_chain (GstPad * pad, GstBuffer * buf) dv_decode_full_frame (dvdec->decoder, inframe, e_dv_color_yuv, outframe_ptrs, outframe_pitches); + if (dvdec->PAL) { + GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_TFF); + } else { + GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_TFF); + } + GST_BUFFER_OFFSET (outbuf) = GST_BUFFER_OFFSET (buf); GST_BUFFER_OFFSET_END (outbuf) = GST_BUFFER_OFFSET_END (buf); GST_BUFFER_TIMESTAMP (outbuf) = cstart; -- cgit From 9f3ad53ca868ce4e33efac104d77391a3a0cf57b Mon Sep 17 00:00:00 2001 From: David Schleef Date: Fri, 27 Feb 2009 23:25:32 -0800 Subject: Fix the field dominance PAL is TFF, NTSC is BFF. Some day I will learn to keep this straight. --- ext/dv/gstdvdec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/dv/gstdvdec.c') diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c index fad43be2..550b99d1 100644 --- a/ext/dv/gstdvdec.c +++ b/ext/dv/gstdvdec.c @@ -469,9 +469,9 @@ gst_dvdec_chain (GstPad * pad, GstBuffer * buf) e_dv_color_yuv, outframe_ptrs, outframe_pitches); if (dvdec->PAL) { - GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_TFF); - } else { GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_TFF); + } else { + GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_TFF); } GST_BUFFER_OFFSET (outbuf) = GST_BUFFER_OFFSET (buf); -- cgit