Added a plain X videosink, the videosink uses capsnego. adjusted the v4lsrc so that...
authorWim Taymans <wim.taymans@gmail.com>
Thu, 29 Mar 2001 22:32:00 +0000 (22:32 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 29 Mar 2001 22:32:00 +0000 (22:32 +0000)
Original commit message from CVS:
Added a plain X videosink, the videosink uses capsnego.
adjusted the v4lsrc so that it uses capsnego on the src pad
Small fixed to capsnego and the properties/caps.

configure.in
gst/gstcaps.c
gst/gstpad.c
gst/gstprops.c
gst/types/gsttypes.c
test/Makefile.am

index 45e588f..b1b01dd 100644 (file)
@@ -785,6 +785,7 @@ plugins/visualization/synaesthesia/Makefile
 plugins/visualization/smoothwave/Makefile
 plugins/videosink/Makefile
 plugins/videoscale/Makefile
+plugins/xvideosink/Makefile
 plugins/wav/Makefile
 plugins/dvdsrc/Makefile
 plugins/vcdsrc/Makefile
index 81191dc..174da61 100644 (file)
@@ -436,6 +436,8 @@ GstCaps*
 gst_caps_append (GstCaps *caps, GstCaps *capstoadd)
 {
   GstCaps *orig = caps;
+  
+  g_return_val_if_fail (caps != capstoadd, caps);
 
   if (caps == NULL)
     return capstoadd;
@@ -462,6 +464,8 @@ gst_caps_prepend (GstCaps *caps, GstCaps *capstoadd)
 {
   GstCaps *orig = capstoadd;
   
+  g_return_val_if_fail (caps != capstoadd, caps);
+
   if (capstoadd == NULL)
     return caps;
 
@@ -625,6 +629,7 @@ gst_caps_load_thyself (xmlNodePtr parent)
 
       caps->refcount = 1;
       caps->lock = g_mutex_new ();
+      caps->next = NULL;
        
       while (subfield) {
         if (!strcmp (subfield->name, "name")) {
index 69e05a5..215f80f 100644 (file)
@@ -956,6 +956,18 @@ gst_pad_renegotiate_func (GstPad *pad, GstPad *peerpad, GstCaps **newcaps, gint
 
   do {
     gboolean matchtempl;
+    
+    if (!*newcaps) {
+      if (otherpad->negotiatefunc) {
+        GstRealPad *temp;
+
+        otherpad->negotiatefunc (GST_PAD (otherpad), newcaps, *counter);
+
+        temp = otherpad;
+        otherpad = currentpad;
+        currentpad = temp;
+      }
+    }
 
     matchtempl = gst_caps_check_compatibility (*newcaps, gst_pad_get_padtemplate_caps (GST_PAD (otherpad)));
 
@@ -977,12 +989,12 @@ gst_pad_renegotiate_func (GstPad *pad, GstPad *peerpad, GstCaps **newcaps, gint
       }
       else {
        *newcaps = GST_PAD_CAPS (otherpad);
-       gst_caps_ref(*newcaps);
+       if (*newcaps) gst_caps_ref(*newcaps);
       }
     }
     else {
       *newcaps = GST_PAD_CAPS (otherpad);
-      gst_caps_ref(*newcaps);
+      if (*newcaps) gst_caps_ref(*newcaps);
     }
 
     (*counter)++;
@@ -1053,9 +1065,8 @@ gst_pad_renegotiate (GstPad *pad)
             GST_DEBUG_PAD_NAME(pad), GST_DEBUG_PAD_NAME(peerpad));
 
   newcaps = GST_PAD_CAPS (pad);
-  g_assert (newcaps != NULL);
-
-  result = gst_pad_renegotiate_func (pad, GST_PAD (peerpad), &newcaps, &counter);
+  
+  result = gst_pad_renegotiate_func (GST_PAD (currentpad), GST_PAD (otherpad), &newcaps, &counter);
 
   if (result) {
     GST_DEBUG (GST_CAT_ELEMENT_PADS, "pads aggreed on caps :)\n");
index a56a314..162f4a3 100644 (file)
@@ -1043,7 +1043,8 @@ gst_props_load_thyself (xmlNodePtr parent)
 
       entry = gst_props_load_thyself_func (field);
 
-      props->properties = g_list_insert_sorted (props->properties, entry, props_compare_func);
+      if (entry) 
+       props->properties = g_list_insert_sorted (props->properties, entry, props_compare_func);
     }
     field = field->next;
   }
index 6165455..9fe885b 100644 (file)
@@ -40,11 +40,11 @@ plugin_init (GModule *module)
   while (_factories[i].mime) {
     gst_type_register (&_factories[i]);
     gst_plugin_add_type (plugin, &_factories[i]);
-//    DEBUG("added factory #%d '%s'\n",i,_factories[i].mime);
+    GST_DEBUG(0, "added factory #%d '%s'\n",i,_factories[i].mime);
     i++;
   }
 
-//  gst_info ("gsttypes: loaded %d standard types\n",i);
+  //gst_info ("gsttypes: loaded %d standard types\n",i);
 
   return plugin;
 }
index 9fa0448..a1b93dc 100644 (file)
@@ -3,7 +3,7 @@
 noinst_PROGRAMS = qtest spectrum record wave mp3 teardown buffer mp3parse \
                  mpeg2parse mp1parse mp3play ac3parse ac3play dvdcat fake cobin videotest \
                  aviparse vidcapture avi2mpg mp2tomp1 mp1tomp1 pipetest \
-                 vidcapture2 mp2toavi mp3tovorbis mpeg2parse2 xmmstest
+                 vidcapture2 mp2toavi mp3tovorbis mpeg2parse2 xmmstest videotest2
 
 SUBDIRS = xml bindings