mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 05:31:15 +00:00
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.
This commit is contained in:
parent
0e93fd2747
commit
9f44f8ecc2
6 changed files with 27 additions and 9 deletions
|
@ -785,6 +785,7 @@ plugins/visualization/synaesthesia/Makefile
|
||||||
plugins/visualization/smoothwave/Makefile
|
plugins/visualization/smoothwave/Makefile
|
||||||
plugins/videosink/Makefile
|
plugins/videosink/Makefile
|
||||||
plugins/videoscale/Makefile
|
plugins/videoscale/Makefile
|
||||||
|
plugins/xvideosink/Makefile
|
||||||
plugins/wav/Makefile
|
plugins/wav/Makefile
|
||||||
plugins/dvdsrc/Makefile
|
plugins/dvdsrc/Makefile
|
||||||
plugins/vcdsrc/Makefile
|
plugins/vcdsrc/Makefile
|
||||||
|
|
|
@ -437,6 +437,8 @@ gst_caps_append (GstCaps *caps, GstCaps *capstoadd)
|
||||||
{
|
{
|
||||||
GstCaps *orig = caps;
|
GstCaps *orig = caps;
|
||||||
|
|
||||||
|
g_return_val_if_fail (caps != capstoadd, caps);
|
||||||
|
|
||||||
if (caps == NULL)
|
if (caps == NULL)
|
||||||
return capstoadd;
|
return capstoadd;
|
||||||
|
|
||||||
|
@ -462,6 +464,8 @@ gst_caps_prepend (GstCaps *caps, GstCaps *capstoadd)
|
||||||
{
|
{
|
||||||
GstCaps *orig = capstoadd;
|
GstCaps *orig = capstoadd;
|
||||||
|
|
||||||
|
g_return_val_if_fail (caps != capstoadd, caps);
|
||||||
|
|
||||||
if (capstoadd == NULL)
|
if (capstoadd == NULL)
|
||||||
return caps;
|
return caps;
|
||||||
|
|
||||||
|
@ -625,6 +629,7 @@ gst_caps_load_thyself (xmlNodePtr parent)
|
||||||
|
|
||||||
caps->refcount = 1;
|
caps->refcount = 1;
|
||||||
caps->lock = g_mutex_new ();
|
caps->lock = g_mutex_new ();
|
||||||
|
caps->next = NULL;
|
||||||
|
|
||||||
while (subfield) {
|
while (subfield) {
|
||||||
if (!strcmp (subfield->name, "name")) {
|
if (!strcmp (subfield->name, "name")) {
|
||||||
|
|
19
gst/gstpad.c
19
gst/gstpad.c
|
@ -957,6 +957,18 @@ gst_pad_renegotiate_func (GstPad *pad, GstPad *peerpad, GstCaps **newcaps, gint
|
||||||
do {
|
do {
|
||||||
gboolean matchtempl;
|
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)));
|
matchtempl = gst_caps_check_compatibility (*newcaps, gst_pad_get_padtemplate_caps (GST_PAD (otherpad)));
|
||||||
|
|
||||||
GST_DEBUG (GST_CAT_ELEMENT_PADS, "caps compatibility check %s\n", (matchtempl?"ok":"fail"));
|
GST_DEBUG (GST_CAT_ELEMENT_PADS, "caps compatibility check %s\n", (matchtempl?"ok":"fail"));
|
||||||
|
@ -977,12 +989,12 @@ gst_pad_renegotiate_func (GstPad *pad, GstPad *peerpad, GstCaps **newcaps, gint
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*newcaps = GST_PAD_CAPS (otherpad);
|
*newcaps = GST_PAD_CAPS (otherpad);
|
||||||
gst_caps_ref(*newcaps);
|
if (*newcaps) gst_caps_ref(*newcaps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*newcaps = GST_PAD_CAPS (otherpad);
|
*newcaps = GST_PAD_CAPS (otherpad);
|
||||||
gst_caps_ref(*newcaps);
|
if (*newcaps) gst_caps_ref(*newcaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
(*counter)++;
|
(*counter)++;
|
||||||
|
@ -1053,9 +1065,8 @@ gst_pad_renegotiate (GstPad *pad)
|
||||||
GST_DEBUG_PAD_NAME(pad), GST_DEBUG_PAD_NAME(peerpad));
|
GST_DEBUG_PAD_NAME(pad), GST_DEBUG_PAD_NAME(peerpad));
|
||||||
|
|
||||||
newcaps = GST_PAD_CAPS (pad);
|
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) {
|
if (result) {
|
||||||
GST_DEBUG (GST_CAT_ELEMENT_PADS, "pads aggreed on caps :)\n");
|
GST_DEBUG (GST_CAT_ELEMENT_PADS, "pads aggreed on caps :)\n");
|
||||||
|
|
|
@ -1043,7 +1043,8 @@ gst_props_load_thyself (xmlNodePtr parent)
|
||||||
|
|
||||||
entry = gst_props_load_thyself_func (field);
|
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;
|
field = field->next;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,11 +40,11 @@ plugin_init (GModule *module)
|
||||||
while (_factories[i].mime) {
|
while (_factories[i].mime) {
|
||||||
gst_type_register (&_factories[i]);
|
gst_type_register (&_factories[i]);
|
||||||
gst_plugin_add_type (plugin, &_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++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// gst_info ("gsttypes: loaded %d standard types\n",i);
|
//gst_info ("gsttypes: loaded %d standard types\n",i);
|
||||||
|
|
||||||
return plugin;
|
return plugin;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
noinst_PROGRAMS = qtest spectrum record wave mp3 teardown buffer mp3parse \
|
noinst_PROGRAMS = qtest spectrum record wave mp3 teardown buffer mp3parse \
|
||||||
mpeg2parse mp1parse mp3play ac3parse ac3play dvdcat fake cobin videotest \
|
mpeg2parse mp1parse mp3play ac3parse ac3play dvdcat fake cobin videotest \
|
||||||
aviparse vidcapture avi2mpg mp2tomp1 mp1tomp1 pipetest \
|
aviparse vidcapture avi2mpg mp2tomp1 mp1tomp1 pipetest \
|
||||||
vidcapture2 mp2toavi mp3tovorbis mpeg2parse2 xmmstest
|
vidcapture2 mp2toavi mp3tovorbis mpeg2parse2 xmmstest videotest2
|
||||||
|
|
||||||
SUBDIRS = xml bindings
|
SUBDIRS = xml bindings
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue