From 9f44f8ecc2d94fbfd1aedcbfa5878671bdaef0c3 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 29 Mar 2001 22:32:00 +0000 Subject: [PATCH] Added a plain X videosink, the videosink uses capsnego. adjusted the v4lsrc so that it uses capsnego on the src pad 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 | 1 + gst/gstcaps.c | 5 +++++ gst/gstpad.c | 21 ++++++++++++++++----- gst/gstprops.c | 3 ++- gst/types/gsttypes.c | 4 ++-- test/Makefile.am | 2 +- 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/configure.in b/configure.in index 45e588f..b1b01dd 100644 --- a/configure.in +++ b/configure.in @@ -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 diff --git a/gst/gstcaps.c b/gst/gstcaps.c index 81191dc..174da61 100644 --- a/gst/gstcaps.c +++ b/gst/gstcaps.c @@ -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")) { diff --git a/gst/gstpad.c b/gst/gstpad.c index 69e05a5..215f80f 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -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"); diff --git a/gst/gstprops.c b/gst/gstprops.c index a56a314..162f4a3 100644 --- a/gst/gstprops.c +++ b/gst/gstprops.c @@ -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; } diff --git a/gst/types/gsttypes.c b/gst/types/gsttypes.c index 6165455..9fe885b 100644 --- a/gst/types/gsttypes.c +++ b/gst/types/gsttypes.c @@ -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; } diff --git a/test/Makefile.am b/test/Makefile.am index 9fa0448..a1b93dc 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -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 -- 2.7.4