From cda34e6a8df5fe1a55358ce73f13c764e7613f45 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 18 Oct 2004 17:49:09 +0000 Subject: [PATCH] ext/dv/gstdvdec.*: Make sure we renegotiate aspect ratio when the camera switches. Original commit message from CVS: * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_video_getcaps), (gst_dvdec_video_link), (gst_dvdec_push), (gst_dvdec_loop): * ext/dv/gstdvdec.h: Make sure we renegotiate aspect ratio when the camera switches. --- ChangeLog | 7 +++++++ ext/dv/gstdvdec.c | 12 +++++++++--- ext/dv/gstdvdec.h | 5 +++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8073f05..2d728f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-10-18 Wim Taymans + + * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_video_getcaps), + (gst_dvdec_video_link), (gst_dvdec_push), (gst_dvdec_loop): + * ext/dv/gstdvdec.h: + Make sure we renegotiate aspect ratio when the camera switches. + 2004-10-18 Ronald S. Bultje * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query), diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c index 2b53844..ea89158 100644 --- a/ext/dv/gstdvdec.c +++ b/ext/dv/gstdvdec.c @@ -400,6 +400,7 @@ gst_dvdec_init (GstDVDec * dvdec) dvdec->height = 0; dvdec->frequency = 0; dvdec->channels = 0; + dvdec->wide = FALSE; dvdec->drop_factor = 1; dvdec->clamp_luma = FALSE; @@ -771,7 +772,7 @@ gst_dvdec_video_getcaps (GstPad * pad) gint par_x, par_y; if (dvdec->PAL) { - if (dv_format_wide (dvdec->decoder)) { + if (dvdec->wide) { par_x = PAL_WIDE_PAR_X; par_y = PAL_WIDE_PAR_Y; } else { @@ -779,7 +780,7 @@ gst_dvdec_video_getcaps (GstPad * pad) par_y = PAL_NORMAL_PAR_Y; } } else { - if (dv_format_wide (dvdec->decoder)) { + if (dvdec->wide) { par_x = NTSC_WIDE_PAR_X; par_y = NTSC_WIDE_PAR_Y; } else { @@ -882,6 +883,7 @@ gst_dvdec_loop (GstElement * element) guint32 length, got_bytes; GstClockTime ts, duration; gdouble fps; + gboolean wide; dvdec = GST_DVDEC (element); @@ -912,6 +914,7 @@ gst_dvdec_loop (GstElement * element) fps = (dvdec->PAL ? PAL_FRAMERATE : NTSC_FRAMERATE); height = (dvdec->PAL ? PAL_HEIGHT : NTSC_HEIGHT); length = (dvdec->PAL ? PAL_BUFFER : NTSC_BUFFER); + wide = dv_format_wide (dvdec->decoder); if (length != dvdec->length) { dvdec->length = length; @@ -1002,9 +1005,11 @@ gst_dvdec_loop (GstElement * element) } dvdec->framecount = 0; - if ((dvdec->framerate != fps) || (dvdec->height != height)) { + if ((dvdec->framerate != fps) || (dvdec->height != height) + || dvdec->wide != wide) { dvdec->height = height; dvdec->framerate = fps; + dvdec->wide = wide; if (GST_PAD_LINK_FAILED (gst_pad_renegotiate (dvdec->videosrcpad))) { GST_ELEMENT_ERROR (dvdec, CORE, NEGOTIATION, (NULL), (NULL)); @@ -1038,6 +1043,7 @@ gst_dvdec_loop (GstElement * element) } else { dvdec->height = height; dvdec->framerate = fps; + dvdec->wide = wide; } end: diff --git a/ext/dv/gstdvdec.h b/ext/dv/gstdvdec.h index f606da1..cf62c3f 100644 --- a/ext/dv/gstdvdec.h +++ b/ext/dv/gstdvdec.h @@ -59,8 +59,9 @@ struct _GstDVDec { gboolean PAL; gdouble framerate; gint height; - gint frequency; - gint channels; + gint frequency; + gint channels; + gboolean wide; gint length; gint framecount; -- 2.7.4