ext/dv/gstdvdec.*: Make sure we renegotiate aspect ratio when the camera switches.
authorWim Taymans <wim.taymans@gmail.com>
Mon, 18 Oct 2004 17:49:09 +0000 (17:49 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 18 Oct 2004 17:49:09 +0000 (17:49 +0000)
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
ext/dv/gstdvdec.c
ext/dv/gstdvdec.h

index 8073f05..2d728f9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * 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  <rbultje@ronald.bitfreak.net>
 
        * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
index 2b53844..ea89158 100644 (file)
@@ -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:
index f606da1..cf62c3f 100644 (file)
@@ -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;