diff options
| author | David Schleef <ds@schleef.org> | 2009-02-25 19:58:29 -0800 | 
|---|---|---|
| committer | David Schleef <ds@schleef.org> | 2009-02-25 20:01:36 -0800 | 
| commit | b264c990747bbe837caf89bad1b6c4924750e9fd (patch) | |
| tree | 77a20a74bfa1544ca1fd10249170654cfb030ef2 | |
| parent | ed49e6688cd4f5dae19c10a7b85f3bdabd3c6fd4 (diff) | |
dvdec: Add interlacing info to caps and buffers
| -rw-r--r-- | ext/dv/gstdvdec.c | 10 | ||||
| -rw-r--r-- | ext/dv/gstdvdec.h | 1 | 
2 files changed, 10 insertions, 1 deletions
| 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 <string.h>  #include <math.h> +#include <gst/video/video.h>  #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; diff --git a/ext/dv/gstdvdec.h b/ext/dv/gstdvdec.h index 5f166a14..de8481d9 100644 --- a/ext/dv/gstdvdec.h +++ b/ext/dv/gstdvdec.h @@ -57,6 +57,7 @@ struct _GstDVDec {    gint           quality;    gboolean       PAL; +  gboolean       interlaced;    gboolean       wide;    gint           frame_len; | 
