ext/divx/gstdivxdec.c: Fix for new capsnego - also fixes gst-player with divxdec.
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Sun, 25 Jan 2004 12:31:29 +0000 (12:31 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Sun, 25 Jan 2004 12:31:29 +0000 (12:31 +0000)
Original commit message from CVS:
2004-01-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>

* ext/divx/gstdivxdec.c: (gst_divxdec_init),
(gst_divxdec_negotiate):
Fix for new capsnego - also fixes gst-player with divxdec.

ChangeLog
ext/divx/gstdivxdec.c

index a85068e..05c1762 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-01-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c: (gst_divxdec_init),
+       (gst_divxdec_negotiate):
+         Fix for new capsnego - also fixes gst-player with divxdec.
+
 2004-01-25  Julien MOUTTE  <julien@moutte.net>
 
        * gst-libs/gst/play/gstplay.c: (gst_play_pipeline_setup),
index 869858a..192c655 100644 (file)
@@ -173,7 +173,6 @@ gst_divxdec_init (GstDivxDec *divxdec)
                        gst_static_pad_template_get (&sink_template),
                        "sink");
   gst_element_add_pad(GST_ELEMENT(divxdec), divxdec->sinkpad);
-
   gst_pad_set_chain_function(divxdec->sinkpad, gst_divxdec_chain);
   gst_pad_set_link_function(divxdec->sinkpad, gst_divxdec_connect);
 
@@ -182,6 +181,7 @@ gst_divxdec_init (GstDivxDec *divxdec)
                       gst_static_pad_template_get (&src_template),
                       "src");
   gst_element_add_pad(GST_ELEMENT(divxdec), divxdec->srcpad);
+  gst_pad_use_explicit_caps (divxdec->srcpad);
 
   /* bitrate, etc. */
   divxdec->width = divxdec->height = divxdec->csp = divxdec->bitcnt = -1;
@@ -324,7 +324,6 @@ gst_divxdec_chain (GstPad    *pad,
 static GstPadLinkReturn
 gst_divxdec_negotiate (GstDivxDec *divxdec)
 {
-  GstPadLinkReturn ret;
   GstCaps *caps;
   struct {
     guint32 fourcc;
@@ -414,14 +413,12 @@ gst_divxdec_negotiate (GstDivxDec *divxdec)
                                  NULL);
     /*}*/
 
-    if ((ret = gst_pad_try_set_caps(divxdec->srcpad, caps)) > 0) {
+    if (gst_divxdec_setup(divxdec) &&
+        gst_pad_set_explicit_caps(divxdec->srcpad, caps)) {
       divxdec->csp    = fmt_list[i].csp;
       divxdec->bpp    = fmt_list[i].bpp;
       divxdec->bitcnt = fmt_list[i].bitcnt;
-      if (gst_divxdec_setup(divxdec))
-        return GST_PAD_LINK_OK;
-    } else if (ret == GST_PAD_LINK_DELAYED) {
-      return ret; /* trying more is useless */
+      return GST_PAD_LINK_OK;
     }
   }