2004-01-20 14:09:42 +00:00
|
|
|
/* GStreamer
|
|
|
|
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
|
|
|
* 2000 Wim Taymans <wtay@chello.be>
|
|
|
|
* 2004 Thomas Vander Stichele <thomas@apestaart.org>
|
|
|
|
*
|
|
|
|
* gst-inspect.c: tool to inspect the GStreamer registry
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
2003-06-29 14:05:49 +00:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "config.h"
|
|
|
|
#endif
|
|
|
|
|
2005-09-09 13:26:54 +00:00
|
|
|
#include <gst/controller/gstcontroller.h>
|
2004-02-03 11:23:59 +00:00
|
|
|
|
2006-05-05 17:07:42 +00:00
|
|
|
#include "tools.h"
|
2004-02-03 11:23:59 +00:00
|
|
|
|
2001-01-04 10:47:39 +00:00
|
|
|
#include <string.h>
|
2004-02-03 11:23:59 +00:00
|
|
|
#include <locale.h>
|
2004-06-14 11:04:06 +00:00
|
|
|
#include <glib/gprintf.h>
|
|
|
|
|
2007-10-15 07:11:04 +00:00
|
|
|
static char *_name = NULL;
|
2004-06-14 11:04:06 +00:00
|
|
|
|
|
|
|
static int print_element_info (GstElementFactory * factory,
|
|
|
|
gboolean print_names);
|
|
|
|
|
|
|
|
void
|
|
|
|
n_print (const char *format, ...)
|
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
gint retval;
|
|
|
|
|
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
|
|
|
|
|
|
|
va_start (args, format);
|
|
|
|
retval = g_vprintf (format, args);
|
|
|
|
va_end (args);
|
|
|
|
}
|
2001-01-03 07:38:45 +00:00
|
|
|
|
2004-04-29 01:44:13 +00:00
|
|
|
static gboolean
|
2005-03-07 18:27:42 +00:00
|
|
|
print_field (GQuark field, const GValue * value, gpointer pfx)
|
2004-04-29 01:44:13 +00:00
|
|
|
{
|
|
|
|
gchar *str = gst_value_serialize (value);
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%s %15s: %s\n", (gchar *) pfx, g_quark_to_string (field), str);
|
2004-04-29 01:44:13 +00:00
|
|
|
g_free (str);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2003-03-16 20:06:02 +00:00
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
print_caps (const GstCaps * caps, const gchar * pfx)
|
2001-08-21 20:16:48 +00:00
|
|
|
{
|
2004-04-29 01:44:13 +00:00
|
|
|
guint i;
|
|
|
|
|
|
|
|
g_return_if_fail (caps != NULL);
|
|
|
|
|
|
|
|
if (gst_caps_is_any (caps)) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%sANY\n", pfx);
|
2004-04-29 01:44:13 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (gst_caps_is_empty (caps)) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%sEMPTY\n", pfx);
|
2004-04-29 01:44:13 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < gst_caps_get_size (caps); i++) {
|
|
|
|
GstStructure *structure = gst_caps_get_structure (caps, i);
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%s%s\n", pfx, gst_structure_get_name (structure));
|
2004-04-29 01:44:13 +00:00
|
|
|
gst_structure_foreach (structure, print_field, (gpointer) pfx);
|
|
|
|
}
|
2002-09-17 21:32:26 +00:00
|
|
|
}
|
|
|
|
|
2005-05-09 10:53:13 +00:00
|
|
|
#if 0
|
2003-03-16 20:06:02 +00:00
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
print_formats (const GstFormat * formats)
|
2002-07-24 21:13:30 +00:00
|
|
|
{
|
|
|
|
while (formats && *formats) {
|
2002-09-29 17:17:28 +00:00
|
|
|
const GstFormatDefinition *definition;
|
|
|
|
|
|
|
|
definition = gst_format_get_details (*formats);
|
|
|
|
if (definition)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\t\t(%d):\t%s (%s)\n", *formats,
|
2004-03-15 19:27:17 +00:00
|
|
|
definition->nick, definition->description);
|
2002-07-30 19:25:24 +00:00
|
|
|
else
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\t\t(%d):\tUnknown format\n", *formats);
|
2002-07-30 19:25:24 +00:00
|
|
|
|
2002-07-24 21:13:30 +00:00
|
|
|
formats++;
|
|
|
|
}
|
|
|
|
}
|
2005-05-09 10:53:13 +00:00
|
|
|
#endif
|
2002-07-24 21:13:30 +00:00
|
|
|
|
2003-03-16 20:06:02 +00:00
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
print_query_types (const GstQueryType * types)
|
2003-01-07 20:49:46 +00:00
|
|
|
{
|
|
|
|
while (types && *types) {
|
|
|
|
const GstQueryTypeDefinition *definition;
|
|
|
|
|
|
|
|
definition = gst_query_type_get_details (*types);
|
|
|
|
if (definition)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\t\t(%d):\t%s (%s)\n", *types,
|
2004-03-15 19:27:17 +00:00
|
|
|
definition->nick, definition->description);
|
2003-01-07 20:49:46 +00:00
|
|
|
else
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\t\t(%d):\tUnknown query format\n", *types);
|
2003-01-07 20:49:46 +00:00
|
|
|
|
|
|
|
types++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
#ifndef GST_DISABLE_ENUMTYPES
|
2005-05-09 10:53:13 +00:00
|
|
|
#if 0
|
2003-03-16 20:06:02 +00:00
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
print_event_masks (const GstEventMask * masks)
|
2002-07-24 21:13:30 +00:00
|
|
|
{
|
|
|
|
GType event_type;
|
|
|
|
GEnumClass *klass;
|
|
|
|
GType event_flags;
|
|
|
|
GFlagsClass *flags_class = NULL;
|
|
|
|
|
2004-03-13 15:27:01 +00:00
|
|
|
event_type = gst_event_type_get_type ();
|
2002-07-24 21:13:30 +00:00
|
|
|
klass = (GEnumClass *) g_type_class_ref (event_type);
|
|
|
|
|
|
|
|
while (masks && masks->type) {
|
|
|
|
GEnumValue *value;
|
|
|
|
gint flags = 0, index = 0;
|
|
|
|
|
|
|
|
switch (masks->type) {
|
|
|
|
case GST_EVENT_SEEK:
|
2004-03-15 19:27:17 +00:00
|
|
|
flags = masks->flags;
|
|
|
|
event_flags = gst_seek_type_get_type ();
|
|
|
|
flags_class = (GFlagsClass *) g_type_class_ref (event_flags);
|
|
|
|
break;
|
2002-07-24 21:13:30 +00:00
|
|
|
default:
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-07-24 21:13:30 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2002-07-24 21:13:30 +00:00
|
|
|
value = g_enum_get_value (klass, masks->type);
|
2002-09-09 22:07:56 +00:00
|
|
|
g_print ("\t\t%s ", value->value_nick);
|
2002-07-24 21:13:30 +00:00
|
|
|
|
|
|
|
while (flags) {
|
|
|
|
GFlagsValue *value;
|
|
|
|
|
|
|
|
if (flags & 1) {
|
2004-03-15 19:27:17 +00:00
|
|
|
value = g_flags_get_first_value (flags_class, 1 << index);
|
2002-07-24 21:13:30 +00:00
|
|
|
|
2004-03-15 19:27:17 +00:00
|
|
|
if (value)
|
|
|
|
g_print ("| %s ", value->value_nick);
|
|
|
|
else
|
|
|
|
g_print ("| ? ");
|
2002-07-24 21:13:30 +00:00
|
|
|
}
|
|
|
|
flags >>= 1;
|
|
|
|
index++;
|
|
|
|
}
|
2002-09-09 22:07:56 +00:00
|
|
|
g_print ("\n");
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2002-07-24 21:13:30 +00:00
|
|
|
masks++;
|
|
|
|
}
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
2005-05-09 10:53:13 +00:00
|
|
|
#endif
|
2004-05-23 17:52:54 +00:00
|
|
|
#else
|
|
|
|
static void
|
|
|
|
print_event_masks (const GstEventMask * masks)
|
|
|
|
{
|
|
|
|
}
|
2003-02-10 20:32:32 +00:00
|
|
|
#endif
|
2004-05-23 17:52:54 +00:00
|
|
|
|
|
|
|
static char *
|
|
|
|
get_rank_name (gint rank)
|
|
|
|
{
|
|
|
|
switch (rank) {
|
|
|
|
case GST_RANK_NONE:
|
|
|
|
return "none";
|
|
|
|
case GST_RANK_MARGINAL:
|
|
|
|
return "marginal";
|
|
|
|
case GST_RANK_SECONDARY:
|
|
|
|
return "secondary";
|
|
|
|
case GST_RANK_PRIMARY:
|
|
|
|
return "primary";
|
|
|
|
default:
|
|
|
|
return "unknown";
|
|
|
|
}
|
2002-07-24 21:13:30 +00:00
|
|
|
}
|
|
|
|
|
2001-07-25 21:40:42 +00:00
|
|
|
static void
|
2004-05-23 17:52:54 +00:00
|
|
|
print_factory_details_info (GstElementFactory * factory)
|
|
|
|
{
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("Factory Details:\n");
|
|
|
|
n_print (" Long name:\t%s\n", factory->details.longname);
|
|
|
|
n_print (" Class:\t%s\n", factory->details.klass);
|
|
|
|
n_print (" Description:\t%s\n", factory->details.description);
|
|
|
|
n_print (" Author(s):\t%s\n", factory->details.author);
|
|
|
|
n_print (" Rank:\t\t%s (%d)\n",
|
2004-05-23 17:52:54 +00:00
|
|
|
get_rank_name (GST_PLUGIN_FEATURE (factory)->rank),
|
|
|
|
GST_PLUGIN_FEATURE (factory)->rank);
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
print_hierarchy (GType type, gint level, gint * maxlevel)
|
2001-07-25 21:40:42 +00:00
|
|
|
{
|
|
|
|
GType parent;
|
|
|
|
gint i;
|
|
|
|
|
|
|
|
parent = g_type_parent (type);
|
|
|
|
|
|
|
|
*maxlevel = *maxlevel + 1;
|
|
|
|
level++;
|
|
|
|
|
|
|
|
if (parent)
|
2004-05-23 17:52:54 +00:00
|
|
|
print_hierarchy (parent, level, maxlevel);
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
|
|
|
|
2004-03-13 15:27:01 +00:00
|
|
|
for (i = 1; i < *maxlevel - level; i++)
|
|
|
|
g_print (" ");
|
|
|
|
if (*maxlevel - level)
|
2001-07-25 21:40:42 +00:00
|
|
|
g_print (" +----");
|
|
|
|
|
|
|
|
g_print ("%s\n", g_type_name (type));
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2001-07-25 21:40:42 +00:00
|
|
|
if (level == 1)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
2001-07-25 21:40:42 +00:00
|
|
|
}
|
|
|
|
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
static void
|
|
|
|
print_interfaces (GType type)
|
|
|
|
{
|
|
|
|
guint n_ifaces;
|
|
|
|
GType *iface, *ifaces = g_type_interfaces (type, &n_ifaces);
|
|
|
|
|
|
|
|
if (ifaces) {
|
|
|
|
if (n_ifaces) {
|
2007-10-15 07:11:04 +00:00
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
2006-05-24 09:00:10 +00:00
|
|
|
g_print (_("Implemented Interfaces:\n"));
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
iface = ifaces;
|
|
|
|
while (*iface) {
|
2007-10-15 07:11:04 +00:00
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
|
|
|
g_print (" %s\n", g_type_name (*iface));
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
iface++;
|
|
|
|
}
|
2007-10-15 07:11:04 +00:00
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
|
|
|
g_print ("\n");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_free (ifaces);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2002-05-08 20:40:48 +00:00
|
|
|
static void
|
2004-05-23 17:52:54 +00:00
|
|
|
print_element_properties_info (GstElement * element)
|
2002-05-08 20:40:48 +00:00
|
|
|
{
|
|
|
|
GParamSpec **property_specs;
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
guint num_properties, i;
|
2002-09-19 18:14:09 +00:00
|
|
|
gboolean readable;
|
2005-08-29 19:59:52 +00:00
|
|
|
gboolean first_flag;
|
2003-03-16 20:06:02 +00:00
|
|
|
|
|
|
|
property_specs = g_object_class_list_properties
|
2004-03-13 15:27:01 +00:00
|
|
|
(G_OBJECT_GET_CLASS (element), &num_properties);
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Element Properties:\n");
|
2002-05-08 20:40:48 +00:00
|
|
|
|
|
|
|
for (i = 0; i < num_properties; i++) {
|
|
|
|
GValue value = { 0, };
|
|
|
|
GParamSpec *param = property_specs[i];
|
2004-03-13 15:27:01 +00:00
|
|
|
|
2002-09-19 18:14:09 +00:00
|
|
|
readable = FALSE;
|
2002-05-08 20:40:48 +00:00
|
|
|
|
2002-09-19 18:14:09 +00:00
|
|
|
g_value_init (&value, param->value_type);
|
2005-08-29 19:59:52 +00:00
|
|
|
|
|
|
|
n_print (" %-20s: %s\n", g_param_spec_get_name (param),
|
|
|
|
g_param_spec_get_blurb (param));
|
|
|
|
|
|
|
|
first_flag = TRUE;
|
2005-09-20 17:21:13 +00:00
|
|
|
n_print ("%-23.23s flags: ", "");
|
2002-05-08 20:40:48 +00:00
|
|
|
if (param->flags & G_PARAM_READABLE) {
|
|
|
|
g_object_get_property (G_OBJECT (element), param->name, &value);
|
2002-09-19 18:14:09 +00:00
|
|
|
readable = TRUE;
|
2007-10-15 07:11:04 +00:00
|
|
|
if (!first_flag)
|
|
|
|
g_print (", ");
|
|
|
|
else
|
|
|
|
first_flag = FALSE;
|
2006-05-24 09:00:10 +00:00
|
|
|
g_print (_("readable"));
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2005-08-29 19:59:52 +00:00
|
|
|
if (param->flags & G_PARAM_WRITABLE) {
|
2007-10-15 07:11:04 +00:00
|
|
|
if (!first_flag)
|
|
|
|
g_print (", ");
|
|
|
|
else
|
|
|
|
first_flag = FALSE;
|
2006-05-24 09:00:10 +00:00
|
|
|
g_print (_("writable"));
|
2005-08-29 19:59:52 +00:00
|
|
|
}
|
|
|
|
if (param->flags & GST_PARAM_CONTROLLABLE) {
|
2007-10-15 07:11:04 +00:00
|
|
|
if (!first_flag)
|
|
|
|
g_print (", ");
|
|
|
|
else
|
|
|
|
first_flag = FALSE;
|
2006-05-24 09:00:10 +00:00
|
|
|
g_print (_("controllable"));
|
2005-08-29 19:59:52 +00:00
|
|
|
}
|
|
|
|
n_print ("\n");
|
2002-05-08 20:40:48 +00:00
|
|
|
|
|
|
|
switch (G_VALUE_TYPE (&value)) {
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_STRING:
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
{
|
|
|
|
GParamSpecString *pstring = G_PARAM_SPEC_STRING (param);
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s String. ", "");
|
2005-10-08 11:16:03 +00:00
|
|
|
|
|
|
|
if (pstring->default_value == NULL)
|
|
|
|
g_print ("Default: null ");
|
|
|
|
else
|
|
|
|
g_print ("Default: \"%s\" ", pstring->default_value);
|
|
|
|
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable) {
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
const char *string_val = g_value_get_string (&value);
|
|
|
|
|
2004-03-15 19:27:17 +00:00
|
|
|
if (string_val == NULL)
|
2005-10-08 11:16:03 +00:00
|
|
|
g_print ("Current: null");
|
2004-03-15 19:27:17 +00:00
|
|
|
else
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: \"%s\"", string_val);
|
2004-03-15 19:27:17 +00:00
|
|
|
}
|
|
|
|
break;
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_BOOLEAN:
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
{
|
|
|
|
GParamSpecBoolean *pboolean = G_PARAM_SPEC_BOOLEAN (param);
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Boolean. ", "");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Default: %s ", (pboolean->default_value ? "true" : "false"));
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable)
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: %s",
|
2004-03-15 19:27:17 +00:00
|
|
|
(g_value_get_boolean (&value) ? "true" : "false"));
|
|
|
|
break;
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_ULONG:
|
2002-05-08 20:40:48 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecULong *pulong = G_PARAM_SPEC_ULONG (param);
|
2004-03-13 15:27:01 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Unsigned Long. ", "");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Range: %lu - %lu Default: %lu ",
|
|
|
|
pulong->minimum, pulong->maximum, pulong->default_value);
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable)
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: %lu", g_value_get_ulong (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_LONG:
|
2002-05-08 20:40:48 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecLong *plong = G_PARAM_SPEC_LONG (param);
|
2004-03-13 15:27:01 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Long. ", "");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Range: %ld - %ld Default: %ld ",
|
|
|
|
plong->minimum, plong->maximum, plong->default_value);
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable)
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: %ld", g_value_get_long (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_UINT:
|
2002-05-08 20:40:48 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecUInt *puint = G_PARAM_SPEC_UINT (param);
|
2004-03-13 15:27:01 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Unsigned Integer. ", "");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Range: %u - %u Default: %u ",
|
|
|
|
puint->minimum, puint->maximum, puint->default_value);
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable)
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: %u", g_value_get_uint (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_INT:
|
2002-05-08 20:40:48 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecInt *pint = G_PARAM_SPEC_INT (param);
|
2004-03-13 15:27:01 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Integer. ", "");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Range: %d - %d Default: %d ",
|
|
|
|
pint->minimum, pint->maximum, pint->default_value);
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable)
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: %d", g_value_get_int (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_UINT64:
|
2002-05-14 00:45:10 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecUInt64 *puint64 = G_PARAM_SPEC_UINT64 (param);
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Unsigned Integer64. ", "");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Range: %" G_GUINT64_FORMAT " - %" G_GUINT64_FORMAT
|
|
|
|
" Default: %" G_GUINT64_FORMAT " ",
|
|
|
|
puint64->minimum, puint64->maximum, puint64->default_value);
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable)
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: %" G_GUINT64_FORMAT, g_value_get_uint64 (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-14 00:45:10 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_INT64:
|
2002-05-14 00:45:10 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecInt64 *pint64 = G_PARAM_SPEC_INT64 (param);
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Integer64. ", "");
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Range: %" G_GINT64_FORMAT " - %" G_GINT64_FORMAT
|
|
|
|
" Default: %" G_GINT64_FORMAT " ",
|
|
|
|
pint64->minimum, pint64->maximum, pint64->default_value);
|
2004-03-15 19:27:17 +00:00
|
|
|
if (readable)
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
g_print ("Current: %" G_GINT64_FORMAT, g_value_get_int64 (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-14 00:45:10 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_FLOAT:
|
2002-05-08 20:40:48 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecFloat *pfloat = G_PARAM_SPEC_FLOAT (param);
|
2004-03-13 15:27:01 +00:00
|
|
|
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
n_print ("%-23.23s Float. ", "");
|
|
|
|
g_print ("Range: %15.7g - %15.7g Default: %15.7g ",
|
|
|
|
pfloat->minimum, pfloat->maximum, pfloat->default_value);
|
|
|
|
if (readable)
|
2005-10-20 13:10:13 +00:00
|
|
|
g_print ("Current: %15.7g", g_value_get_float (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
case G_TYPE_DOUBLE:
|
2002-05-08 20:40:48 +00:00
|
|
|
{
|
2004-03-15 19:27:17 +00:00
|
|
|
GParamSpecDouble *pdouble = G_PARAM_SPEC_DOUBLE (param);
|
2004-03-13 15:27:01 +00:00
|
|
|
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
n_print ("%-23.23s Double. ", "");
|
|
|
|
g_print ("Range: %15.7g - %15.7g Default: %15.7g ",
|
|
|
|
pdouble->minimum, pdouble->maximum, pdouble->default_value);
|
|
|
|
if (readable)
|
2005-10-20 13:10:13 +00:00
|
|
|
g_print ("Current: %15.7g", g_value_get_double (&value));
|
2004-03-15 19:27:17 +00:00
|
|
|
break;
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
|
|
|
default:
|
2004-03-15 19:27:17 +00:00
|
|
|
if (param->value_type == GST_TYPE_CAPS) {
|
|
|
|
const GstCaps *caps = gst_value_get_caps (&value);
|
|
|
|
|
|
|
|
if (!caps)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Caps (NULL)", "");
|
2004-03-15 19:27:17 +00:00
|
|
|
else {
|
|
|
|
print_caps (caps, " ");
|
|
|
|
}
|
|
|
|
} else if (G_IS_PARAM_SPEC_ENUM (param)) {
|
2007-11-22 21:32:09 +00:00
|
|
|
GParamSpecEnum *penum = G_PARAM_SPEC_ENUM (param);
|
2004-03-15 19:27:17 +00:00
|
|
|
GEnumValue *values;
|
|
|
|
guint j = 0;
|
|
|
|
gint enum_value;
|
2007-11-22 21:32:09 +00:00
|
|
|
const gchar *def_val_nick = "", *cur_val_nick = "";
|
2004-03-15 19:27:17 +00:00
|
|
|
|
|
|
|
values = G_ENUM_CLASS (g_type_class_ref (param->value_type))->values;
|
|
|
|
enum_value = g_value_get_enum (&value);
|
|
|
|
|
|
|
|
while (values[j].value_name) {
|
|
|
|
if (values[j].value == enum_value)
|
2007-11-22 21:32:09 +00:00
|
|
|
cur_val_nick = values[j].value_nick;
|
|
|
|
if (values[j].value == penum->default_value)
|
|
|
|
def_val_nick = values[j].value_nick;
|
2004-03-15 19:27:17 +00:00
|
|
|
j++;
|
|
|
|
}
|
|
|
|
|
2007-11-22 21:32:09 +00:00
|
|
|
n_print
|
|
|
|
("%-23.23s Enum \"%s\" Default: %d, \"%s\" Current: %d, \"%s\"",
|
|
|
|
"", g_type_name (G_VALUE_TYPE (&value)), penum->default_value,
|
|
|
|
def_val_nick, enum_value, cur_val_nick);
|
2004-03-15 19:27:17 +00:00
|
|
|
|
|
|
|
j = 0;
|
|
|
|
while (values[j].value_name) {
|
2007-10-15 07:11:04 +00:00
|
|
|
g_print ("\n");
|
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
|
|
|
g_print ("%-23.23s (%d): %-16s - %s", "",
|
|
|
|
values[j].value, values[j].value_nick, values[j].value_name);
|
2004-03-15 19:27:17 +00:00
|
|
|
j++;
|
|
|
|
}
|
|
|
|
/* g_type_class_unref (ec); */
|
|
|
|
} else if (G_IS_PARAM_SPEC_FLAGS (param)) {
|
2007-11-22 21:32:09 +00:00
|
|
|
GParamSpecFlags *pflags = G_PARAM_SPEC_FLAGS (param);
|
2004-03-15 19:27:17 +00:00
|
|
|
GFlagsValue *values;
|
|
|
|
guint j = 0;
|
|
|
|
gint flags_value;
|
2007-11-22 21:32:09 +00:00
|
|
|
GString *cur_flags = NULL, *def_flags = NULL;
|
2004-03-15 19:27:17 +00:00
|
|
|
|
|
|
|
values = G_FLAGS_CLASS (g_type_class_ref (param->value_type))->values;
|
|
|
|
flags_value = g_value_get_flags (&value);
|
|
|
|
|
|
|
|
while (values[j].value_name) {
|
|
|
|
if (values[j].value & flags_value) {
|
2007-11-22 21:32:09 +00:00
|
|
|
if (cur_flags) {
|
|
|
|
g_string_append_printf (cur_flags, " | %s",
|
|
|
|
values[j].value_nick);
|
2004-03-15 19:27:17 +00:00
|
|
|
} else {
|
2007-11-22 21:32:09 +00:00
|
|
|
cur_flags = g_string_new (values[j].value_nick);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (values[j].value & pflags->default_value) {
|
|
|
|
if (def_flags) {
|
|
|
|
g_string_append_printf (def_flags, " | %s",
|
|
|
|
values[j].value_nick);
|
|
|
|
} else {
|
|
|
|
def_flags = g_string_new (values[j].value_nick);
|
2004-03-15 19:27:17 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
j++;
|
|
|
|
}
|
|
|
|
|
2007-11-22 21:32:09 +00:00
|
|
|
n_print
|
|
|
|
("%-23.23s Flags \"%s\" Default: %d, \"%s\" Current: %d, \"%s\"",
|
|
|
|
"", g_type_name (G_VALUE_TYPE (&value)), pflags->default_value,
|
|
|
|
(def_flags ? def_flags->str : "(none)"), flags_value,
|
|
|
|
(cur_flags ? cur_flags->str : "(none)"));
|
2004-03-15 19:27:17 +00:00
|
|
|
|
|
|
|
j = 0;
|
|
|
|
while (values[j].value_name) {
|
2007-10-15 07:11:04 +00:00
|
|
|
g_print ("\n");
|
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
|
|
|
g_print ("%-23.23s (0x%08x): %-16s - %s", "",
|
|
|
|
values[j].value, values[j].value_nick, values[j].value_name);
|
2004-03-15 19:27:17 +00:00
|
|
|
j++;
|
|
|
|
}
|
|
|
|
|
2007-11-22 21:32:09 +00:00
|
|
|
if (cur_flags)
|
|
|
|
g_string_free (cur_flags, TRUE);
|
|
|
|
if (def_flags)
|
|
|
|
g_string_free (def_flags, TRUE);
|
2004-03-15 19:27:17 +00:00
|
|
|
} else if (G_IS_PARAM_SPEC_OBJECT (param)) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Object of type \"%s\"", "",
|
2004-03-15 19:27:17 +00:00
|
|
|
g_type_name (param->value_type));
|
2005-12-27 18:04:58 +00:00
|
|
|
} else if (G_IS_PARAM_SPEC_BOXED (param)) {
|
|
|
|
n_print ("%-23.23s Boxed pointer of type \"%s\"", "",
|
|
|
|
g_type_name (param->value_type));
|
|
|
|
} else if (G_IS_PARAM_SPEC_POINTER (param)) {
|
|
|
|
if (param->value_type != G_TYPE_POINTER) {
|
|
|
|
n_print ("%-23.23s Pointer of type \"%s\".", "",
|
|
|
|
g_type_name (param->value_type));
|
|
|
|
} else {
|
|
|
|
n_print ("%-23.23s Pointer.", "");
|
|
|
|
}
|
2006-11-08 11:41:13 +00:00
|
|
|
} else if (param->value_type == G_TYPE_VALUE_ARRAY) {
|
|
|
|
n_print ("%-23.23s Array of GValues", "");
|
2007-12-13 10:31:33 +00:00
|
|
|
} else if (GST_IS_PARAM_SPEC_FRACTION (param)) {
|
|
|
|
GstParamSpecFraction *pfraction = GST_PARAM_SPEC_FRACTION (param);
|
|
|
|
|
|
|
|
n_print ("%-23.23s Fraction. ", "");
|
|
|
|
|
|
|
|
g_print ("Range: %d/%d - %d/%d Default: %d/%d ",
|
|
|
|
pfraction->min_num, pfraction->min_den,
|
|
|
|
pfraction->max_num, pfraction->max_den,
|
|
|
|
pfraction->def_num, pfraction->def_den);
|
|
|
|
if (readable)
|
|
|
|
g_print ("Current: %d/%d",
|
|
|
|
gst_value_get_fraction_numerator (&value),
|
|
|
|
gst_value_get_fraction_denominator (&value));
|
|
|
|
|
2004-03-15 19:27:17 +00:00
|
|
|
} else {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%-23.23s Unknown type %ld \"%s\"", "", param->value_type,
|
2004-03-15 19:27:17 +00:00
|
|
|
g_type_name (param->value_type));
|
|
|
|
}
|
|
|
|
break;
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
if (!readable)
|
2003-01-21 21:34:31 +00:00
|
|
|
g_print (" Write only\n");
|
2003-03-16 20:06:02 +00:00
|
|
|
else
|
2002-09-19 18:14:09 +00:00
|
|
|
g_print ("\n");
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
2003-03-16 20:06:02 +00:00
|
|
|
if (num_properties == 0)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" none\n");
|
2005-08-24 13:04:31 +00:00
|
|
|
|
|
|
|
g_free (property_specs);
|
2002-05-08 20:40:48 +00:00
|
|
|
}
|
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
static void
|
2004-06-14 11:04:06 +00:00
|
|
|
print_pad_templates_info (GstElement * element, GstElementFactory * factory)
|
2001-03-07 21:52:56 +00:00
|
|
|
{
|
2001-01-03 07:38:45 +00:00
|
|
|
GstElementClass *gstelement_class;
|
2004-05-23 17:52:54 +00:00
|
|
|
const GList *pads;
|
Use libxml2 for registry parsing, use staticpadtemplates in elementfactories. Makes gst_init() +/- 10x faster.
Original commit message from CVS:
* docs/gst/tmpl/gstelementfactory.sgml:
* gst/gstelement.h:
* gst/gstelementfactory.c: (gst_element_factory_init),
(gst_element_factory_cleanup), (gst_element_register),
(__gst_element_factory_add_static_pad_template),
(gst_element_factory_get_static_pad_templates),
(gst_element_factory_can_src_caps),
(gst_element_factory_can_sink_caps):
* gst/registries/Makefile.am:
* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_get_type),
(gst_xml_registry_class_init), (gst_xml_registry_init),
(gst_xml_registry_new), (gst_xml_registry_set_property),
(gst_xml_registry_get_property), (get_time), (make_dir),
(gst_xml_registry_get_perms_func),
(plugin_times_older_than_recurse), (plugin_times_older_than),
(gst_xml_registry_open_func), (gst_xml_registry_load_func),
(gst_xml_registry_save_func), (gst_xml_registry_close_func),
(add_to_char_array), (read_string), (read_uint), (read_enum),
(load_pad_template), (load_feature), (load_plugin), (load_paths),
(gst_xml_registry_load), (gst_xml_registry_load_plugin),
(gst_xml_registry_save_caps), (gst_xml_registry_save_pad_template),
(gst_xml_registry_save_feature), (gst_xml_registry_save_plugin),
(gst_xml_registry_save), (gst_xml_registry_rebuild_recurse),
(gst_xml_registry_rebuild):
* gst/registries/gstlibxmlregistry.h:
* tools/gst-compprep.c: (main):
* tools/gst-inspect.c: (print_pad_templates_info):
* tools/gst-xmlinspect.c: (print_element_info):
Use libxml2 for registry parsing, use staticpadtemplates in
elementfactories. Makes gst_init() +/- 10x faster.
2005-04-12 15:00:30 +00:00
|
|
|
GstStaticPadTemplate *padtemplate;
|
2004-05-23 17:52:54 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("Pad Templates:\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
if (!factory->numpadtemplates) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" none\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
return;
|
2001-01-03 20:21:22 +00:00
|
|
|
}
|
2001-01-29 00:06:02 +00:00
|
|
|
|
2001-06-25 01:20:11 +00:00
|
|
|
gstelement_class = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element));
|
2001-01-03 07:38:45 +00:00
|
|
|
|
Use libxml2 for registry parsing, use staticpadtemplates in elementfactories. Makes gst_init() +/- 10x faster.
Original commit message from CVS:
* docs/gst/tmpl/gstelementfactory.sgml:
* gst/gstelement.h:
* gst/gstelementfactory.c: (gst_element_factory_init),
(gst_element_factory_cleanup), (gst_element_register),
(__gst_element_factory_add_static_pad_template),
(gst_element_factory_get_static_pad_templates),
(gst_element_factory_can_src_caps),
(gst_element_factory_can_sink_caps):
* gst/registries/Makefile.am:
* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_get_type),
(gst_xml_registry_class_init), (gst_xml_registry_init),
(gst_xml_registry_new), (gst_xml_registry_set_property),
(gst_xml_registry_get_property), (get_time), (make_dir),
(gst_xml_registry_get_perms_func),
(plugin_times_older_than_recurse), (plugin_times_older_than),
(gst_xml_registry_open_func), (gst_xml_registry_load_func),
(gst_xml_registry_save_func), (gst_xml_registry_close_func),
(add_to_char_array), (read_string), (read_uint), (read_enum),
(load_pad_template), (load_feature), (load_plugin), (load_paths),
(gst_xml_registry_load), (gst_xml_registry_load_plugin),
(gst_xml_registry_save_caps), (gst_xml_registry_save_pad_template),
(gst_xml_registry_save_feature), (gst_xml_registry_save_plugin),
(gst_xml_registry_save), (gst_xml_registry_rebuild_recurse),
(gst_xml_registry_rebuild):
* gst/registries/gstlibxmlregistry.h:
* tools/gst-compprep.c: (main):
* tools/gst-inspect.c: (print_pad_templates_info):
* tools/gst-xmlinspect.c: (print_element_info):
Use libxml2 for registry parsing, use staticpadtemplates in
elementfactories. Makes gst_init() +/- 10x faster.
2005-04-12 15:00:30 +00:00
|
|
|
pads = factory->staticpadtemplates;
|
2004-05-23 17:52:54 +00:00
|
|
|
while (pads) {
|
Use libxml2 for registry parsing, use staticpadtemplates in elementfactories. Makes gst_init() +/- 10x faster.
Original commit message from CVS:
* docs/gst/tmpl/gstelementfactory.sgml:
* gst/gstelement.h:
* gst/gstelementfactory.c: (gst_element_factory_init),
(gst_element_factory_cleanup), (gst_element_register),
(__gst_element_factory_add_static_pad_template),
(gst_element_factory_get_static_pad_templates),
(gst_element_factory_can_src_caps),
(gst_element_factory_can_sink_caps):
* gst/registries/Makefile.am:
* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_get_type),
(gst_xml_registry_class_init), (gst_xml_registry_init),
(gst_xml_registry_new), (gst_xml_registry_set_property),
(gst_xml_registry_get_property), (get_time), (make_dir),
(gst_xml_registry_get_perms_func),
(plugin_times_older_than_recurse), (plugin_times_older_than),
(gst_xml_registry_open_func), (gst_xml_registry_load_func),
(gst_xml_registry_save_func), (gst_xml_registry_close_func),
(add_to_char_array), (read_string), (read_uint), (read_enum),
(load_pad_template), (load_feature), (load_plugin), (load_paths),
(gst_xml_registry_load), (gst_xml_registry_load_plugin),
(gst_xml_registry_save_caps), (gst_xml_registry_save_pad_template),
(gst_xml_registry_save_feature), (gst_xml_registry_save_plugin),
(gst_xml_registry_save), (gst_xml_registry_rebuild_recurse),
(gst_xml_registry_rebuild):
* gst/registries/gstlibxmlregistry.h:
* tools/gst-compprep.c: (main):
* tools/gst-inspect.c: (print_pad_templates_info):
* tools/gst-xmlinspect.c: (print_element_info):
Use libxml2 for registry parsing, use staticpadtemplates in
elementfactories. Makes gst_init() +/- 10x faster.
2005-04-12 15:00:30 +00:00
|
|
|
padtemplate = (GstStaticPadTemplate *) (pads->data);
|
2004-05-23 17:52:54 +00:00
|
|
|
pads = g_list_next (pads);
|
Updates, it prints a lot more stuff now, like padtemplates, caps/props, and arguments. More stuff can be done, but n...
Original commit message from CVS:
Updates, it prints a lot more stuff now, like padtemplates, caps/props,
and arguments. More stuff can be done, but not now, I must sleep.
2001-01-03 08:48:36 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
if (padtemplate->direction == GST_PAD_SRC)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" SRC template: '%s'\n", padtemplate->name_template);
|
2004-05-23 17:52:54 +00:00
|
|
|
else if (padtemplate->direction == GST_PAD_SINK)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" SINK template: '%s'\n", padtemplate->name_template);
|
2004-05-23 17:52:54 +00:00
|
|
|
else
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" UNKNOWN!!! template: '%s'\n", padtemplate->name_template);
|
2004-05-23 17:52:54 +00:00
|
|
|
|
|
|
|
if (padtemplate->presence == GST_PAD_ALWAYS)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Availability: Always\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
else if (padtemplate->presence == GST_PAD_SOMETIMES)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Availability: Sometimes\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
else if (padtemplate->presence == GST_PAD_REQUEST) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Availability: On request\n");
|
|
|
|
n_print (" Has request_new_pad() function: %s\n",
|
2004-05-23 17:52:54 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (gstelement_class->request_new_pad));
|
|
|
|
} else
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Availability: UNKNOWN!!!\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
|
Use libxml2 for registry parsing, use staticpadtemplates in elementfactories. Makes gst_init() +/- 10x faster.
Original commit message from CVS:
* docs/gst/tmpl/gstelementfactory.sgml:
* gst/gstelement.h:
* gst/gstelementfactory.c: (gst_element_factory_init),
(gst_element_factory_cleanup), (gst_element_register),
(__gst_element_factory_add_static_pad_template),
(gst_element_factory_get_static_pad_templates),
(gst_element_factory_can_src_caps),
(gst_element_factory_can_sink_caps):
* gst/registries/Makefile.am:
* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_get_type),
(gst_xml_registry_class_init), (gst_xml_registry_init),
(gst_xml_registry_new), (gst_xml_registry_set_property),
(gst_xml_registry_get_property), (get_time), (make_dir),
(gst_xml_registry_get_perms_func),
(plugin_times_older_than_recurse), (plugin_times_older_than),
(gst_xml_registry_open_func), (gst_xml_registry_load_func),
(gst_xml_registry_save_func), (gst_xml_registry_close_func),
(add_to_char_array), (read_string), (read_uint), (read_enum),
(load_pad_template), (load_feature), (load_plugin), (load_paths),
(gst_xml_registry_load), (gst_xml_registry_load_plugin),
(gst_xml_registry_save_caps), (gst_xml_registry_save_pad_template),
(gst_xml_registry_save_feature), (gst_xml_registry_save_plugin),
(gst_xml_registry_save), (gst_xml_registry_rebuild_recurse),
(gst_xml_registry_rebuild):
* gst/registries/gstlibxmlregistry.h:
* tools/gst-compprep.c: (main):
* tools/gst-inspect.c: (print_pad_templates_info):
* tools/gst-xmlinspect.c: (print_element_info):
Use libxml2 for registry parsing, use staticpadtemplates in
elementfactories. Makes gst_init() +/- 10x faster.
2005-04-12 15:00:30 +00:00
|
|
|
if (padtemplate->static_caps.string) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Capabilities:\n");
|
Use libxml2 for registry parsing, use staticpadtemplates in elementfactories. Makes gst_init() +/- 10x faster.
Original commit message from CVS:
* docs/gst/tmpl/gstelementfactory.sgml:
* gst/gstelement.h:
* gst/gstelementfactory.c: (gst_element_factory_init),
(gst_element_factory_cleanup), (gst_element_register),
(__gst_element_factory_add_static_pad_template),
(gst_element_factory_get_static_pad_templates),
(gst_element_factory_can_src_caps),
(gst_element_factory_can_sink_caps):
* gst/registries/Makefile.am:
* gst/registries/gstlibxmlregistry.c: (gst_xml_registry_get_type),
(gst_xml_registry_class_init), (gst_xml_registry_init),
(gst_xml_registry_new), (gst_xml_registry_set_property),
(gst_xml_registry_get_property), (get_time), (make_dir),
(gst_xml_registry_get_perms_func),
(plugin_times_older_than_recurse), (plugin_times_older_than),
(gst_xml_registry_open_func), (gst_xml_registry_load_func),
(gst_xml_registry_save_func), (gst_xml_registry_close_func),
(add_to_char_array), (read_string), (read_uint), (read_enum),
(load_pad_template), (load_feature), (load_plugin), (load_paths),
(gst_xml_registry_load), (gst_xml_registry_load_plugin),
(gst_xml_registry_save_caps), (gst_xml_registry_save_pad_template),
(gst_xml_registry_save_feature), (gst_xml_registry_save_plugin),
(gst_xml_registry_save), (gst_xml_registry_rebuild_recurse),
(gst_xml_registry_rebuild):
* gst/registries/gstlibxmlregistry.h:
* tools/gst-compprep.c: (main):
* tools/gst-inspect.c: (print_pad_templates_info):
* tools/gst-xmlinspect.c: (print_element_info):
Use libxml2 for registry parsing, use staticpadtemplates in
elementfactories. Makes gst_init() +/- 10x faster.
2005-04-12 15:00:30 +00:00
|
|
|
print_caps (gst_static_caps_get (&padtemplate->static_caps), " ");
|
Updates, it prints a lot more stuff now, like padtemplates, caps/props, and arguments. More stuff can be done, but n...
Original commit message from CVS:
Updates, it prints a lot more stuff now, like padtemplates, caps/props,
and arguments. More stuff can be done, but not now, I must sleep.
2001-01-03 08:48:36 +00:00
|
|
|
}
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
print_element_flag_info (GstElement * element)
|
|
|
|
{
|
|
|
|
gboolean have_flags = FALSE;
|
2001-05-20 20:12:45 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Element Flags:\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
|
2001-05-20 20:12:45 +00:00
|
|
|
if (!have_flags)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" no flags set\n");
|
2001-01-03 07:38:45 +00:00
|
|
|
|
2002-03-30 17:06:45 +00:00
|
|
|
if (GST_IS_BIN (element)) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Bin Flags:\n");
|
2002-03-30 17:06:45 +00:00
|
|
|
if (!have_flags)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" no flags set\n");
|
2002-03-30 17:06:45 +00:00
|
|
|
}
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
2002-03-30 17:06:45 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
static void
|
|
|
|
print_implementation_info (GstElement * element)
|
|
|
|
{
|
|
|
|
GstObjectClass *gstobject_class;
|
|
|
|
GstElementClass *gstelement_class;
|
2001-01-03 07:38:45 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
gstobject_class = GST_OBJECT_CLASS (G_OBJECT_GET_CLASS (element));
|
|
|
|
gstelement_class = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element));
|
2001-05-25 21:00:07 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Element Implementation:\n");
|
2001-05-25 21:00:07 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has change_state() function: %s\n",
|
2004-03-13 15:27:01 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (gstelement_class->change_state));
|
2001-10-17 10:21:27 +00:00
|
|
|
#ifndef GST_DISABLE_LOADSAVE
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has custom save_thyself() function: %s\n",
|
2004-03-13 15:27:01 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (gstobject_class->save_thyself));
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has custom restore_thyself() function: %s\n",
|
2004-03-13 15:27:01 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (gstobject_class->restore_thyself));
|
2001-10-17 10:21:27 +00:00
|
|
|
#endif
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
2001-01-03 07:38:45 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
static void
|
|
|
|
print_clocking_info (GstElement * element)
|
|
|
|
{
|
|
|
|
if (!gst_element_requires_clock (element) &&
|
|
|
|
!(gst_element_provides_clock (element) &&
|
|
|
|
gst_element_get_clock (element))) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Element has no clocking capabilities.");
|
2004-05-23 17:52:54 +00:00
|
|
|
return;
|
|
|
|
}
|
2002-03-30 17:06:45 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Clocking Interaction:\n");
|
2002-11-27 20:47:39 +00:00
|
|
|
if (gst_element_requires_clock (element)) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" element requires a clock\n");
|
2002-03-30 17:06:45 +00:00
|
|
|
}
|
2004-05-23 17:52:54 +00:00
|
|
|
|
2002-11-27 20:47:39 +00:00
|
|
|
if (gst_element_provides_clock (element)) {
|
2002-03-30 17:06:45 +00:00
|
|
|
GstClock *clock;
|
|
|
|
|
|
|
|
clock = gst_element_get_clock (element);
|
2002-07-04 16:03:48 +00:00
|
|
|
if (clock)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" element provides a clock: %s\n", GST_OBJECT_NAME (clock));
|
2002-11-27 20:47:39 +00:00
|
|
|
else
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" element is supposed to provide a clock but returned NULL\n");
|
2002-03-30 17:06:45 +00:00
|
|
|
}
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
|
|
|
|
2003-02-10 20:32:32 +00:00
|
|
|
#ifndef GST_DISABLE_INDEX
|
2004-05-23 17:52:54 +00:00
|
|
|
static void
|
|
|
|
print_index_info (GstElement * element)
|
|
|
|
{
|
2002-12-14 15:00:08 +00:00
|
|
|
if (gst_element_is_indexable (element)) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Indexing capabilities:\n");
|
|
|
|
n_print (" element can do indexing\n");
|
2004-03-13 15:27:01 +00:00
|
|
|
} else {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Element has no indexing capabilities.\n");
|
2002-11-27 20:47:39 +00:00
|
|
|
}
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
|
|
|
#else
|
|
|
|
static void
|
|
|
|
print_index_info (GstElement * element)
|
|
|
|
{
|
|
|
|
}
|
2003-02-10 20:32:32 +00:00
|
|
|
#endif
|
2001-05-25 21:00:07 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
static void
|
|
|
|
print_pad_info (GstElement * element)
|
|
|
|
{
|
|
|
|
const GList *pads;
|
|
|
|
GstPad *pad;
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print ("Pads:\n");
|
Updates, it prints a lot more stuff now, like padtemplates, caps/props, and arguments. More stuff can be done, but n...
Original commit message from CVS:
Updates, it prints a lot more stuff now, like padtemplates, caps/props,
and arguments. More stuff can be done, but not now, I must sleep.
2001-01-03 08:48:36 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
if (!element->numpads) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" none\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
return;
|
|
|
|
}
|
2002-07-24 21:13:30 +00:00
|
|
|
|
2005-03-07 18:27:42 +00:00
|
|
|
pads = element->pads;
|
2004-05-23 17:52:54 +00:00
|
|
|
while (pads) {
|
|
|
|
pad = GST_PAD (pads->data);
|
|
|
|
pads = g_list_next (pads);
|
2002-07-24 21:13:30 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("");
|
|
|
|
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
if (gst_pad_get_direction (pad) == GST_PAD_SRC)
|
2004-05-23 17:52:54 +00:00
|
|
|
g_print (" SRC: '%s'", gst_pad_get_name (pad));
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
else if (gst_pad_get_direction (pad) == GST_PAD_SINK)
|
2004-05-23 17:52:54 +00:00
|
|
|
g_print (" SINK: '%s'", gst_pad_get_name (pad));
|
|
|
|
else
|
2004-10-19 09:33:58 +00:00
|
|
|
g_print (" UNKNOWN!!!: '%s'", gst_pad_get_name (pad));
|
Updates, it prints a lot more stuff now, like padtemplates, caps/props, and arguments. More stuff can be done, but n...
Original commit message from CVS:
Updates, it prints a lot more stuff now, like padtemplates, caps/props,
and arguments. More stuff can be done, but not now, I must sleep.
2001-01-03 08:48:36 +00:00
|
|
|
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
g_print ("\n");
|
Updates, it prints a lot more stuff now, like padtemplates, caps/props, and arguments. More stuff can be done, but n...
Original commit message from CVS:
Updates, it prints a lot more stuff now, like padtemplates, caps/props,
and arguments. More stuff can be done, but not now, I must sleep.
2001-01-03 08:48:36 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Implementation:\n");
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
if (pad->chainfunc)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has chainfunc(): %s\n",
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (pad->chainfunc));
|
|
|
|
if (pad->getrangefunc)
|
2005-03-21 17:34:02 +00:00
|
|
|
n_print (" Has getrangefunc(): %s\n",
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (pad->getrangefunc));
|
|
|
|
if (pad->eventfunc != gst_pad_event_default)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has custom eventfunc(): %s\n",
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (pad->eventfunc));
|
|
|
|
if (pad->queryfunc != gst_pad_query_default)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has custom queryfunc(): %s\n",
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (pad->queryfunc));
|
|
|
|
if (pad->querytypefunc != gst_pad_get_query_types_default) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Provides query types:\n");
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
print_query_types (gst_pad_get_query_types (pad));
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
|
|
|
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
if (pad->intlinkfunc != gst_pad_get_internal_links_default)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has custom intconnfunc(): %s\n",
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (pad->intlinkfunc));
|
2001-05-25 21:00:07 +00:00
|
|
|
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
if (pad->bufferallocfunc)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Has bufferallocfunc(): %s\n",
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
GST_DEBUG_FUNCPTR_NAME (pad->bufferallocfunc));
|
2001-07-25 21:40:42 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
if (pad->padtemplate)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Pad Template: '%s'\n", pad->padtemplate->name_template);
|
2004-05-23 17:52:54 +00:00
|
|
|
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
if (pad->caps) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" Capabilities:\n");
|
gst/gstutils.c: RPAD fixes all around.
Original commit message from CVS:
2005-06-08 Andy Wingo <wingo@pobox.com>
* gst/gstutils.c: RPAD fixes all around.
(gst_element_link_pads): Refcounting fixes.
* tools/gst-inspect.c:
* tools/gst-xmlinspect.c:
* parse/grammar.y:
* gst/base/gsttypefindhelper.c:
* gst/base/gstbasesink.c:
* gst/gstqueue.c: RPAD fixes.
* gst/gstghostpad.h:
* gst/gstghostpad.c: New ghost pad implementation as full proxy
pads. The tricky thing is they provide both source and sink
interfaces, since they proxy the internal pad for the external
pad, and vice versa. Implement with lower-level ProxyPad objects,
with the interior proxy pad as a child of the exterior ghost pad.
Should write a doc on this.
* gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/.
(gst_pad_set_name, gst_pad_set_parent): Macros removed, use
gst_object API.
* gst/gstpad.c: Big changes. No more stub base GstPad, now all
pads are real pads. No ghost pads in this file. Not documenting
the myriad s/RPAD/PAD/ and REALIZE fixes.
(gst_pad_class_init): Add properties for "direction" and
"template". Both are construct-only, so they can't change during
the life of the pad. Fixes properly deriving from GstPad.
(gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For
derived objects, just set properties when creating the objects via
g_object_new.
(gst_pad_get_parent): Implement as a function, return NULL if the
parent is not an element.
(gst_pad_get_real_parent, gst_pad_add_ghost_pad)
(gst_pad_remove_ghost_pad, gst_pad_realize): Removed.
* gst/gstobject.c (gst_object_class_init): Make name a construct
property. Don't set it in the object init.
* gst/gstelement.c (gst_element_add_pad): Don't allow adding pads
with UNKNOWN direction.
(gst_element_add_ghost_pad): Remove non-orthogonal API. Replace
with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)).
(gst_element_remove_pad): Remove ghost-pad special cases.
(gst_element_pads_activate): Remove rpad cruft.
* gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to
catch the pad's-parent-not-an-element case.
* gst/gst.h: Include gstghostpad.h.
* gst/gst.c (init_post): No more real, ghost pads.
* gst/Makefile.am: Add gstghostpad.[ch].
* check/Makefile.am:
* check/gst/gstbin.c:
* check/gst/gstghostpad.c (test_ghost_pads): Check that linking
into a bin creates ghost pads, and that the refcounts are right.
Partly moved from gstbin.c.
2005-06-08 22:16:27 +00:00
|
|
|
print_caps (pad->caps, " ");
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
static gint
|
|
|
|
compare_signal_names (GSignalQuery * a, GSignalQuery * b)
|
|
|
|
{
|
|
|
|
return strcmp (a->signal_name, b->signal_name);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
static void
|
|
|
|
print_signal_info (GstElement * element)
|
|
|
|
{
|
2003-03-16 20:06:02 +00:00
|
|
|
/* Signals/Actions Block */
|
2004-05-23 17:52:54 +00:00
|
|
|
guint *signals;
|
|
|
|
guint nsignals;
|
|
|
|
gint i = 0, j, k;
|
|
|
|
GSignalQuery *query = NULL;
|
|
|
|
GType type;
|
|
|
|
GSList *found_signals, *l;
|
|
|
|
|
|
|
|
for (k = 0; k < 2; k++) {
|
|
|
|
found_signals = NULL;
|
|
|
|
for (type = G_OBJECT_TYPE (element); type; type = g_type_parent (type)) {
|
|
|
|
if (type == GST_TYPE_ELEMENT || type == GST_TYPE_OBJECT)
|
|
|
|
break;
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
if (type == GST_TYPE_BIN && G_OBJECT_TYPE (element) != GST_TYPE_BIN)
|
|
|
|
continue;
|
2002-07-24 21:13:30 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
signals = g_signal_list_ids (type, &nsignals);
|
|
|
|
for (i = 0; i < nsignals; i++) {
|
|
|
|
query = g_new0 (GSignalQuery, 1);
|
|
|
|
g_signal_query (signals[i], query);
|
|
|
|
|
|
|
|
if ((k == 0 && !(query->signal_flags & G_SIGNAL_ACTION)) ||
|
|
|
|
(k == 1 && (query->signal_flags & G_SIGNAL_ACTION)))
|
|
|
|
found_signals = g_slist_append (found_signals, query);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (found_signals) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
2002-07-24 21:13:30 +00:00
|
|
|
if (k == 0)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("Element Signals:\n");
|
2002-07-24 21:13:30 +00:00
|
|
|
else
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("Element Actions:\n");
|
2004-05-23 17:52:54 +00:00
|
|
|
} else {
|
|
|
|
continue;
|
|
|
|
}
|
2001-01-03 07:38:45 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
for (l = found_signals; l; l = l->next) {
|
|
|
|
gchar *indent;
|
|
|
|
int indent_len;
|
2004-03-15 19:27:17 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
query = (GSignalQuery *) l->data;
|
|
|
|
indent_len = strlen (query->signal_name) +
|
|
|
|
strlen (g_type_name (query->return_type)) + 24;
|
2004-03-15 19:27:17 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
indent = g_new0 (gchar, indent_len + 1);
|
|
|
|
memset (indent, ' ', indent_len);
|
2004-03-15 19:27:17 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" \"%s\" : %s user_function (%s* object",
|
2004-05-23 17:52:54 +00:00
|
|
|
query->signal_name,
|
|
|
|
g_type_name (query->return_type), g_type_name (type));
|
2004-03-15 19:27:17 +00:00
|
|
|
|
2004-10-22 20:11:43 +00:00
|
|
|
for (j = 0; j < query->n_params; j++) {
|
2007-10-15 07:11:04 +00:00
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
2004-10-22 20:11:43 +00:00
|
|
|
if (G_TYPE_IS_FUNDAMENTAL (query->param_types[j])) {
|
2007-10-15 07:11:04 +00:00
|
|
|
g_print (",\n%s%s arg%d", indent,
|
2004-10-22 20:11:43 +00:00
|
|
|
g_type_name (query->param_types[j]), j);
|
2006-06-12 08:51:20 +00:00
|
|
|
} else if (G_TYPE_IS_ENUM (query->param_types[j])) {
|
2007-10-15 07:11:04 +00:00
|
|
|
g_print (",\n%s%s arg%d", indent,
|
2006-06-12 08:51:20 +00:00
|
|
|
g_type_name (query->param_types[j]), j);
|
2004-10-22 20:11:43 +00:00
|
|
|
} else {
|
2007-10-15 07:11:04 +00:00
|
|
|
g_print (",\n%s%s* arg%d", indent,
|
2004-10-22 20:11:43 +00:00
|
|
|
g_type_name (query->param_types[j]), j);
|
|
|
|
}
|
|
|
|
}
|
2004-03-15 19:27:17 +00:00
|
|
|
|
2007-10-15 07:11:04 +00:00
|
|
|
if (k == 0) {
|
|
|
|
if (_name)
|
|
|
|
g_print (_name);
|
|
|
|
g_print (",\n%sgpointer user_data);\n", indent);
|
|
|
|
} else
|
2004-05-23 17:52:54 +00:00
|
|
|
g_print (");\n");
|
2004-03-15 19:27:17 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
g_free (indent);
|
|
|
|
}
|
2004-03-15 19:27:17 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
if (found_signals) {
|
|
|
|
g_slist_foreach (found_signals, (GFunc) g_free, NULL);
|
|
|
|
g_slist_free (found_signals);
|
2001-07-25 21:40:42 +00:00
|
|
|
}
|
|
|
|
}
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
2001-05-25 21:00:07 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
static void
|
|
|
|
print_children_info (GstElement * element)
|
|
|
|
{
|
|
|
|
GList *children;
|
|
|
|
|
|
|
|
if (!GST_IS_BIN (element))
|
|
|
|
return;
|
|
|
|
|
2005-03-07 18:27:42 +00:00
|
|
|
children = (GList *) GST_BIN (element)->children;
|
2004-06-14 11:04:06 +00:00
|
|
|
if (children) {
|
|
|
|
n_print ("\n");
|
|
|
|
g_print ("Children:\n");
|
|
|
|
}
|
2001-05-25 21:00:07 +00:00
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
while (children) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" %s\n", GST_ELEMENT_NAME (GST_ELEMENT (children->data)));
|
2004-05-23 17:52:54 +00:00
|
|
|
children = g_list_next (children);
|
|
|
|
}
|
2001-01-03 07:38:45 +00:00
|
|
|
}
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2003-03-16 20:06:02 +00:00
|
|
|
static void
|
2004-06-14 11:28:16 +00:00
|
|
|
print_element_list (gboolean print_all)
|
2001-08-21 20:16:48 +00:00
|
|
|
{
|
2005-10-07 10:32:24 +00:00
|
|
|
int plugincount = 0, featurecount = 0;
|
2005-09-22 12:05:05 +00:00
|
|
|
GList *plugins, *orig_plugins;
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2005-09-22 12:05:05 +00:00
|
|
|
orig_plugins = plugins = gst_default_registry_get_plugin_list ();
|
2001-01-04 10:47:39 +00:00
|
|
|
while (plugins) {
|
2005-09-22 12:05:05 +00:00
|
|
|
GList *features, *orig_features;
|
2001-08-21 20:16:48 +00:00
|
|
|
GstPlugin *plugin;
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2004-03-13 15:27:01 +00:00
|
|
|
plugin = (GstPlugin *) (plugins->data);
|
2001-01-04 10:47:39 +00:00
|
|
|
plugins = g_list_next (plugins);
|
2005-10-07 10:32:24 +00:00
|
|
|
plugincount++;
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2005-09-22 12:05:05 +00:00
|
|
|
orig_features = features =
|
2005-09-18 06:59:25 +00:00
|
|
|
gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
|
|
|
|
plugin->desc.name);
|
2001-08-21 20:16:48 +00:00
|
|
|
while (features) {
|
|
|
|
GstPluginFeature *feature;
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2001-08-21 20:16:48 +00:00
|
|
|
feature = GST_PLUGIN_FEATURE (features->data);
|
2005-10-07 10:32:24 +00:00
|
|
|
featurecount++;
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2002-04-11 20:35:18 +00:00
|
|
|
if (GST_IS_ELEMENT_FACTORY (feature)) {
|
2004-03-15 19:27:17 +00:00
|
|
|
GstElementFactory *factory;
|
2001-08-21 20:16:48 +00:00
|
|
|
|
2004-03-15 19:27:17 +00:00
|
|
|
factory = GST_ELEMENT_FACTORY (feature);
|
2004-06-14 11:04:06 +00:00
|
|
|
if (print_all)
|
2004-06-14 11:28:16 +00:00
|
|
|
print_element_info (factory, TRUE);
|
2004-06-14 11:04:06 +00:00
|
|
|
else
|
|
|
|
g_print ("%s: %s: %s\n", plugin->desc.name,
|
2007-10-15 07:11:04 +00:00
|
|
|
GST_PLUGIN_FEATURE_NAME (factory),
|
|
|
|
gst_element_factory_get_longname (factory));
|
2001-08-21 20:16:48 +00:00
|
|
|
}
|
2003-02-10 20:32:32 +00:00
|
|
|
#ifndef GST_DISABLE_INDEX
|
2002-12-12 22:14:36 +00:00
|
|
|
else if (GST_IS_INDEX_FACTORY (feature)) {
|
2004-03-15 19:27:17 +00:00
|
|
|
GstIndexFactory *factory;
|
2002-11-29 18:18:34 +00:00
|
|
|
|
2004-03-15 19:27:17 +00:00
|
|
|
factory = GST_INDEX_FACTORY (feature);
|
2004-06-14 11:04:06 +00:00
|
|
|
if (!print_all)
|
|
|
|
g_print ("%s: %s: %s\n", plugin->desc.name,
|
|
|
|
GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
|
2002-11-29 18:18:34 +00:00
|
|
|
}
|
2003-02-10 20:32:32 +00:00
|
|
|
#endif
|
2003-10-28 20:25:30 +00:00
|
|
|
else if (GST_IS_TYPE_FIND_FACTORY (feature)) {
|
2004-03-15 19:27:17 +00:00
|
|
|
GstTypeFindFactory *factory;
|
|
|
|
|
|
|
|
factory = GST_TYPE_FIND_FACTORY (feature);
|
2004-06-14 11:04:06 +00:00
|
|
|
if (!print_all)
|
|
|
|
g_print ("%s: %s: ", plugin->desc.name,
|
|
|
|
gst_plugin_feature_get_name (feature));
|
2004-03-15 19:27:17 +00:00
|
|
|
if (factory->extensions) {
|
|
|
|
guint i = 0;
|
|
|
|
|
|
|
|
while (factory->extensions[i]) {
|
2004-06-14 11:04:06 +00:00
|
|
|
if (!print_all)
|
|
|
|
g_print ("%s%s", i > 0 ? ", " : "", factory->extensions[i]);
|
2004-03-15 19:27:17 +00:00
|
|
|
i++;
|
|
|
|
}
|
2004-06-14 11:04:06 +00:00
|
|
|
if (!print_all)
|
|
|
|
g_print ("\n");
|
2004-03-15 19:27:17 +00:00
|
|
|
} else {
|
2004-06-14 11:04:06 +00:00
|
|
|
if (!print_all)
|
|
|
|
g_print ("no extensions\n");
|
2004-03-15 19:27:17 +00:00
|
|
|
}
|
2004-03-13 15:27:01 +00:00
|
|
|
} else {
|
2004-06-14 11:04:06 +00:00
|
|
|
if (!print_all)
|
|
|
|
n_print ("%s: %s (%s)\n", plugin->desc.name,
|
|
|
|
GST_PLUGIN_FEATURE_NAME (feature),
|
|
|
|
g_type_name (G_OBJECT_TYPE (feature)));
|
2001-08-21 20:16:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
features = g_list_next (features);
|
|
|
|
}
|
2005-09-22 12:05:05 +00:00
|
|
|
|
|
|
|
gst_plugin_feature_list_free (orig_features);
|
2001-01-04 10:47:39 +00:00
|
|
|
}
|
2005-09-22 12:05:05 +00:00
|
|
|
|
2006-04-04 17:54:30 +00:00
|
|
|
gst_plugin_list_free (orig_plugins);
|
2005-10-07 10:32:24 +00:00
|
|
|
|
2006-05-24 09:00:10 +00:00
|
|
|
g_print ("\n");
|
|
|
|
g_print (_("Total count: "));
|
|
|
|
g_print (ngettext ("%d plugin", "%d plugins", plugincount), plugincount);
|
|
|
|
g_print (", ");
|
|
|
|
g_print (ngettext ("%d feature", "%d features", featurecount), featurecount);
|
|
|
|
g_print ("\n");
|
2001-01-04 10:47:39 +00:00
|
|
|
}
|
|
|
|
|
2001-08-21 20:16:48 +00:00
|
|
|
static void
|
2004-03-13 15:27:01 +00:00
|
|
|
print_plugin_info (GstPlugin * plugin)
|
2001-03-07 21:52:56 +00:00
|
|
|
{
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("Plugin Details:\n");
|
2005-09-03 17:00:52 +00:00
|
|
|
n_print (" Name:\t\t\t%s\n", plugin->desc.name);
|
|
|
|
n_print (" Description:\t\t%s\n", plugin->desc.description);
|
|
|
|
n_print (" Filename:\t\t%s\n",
|
|
|
|
plugin->filename ? plugin->filename : "(null)");
|
|
|
|
n_print (" Version:\t\t%s\n", plugin->desc.version);
|
|
|
|
n_print (" License:\t\t%s\n", plugin->desc.license);
|
|
|
|
n_print (" Source module:\t%s\n", plugin->desc.source);
|
|
|
|
n_print (" Binary package:\t%s\n", plugin->desc.package);
|
|
|
|
n_print (" Origin URL:\t\t%s\n", plugin->desc.origin);
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
2004-08-12 11:50:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
print_plugin_features (GstPlugin * plugin)
|
|
|
|
{
|
|
|
|
GList *features;
|
|
|
|
gint num_features = 0;
|
|
|
|
gint num_elements = 0;
|
|
|
|
gint num_types = 0;
|
|
|
|
gint num_indexes = 0;
|
|
|
|
gint num_other = 0;
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2005-09-18 06:59:25 +00:00
|
|
|
features =
|
|
|
|
gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
|
|
|
|
plugin->desc.name);
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2001-08-21 20:16:48 +00:00
|
|
|
while (features) {
|
|
|
|
GstPluginFeature *feature;
|
2001-03-07 21:52:56 +00:00
|
|
|
|
2001-08-21 20:16:48 +00:00
|
|
|
feature = GST_PLUGIN_FEATURE (features->data);
|
2001-03-07 21:52:56 +00:00
|
|
|
|
2002-04-11 20:35:18 +00:00
|
|
|
if (GST_IS_ELEMENT_FACTORY (feature)) {
|
2001-08-21 20:16:48 +00:00
|
|
|
GstElementFactory *factory;
|
2001-03-07 21:52:56 +00:00
|
|
|
|
2002-04-11 20:35:18 +00:00
|
|
|
factory = GST_ELEMENT_FACTORY (feature);
|
2005-05-19 08:41:42 +00:00
|
|
|
n_print (" %s: %s\n", GST_PLUGIN_FEATURE_NAME (factory),
|
2007-10-15 07:11:04 +00:00
|
|
|
gst_element_factory_get_longname (factory));
|
2002-11-27 20:47:39 +00:00
|
|
|
num_elements++;
|
2001-03-07 21:52:56 +00:00
|
|
|
}
|
2003-02-10 20:32:32 +00:00
|
|
|
#ifndef GST_DISABLE_INDEX
|
2002-12-12 22:14:36 +00:00
|
|
|
else if (GST_IS_INDEX_FACTORY (feature)) {
|
|
|
|
GstIndexFactory *factory;
|
2002-11-29 18:18:34 +00:00
|
|
|
|
2002-12-12 22:14:36 +00:00
|
|
|
factory = GST_INDEX_FACTORY (feature);
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" %s: %s\n", GST_OBJECT_NAME (factory), factory->longdesc);
|
2002-12-12 22:14:36 +00:00
|
|
|
num_indexes++;
|
2002-11-29 18:18:34 +00:00
|
|
|
}
|
2003-02-10 20:32:32 +00:00
|
|
|
#endif
|
2003-10-28 20:25:30 +00:00
|
|
|
else if (GST_IS_TYPE_FIND_FACTORY (feature)) {
|
|
|
|
GstTypeFindFactory *factory;
|
|
|
|
|
|
|
|
factory = GST_TYPE_FIND_FACTORY (feature);
|
|
|
|
if (factory->extensions) {
|
2004-03-15 19:27:17 +00:00
|
|
|
guint i = 0;
|
2004-03-13 15:27:01 +00:00
|
|
|
|
2007-07-23 13:03:43 +00:00
|
|
|
g_print ("%s: %s: ", plugin->desc.name,
|
|
|
|
gst_plugin_feature_get_name (feature));
|
2004-03-15 19:27:17 +00:00
|
|
|
while (factory->extensions[i]) {
|
|
|
|
g_print ("%s%s", i > 0 ? ", " : "", factory->extensions[i]);
|
|
|
|
i++;
|
|
|
|
}
|
2004-10-19 09:33:58 +00:00
|
|
|
g_print ("\n");
|
2003-10-28 20:25:30 +00:00
|
|
|
} else
|
2007-07-23 13:03:43 +00:00
|
|
|
g_print ("%s: %s: no extensions\n", plugin->desc.name,
|
|
|
|
gst_plugin_feature_get_name (feature));
|
2001-08-21 20:16:48 +00:00
|
|
|
|
2002-11-27 20:47:39 +00:00
|
|
|
num_types++;
|
2004-03-13 15:27:01 +00:00
|
|
|
} else {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" %s (%s)\n", gst_object_get_name (GST_OBJECT (feature)),
|
2004-03-15 19:27:17 +00:00
|
|
|
g_type_name (G_OBJECT_TYPE (feature)));
|
2002-11-27 20:47:39 +00:00
|
|
|
num_other++;
|
2001-08-21 20:16:48 +00:00
|
|
|
}
|
2002-11-27 20:47:39 +00:00
|
|
|
num_features++;
|
2001-08-21 20:16:48 +00:00
|
|
|
features = g_list_next (features);
|
2001-03-07 21:52:56 +00:00
|
|
|
}
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
|
|
|
n_print (" %d features:\n", num_features);
|
2002-11-27 20:47:39 +00:00
|
|
|
if (num_elements > 0)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" +-- %d elements\n", num_elements);
|
2002-11-27 20:47:39 +00:00
|
|
|
if (num_types > 0)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" +-- %d types\n", num_types);
|
2002-12-12 22:14:36 +00:00
|
|
|
if (num_indexes > 0)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" +-- %d indexes\n", num_indexes);
|
2002-11-27 20:47:39 +00:00
|
|
|
if (num_other > 0)
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print (" +-- %d other objects\n", num_other);
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("\n");
|
2001-01-04 10:47:39 +00:00
|
|
|
}
|
|
|
|
|
2004-05-23 17:52:54 +00:00
|
|
|
static int
|
|
|
|
print_element_features (const gchar * element_name)
|
|
|
|
{
|
|
|
|
GstPluginFeature *feature;
|
|
|
|
|
|
|
|
/* FIXME implement other pretty print function for these */
|
|
|
|
#ifndef GST_DISABLE_INDEX
|
2005-09-15 00:13:26 +00:00
|
|
|
feature = gst_default_registry_find_feature (element_name,
|
2004-05-23 17:52:54 +00:00
|
|
|
GST_TYPE_INDEX_FACTORY);
|
|
|
|
if (feature) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%s: an index\n", element_name);
|
2004-05-23 17:52:54 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
#endif
|
2005-09-15 00:13:26 +00:00
|
|
|
feature = gst_default_registry_find_feature (element_name,
|
2004-05-23 17:52:54 +00:00
|
|
|
GST_TYPE_TYPE_FIND_FACTORY);
|
|
|
|
if (feature) {
|
2004-06-14 11:04:06 +00:00
|
|
|
n_print ("%s: a typefind function\n", element_name);
|
2004-05-23 17:52:54 +00:00
|
|
|
return 0;
|
|
|
|
}
|
2004-05-23 18:41:25 +00:00
|
|
|
|
|
|
|
return -1;
|
2004-05-23 17:52:54 +00:00
|
|
|
}
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
static int
|
|
|
|
print_element_info (GstElementFactory * factory, gboolean print_names)
|
|
|
|
{
|
|
|
|
GstElement *element;
|
|
|
|
gint maxlevel = 0;
|
|
|
|
|
2005-09-15 00:13:26 +00:00
|
|
|
factory =
|
|
|
|
GST_ELEMENT_FACTORY (gst_plugin_feature_load (GST_PLUGIN_FEATURE
|
|
|
|
(factory)));
|
|
|
|
|
2005-10-04 11:10:04 +00:00
|
|
|
if (!factory) {
|
|
|
|
g_print ("element plugin couldn't be loaded\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
element = gst_element_factory_create (factory, NULL);
|
|
|
|
if (!element) {
|
|
|
|
g_print ("couldn't construct element for some reason\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (print_names)
|
|
|
|
_name = g_strdup_printf ("%s: ", GST_PLUGIN_FEATURE (factory)->name);
|
|
|
|
else
|
2007-10-15 07:11:04 +00:00
|
|
|
_name = NULL;
|
2004-06-14 11:04:06 +00:00
|
|
|
|
|
|
|
print_factory_details_info (factory);
|
2005-09-18 06:59:25 +00:00
|
|
|
if (GST_PLUGIN_FEATURE (factory)->plugin_name) {
|
|
|
|
GstPlugin *plugin;
|
2004-08-12 11:50:31 +00:00
|
|
|
|
2005-09-18 06:59:25 +00:00
|
|
|
plugin = gst_registry_find_plugin (gst_registry_get_default (),
|
|
|
|
GST_PLUGIN_FEATURE (factory)->plugin_name);
|
|
|
|
if (plugin) {
|
|
|
|
print_plugin_info (plugin);
|
|
|
|
}
|
2004-08-12 11:50:31 +00:00
|
|
|
}
|
2004-06-14 11:04:06 +00:00
|
|
|
|
|
|
|
print_hierarchy (G_OBJECT_TYPE (element), 0, &maxlevel);
|
ported gstchildproxy over from 0.8 ported gst-inspect fixes and enhancements over from 0.8
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_proxy_get_child_by_index),
(gst_bin_child_proxy_get_children_count),
(gst_bin_child_proxy_init):
* gst/gstchildproxy.c: (gst_child_proxy_get_child_by_name),
(gst_child_proxy_get_child_by_index),
(gst_child_proxy_get_children_count), (gst_child_proxy_lookup),
(gst_child_proxy_get_property), (gst_child_proxy_get_valist),
(gst_child_proxy_get), (gst_child_proxy_set_property),
(gst_child_proxy_set_valist), (gst_child_proxy_set),
(gst_child_proxy_child_added), (gst_child_proxy_child_removed),
(gst_child_proxy_base_init), (gst_child_proxy_get_type):
* gst/gstchildproxy.h:
* gst/parse/grammar.y:
* tools/gst-inspect.c: (print_interfaces),
(print_element_properties_info), (print_element_info):
ported gstchildproxy over from 0.8
ported gst-inspect fixes and enhancements over from 0.8
2005-08-22 21:03:33 +00:00
|
|
|
print_interfaces (G_OBJECT_TYPE (element));
|
2004-06-14 11:04:06 +00:00
|
|
|
|
|
|
|
print_pad_templates_info (element, factory);
|
|
|
|
print_element_flag_info (element);
|
|
|
|
print_implementation_info (element);
|
|
|
|
print_clocking_info (element);
|
|
|
|
print_index_info (element);
|
|
|
|
print_pad_info (element);
|
|
|
|
print_element_properties_info (element);
|
|
|
|
print_signal_info (element);
|
|
|
|
print_children_info (element);
|
|
|
|
|
2006-12-07 12:11:14 +00:00
|
|
|
gst_object_unref (factory);
|
2007-10-15 14:33:16 +00:00
|
|
|
g_free (_name);
|
2004-06-14 11:04:06 +00:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2007-01-11 14:16:23 +00:00
|
|
|
|
|
|
|
static void
|
|
|
|
print_plugin_automatic_install_info_codecs (GstElementFactory * factory)
|
|
|
|
{
|
|
|
|
GstPadDirection direction;
|
|
|
|
const gchar *type_name;
|
|
|
|
const gchar *klass;
|
|
|
|
const GList *static_templates, *l;
|
|
|
|
GstCaps *caps = NULL;
|
|
|
|
guint i, num;
|
|
|
|
|
|
|
|
klass = gst_element_factory_get_klass (factory);
|
|
|
|
g_return_if_fail (klass != NULL);
|
|
|
|
|
|
|
|
if (strstr (klass, "Demuxer") ||
|
|
|
|
strstr (klass, "Decoder") ||
|
|
|
|
strstr (klass, "Depay") || strstr (klass, "Parser")) {
|
|
|
|
type_name = "decoder";
|
|
|
|
direction = GST_PAD_SINK;
|
|
|
|
} else if (strstr (klass, "Muxer") ||
|
|
|
|
strstr (klass, "Encoder") || strstr (klass, "Pay")) {
|
|
|
|
type_name = "encoder";
|
|
|
|
direction = GST_PAD_SRC;
|
|
|
|
} else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* decoder/demuxer sink pads should always be static and there should only
|
|
|
|
* be one, the same applies to encoders/muxers and source pads */
|
|
|
|
static_templates = gst_element_factory_get_static_pad_templates (factory);
|
|
|
|
for (l = static_templates; l != NULL; l = l->next) {
|
|
|
|
GstStaticPadTemplate *tmpl = NULL;
|
|
|
|
|
|
|
|
tmpl = (GstStaticPadTemplate *) l->data;
|
|
|
|
if (tmpl->direction == direction) {
|
|
|
|
caps = gst_static_pad_template_get_caps (tmpl);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (caps == NULL) {
|
|
|
|
g_printerr ("Couldn't find static pad template for %s '%s'\n",
|
|
|
|
type_name, GST_PLUGIN_FEATURE_NAME (factory));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
caps = gst_caps_make_writable (caps);
|
|
|
|
num = gst_caps_get_size (caps);
|
|
|
|
for (i = 0; i < num; ++i) {
|
|
|
|
GstStructure *s;
|
|
|
|
gchar *s_str;
|
|
|
|
|
|
|
|
s = gst_caps_get_structure (caps, i);
|
|
|
|
/* remove fields that are almost always just MIN-MAX of some sort
|
|
|
|
* in order to make the caps look less messy */
|
|
|
|
gst_structure_remove_field (s, "pixel-aspect-ratio");
|
|
|
|
gst_structure_remove_field (s, "framerate");
|
|
|
|
gst_structure_remove_field (s, "channels");
|
|
|
|
gst_structure_remove_field (s, "width");
|
|
|
|
gst_structure_remove_field (s, "height");
|
|
|
|
gst_structure_remove_field (s, "rate");
|
|
|
|
gst_structure_remove_field (s, "depth");
|
|
|
|
gst_structure_remove_field (s, "clock-rate");
|
|
|
|
s_str = gst_structure_to_string (s);
|
|
|
|
g_print ("%s-%s\n", type_name, s_str);
|
|
|
|
g_free (s_str);
|
|
|
|
}
|
|
|
|
gst_caps_unref (caps);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
print_plugin_automatic_install_info_protocols (GstElementFactory * factory)
|
|
|
|
{
|
|
|
|
gchar **protocols, **p;
|
|
|
|
|
|
|
|
protocols = gst_element_factory_get_uri_protocols (factory);
|
|
|
|
if (protocols != NULL && *protocols != NULL) {
|
|
|
|
switch (gst_element_factory_get_uri_type (factory)) {
|
|
|
|
case GST_URI_SINK:
|
|
|
|
for (p = protocols; *p != NULL; ++p)
|
|
|
|
g_print ("urisink-%s\n", *p);
|
|
|
|
break;
|
|
|
|
case GST_URI_SRC:
|
|
|
|
for (p = protocols; *p != NULL; ++p)
|
|
|
|
g_print ("urisource-%s\n", *p);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
g_strfreev (protocols);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
print_plugin_automatic_install_info (GstPlugin * plugin)
|
|
|
|
{
|
|
|
|
const gchar *plugin_name;
|
|
|
|
GList *features, *l;
|
|
|
|
|
|
|
|
plugin_name = gst_plugin_get_name (plugin);
|
|
|
|
|
|
|
|
/* not interested in typefind factories, only element factories */
|
|
|
|
features = gst_registry_get_feature_list (gst_registry_get_default (),
|
|
|
|
GST_TYPE_ELEMENT_FACTORY);
|
|
|
|
|
|
|
|
for (l = features; l != NULL; l = l->next) {
|
|
|
|
GstPluginFeature *feature;
|
|
|
|
|
|
|
|
feature = GST_PLUGIN_FEATURE (l->data);
|
|
|
|
|
|
|
|
/* only interested in the ones that are in the plugin we just loaded */
|
|
|
|
if (g_str_equal (plugin_name, feature->plugin_name)) {
|
|
|
|
GstElementFactory *factory;
|
|
|
|
|
|
|
|
g_print ("element-%s\n", gst_plugin_feature_get_name (feature));
|
|
|
|
|
|
|
|
factory = GST_ELEMENT_FACTORY (feature);
|
|
|
|
print_plugin_automatic_install_info_protocols (factory);
|
|
|
|
print_plugin_automatic_install_info_codecs (factory);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
g_list_foreach (features, (GFunc) gst_object_unref, NULL);
|
|
|
|
g_list_free (features);
|
|
|
|
}
|
|
|
|
|
2003-03-16 20:06:02 +00:00
|
|
|
int
|
|
|
|
main (int argc, char *argv[])
|
2001-08-21 20:16:48 +00:00
|
|
|
{
|
2005-09-18 07:41:28 +00:00
|
|
|
gboolean print_all = FALSE;
|
2007-01-11 14:16:23 +00:00
|
|
|
gboolean print_aii = FALSE;
|
Merged in popt removal + GOption addition patch from Ronald, bug #169772.
Original commit message from CVS:
2005-10-10 Andy Wingo <wingo@pobox.com>
Merged in popt removal + GOption addition patch from Ronald, bug
#169772.
* docs/gst/gstreamer-sections.txt: Add STATE_(UN)LOCK_FULL, move
GstElement macros around, remove popt-related symbols, add goption
stuff.
* configure.ac: Remove popt checks, require GLib 2.6 for GOption.
* docs/gst/Makefile.am:
* docs/libs/Makefile.am: No POPT_CFLAGS.
* examples/manual/Makefile.am:
* docs/manual/basics-init.xml: Doc updates with an example.
* gst/gst.c: (gst_init_get_option_group), (gst_init_check),
(gst_init), (parse_one_option), (parse_goption_arg):
* gst/gst.h: Removed gst_init_with_popt_table and friends. Took a
bit of hand merging and debugging to get the GOption stuff working
tho.
* tests/Makefile.am:
* tools/Makefile.am:
* tools/gst-inspect.c: (main):
* tools/gst-launch.c: (main):
* tools/gst-run.c: (main):
* tools/gst-xmlinspect.c: (main): Thanks Ronald!
2005-10-10 15:53:59 +00:00
|
|
|
GOptionEntry options[] = {
|
|
|
|
{"print-all", 'a', 0, G_OPTION_ARG_NONE, &print_all,
|
2005-09-18 07:41:28 +00:00
|
|
|
N_("Print all elements"), NULL},
|
2007-01-11 14:16:23 +00:00
|
|
|
{"print-plugin-auto-install-info", '\0', 0, G_OPTION_ARG_NONE, &print_aii,
|
|
|
|
N_("Print a machine-parsable list of features the specified plugin "
|
|
|
|
"provides.\n "
|
|
|
|
"Useful in connection with external automatic plugin "
|
|
|
|
"installation mechanisms"), NULL},
|
2006-05-05 17:07:42 +00:00
|
|
|
GST_TOOLS_GOPTION_VERSION,
|
Merged in popt removal + GOption addition patch from Ronald, bug #169772.
Original commit message from CVS:
2005-10-10 Andy Wingo <wingo@pobox.com>
Merged in popt removal + GOption addition patch from Ronald, bug
#169772.
* docs/gst/gstreamer-sections.txt: Add STATE_(UN)LOCK_FULL, move
GstElement macros around, remove popt-related symbols, add goption
stuff.
* configure.ac: Remove popt checks, require GLib 2.6 for GOption.
* docs/gst/Makefile.am:
* docs/libs/Makefile.am: No POPT_CFLAGS.
* examples/manual/Makefile.am:
* docs/manual/basics-init.xml: Doc updates with an example.
* gst/gst.c: (gst_init_get_option_group), (gst_init_check),
(gst_init), (parse_one_option), (parse_goption_arg):
* gst/gst.h: Removed gst_init_with_popt_table and friends. Took a
bit of hand merging and debugging to get the GOption stuff working
tho.
* tests/Makefile.am:
* tools/Makefile.am:
* tools/gst-inspect.c: (main):
* tools/gst-launch.c: (main):
* tools/gst-run.c: (main):
* tools/gst-xmlinspect.c: (main): Thanks Ronald!
2005-10-10 15:53:59 +00:00
|
|
|
{NULL}
|
2005-09-18 07:41:28 +00:00
|
|
|
};
|
Merged in popt removal + GOption addition patch from Ronald, bug #169772.
Original commit message from CVS:
2005-10-10 Andy Wingo <wingo@pobox.com>
Merged in popt removal + GOption addition patch from Ronald, bug
#169772.
* docs/gst/gstreamer-sections.txt: Add STATE_(UN)LOCK_FULL, move
GstElement macros around, remove popt-related symbols, add goption
stuff.
* configure.ac: Remove popt checks, require GLib 2.6 for GOption.
* docs/gst/Makefile.am:
* docs/libs/Makefile.am: No POPT_CFLAGS.
* examples/manual/Makefile.am:
* docs/manual/basics-init.xml: Doc updates with an example.
* gst/gst.c: (gst_init_get_option_group), (gst_init_check),
(gst_init), (parse_one_option), (parse_goption_arg):
* gst/gst.h: Removed gst_init_with_popt_table and friends. Took a
bit of hand merging and debugging to get the GOption stuff working
tho.
* tests/Makefile.am:
* tools/Makefile.am:
* tools/gst-inspect.c: (main):
* tools/gst-launch.c: (main):
* tools/gst-run.c: (main):
* tools/gst-xmlinspect.c: (main): Thanks Ronald!
2005-10-10 15:53:59 +00:00
|
|
|
GOptionContext *ctx;
|
|
|
|
GError *err = NULL;
|
2002-09-15 18:59:27 +00:00
|
|
|
|
2005-10-11 16:05:16 +00:00
|
|
|
#ifdef ENABLE_NLS
|
2004-02-03 11:23:59 +00:00
|
|
|
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
|
2004-03-13 15:27:01 +00:00
|
|
|
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
2004-02-03 11:23:59 +00:00
|
|
|
textdomain (GETTEXT_PACKAGE);
|
2004-05-07 02:36:28 +00:00
|
|
|
#endif
|
2004-02-03 11:23:59 +00:00
|
|
|
|
2007-01-05 15:55:16 +00:00
|
|
|
if (!g_thread_supported ())
|
|
|
|
g_thread_init (NULL);
|
|
|
|
|
2006-05-05 17:45:41 +00:00
|
|
|
ctx = g_option_context_new ("[ELEMENT-NAME | PLUGIN-NAME]");
|
Merged in popt removal + GOption addition patch from Ronald, bug #169772.
Original commit message from CVS:
2005-10-10 Andy Wingo <wingo@pobox.com>
Merged in popt removal + GOption addition patch from Ronald, bug
#169772.
* docs/gst/gstreamer-sections.txt: Add STATE_(UN)LOCK_FULL, move
GstElement macros around, remove popt-related symbols, add goption
stuff.
* configure.ac: Remove popt checks, require GLib 2.6 for GOption.
* docs/gst/Makefile.am:
* docs/libs/Makefile.am: No POPT_CFLAGS.
* examples/manual/Makefile.am:
* docs/manual/basics-init.xml: Doc updates with an example.
* gst/gst.c: (gst_init_get_option_group), (gst_init_check),
(gst_init), (parse_one_option), (parse_goption_arg):
* gst/gst.h: Removed gst_init_with_popt_table and friends. Took a
bit of hand merging and debugging to get the GOption stuff working
tho.
* tests/Makefile.am:
* tools/Makefile.am:
* tools/gst-inspect.c: (main):
* tools/gst-launch.c: (main):
* tools/gst-run.c: (main):
* tools/gst-xmlinspect.c: (main): Thanks Ronald!
2005-10-10 15:53:59 +00:00
|
|
|
g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE);
|
|
|
|
g_option_context_add_group (ctx, gst_init_get_option_group ());
|
|
|
|
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
|
|
|
|
g_print ("Error initializing: %s\n", err->message);
|
|
|
|
exit (1);
|
|
|
|
}
|
2005-10-13 09:57:15 +00:00
|
|
|
g_option_context_free (ctx);
|
2003-03-16 20:06:02 +00:00
|
|
|
|
2006-05-05 17:07:42 +00:00
|
|
|
gst_tools_print_version ("gst-inspect");
|
|
|
|
|
2004-06-14 11:04:06 +00:00
|
|
|
if (print_all && argc > 2) {
|
|
|
|
g_print ("-a requires no extra arguments\n");
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2001-12-14 20:56:51 +00:00
|
|
|
/* if no arguments, print out list of elements */
|
2004-06-14 11:04:06 +00:00
|
|
|
if (argc == 1 || print_all) {
|
2004-06-14 11:28:16 +00:00
|
|
|
print_element_list (print_all);
|
2004-03-13 15:27:01 +00:00
|
|
|
/* else we try to get a factory */
|
2001-01-04 10:47:39 +00:00
|
|
|
} else {
|
2004-06-15 14:17:55 +00:00
|
|
|
GstElementFactory *factory;
|
|
|
|
GstPlugin *plugin;
|
2004-06-14 11:04:06 +00:00
|
|
|
const char *arg = argv[argc - 1];
|
2004-06-15 14:17:55 +00:00
|
|
|
int retval;
|
2004-06-14 11:04:06 +00:00
|
|
|
|
2004-06-15 14:17:55 +00:00
|
|
|
factory = gst_element_factory_find (arg);
|
|
|
|
/* if there's a factory, print out the info */
|
|
|
|
if (factory) {
|
|
|
|
retval = print_element_info (factory, print_all);
|
2006-01-17 12:53:07 +00:00
|
|
|
gst_object_unref (factory);
|
2001-01-04 10:47:39 +00:00
|
|
|
} else {
|
2004-06-15 14:17:55 +00:00
|
|
|
retval = print_element_features (arg);
|
2001-01-04 10:47:39 +00:00
|
|
|
}
|
|
|
|
|
2004-06-15 14:17:55 +00:00
|
|
|
/* otherwise check if it's a plugin */
|
|
|
|
if (retval) {
|
2005-09-15 00:13:26 +00:00
|
|
|
plugin = gst_default_registry_find_plugin (arg);
|
2001-01-04 10:47:39 +00:00
|
|
|
|
2004-06-15 14:17:55 +00:00
|
|
|
/* if there is such a plugin, print out info */
|
|
|
|
if (plugin) {
|
2007-01-11 14:16:23 +00:00
|
|
|
if (print_aii) {
|
|
|
|
print_plugin_automatic_install_info (plugin);
|
|
|
|
} else {
|
|
|
|
print_plugin_info (plugin);
|
|
|
|
print_plugin_features (plugin);
|
|
|
|
}
|
2004-06-15 14:17:55 +00:00
|
|
|
} else {
|
2005-09-29 19:45:27 +00:00
|
|
|
GError *error = NULL;
|
|
|
|
|
|
|
|
if (g_file_test (arg, G_FILE_TEST_EXISTS)) {
|
|
|
|
plugin = gst_plugin_load_file (arg, &error);
|
|
|
|
|
|
|
|
if (plugin) {
|
2007-01-11 14:16:23 +00:00
|
|
|
if (print_aii) {
|
|
|
|
print_plugin_automatic_install_info (plugin);
|
|
|
|
} else {
|
|
|
|
print_plugin_info (plugin);
|
|
|
|
print_plugin_features (plugin);
|
|
|
|
}
|
2005-09-29 19:45:27 +00:00
|
|
|
} else {
|
2006-05-24 09:00:10 +00:00
|
|
|
g_print (_("Could not load plugin file: %s\n"), error->message);
|
2005-09-29 19:45:27 +00:00
|
|
|
g_error_free (error);
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
} else {
|
2006-05-24 09:00:10 +00:00
|
|
|
g_print (_("No such element or plugin '%s'\n"), arg);
|
2005-09-29 19:45:27 +00:00
|
|
|
return -1;
|
|
|
|
}
|
2004-06-15 14:17:55 +00:00
|
|
|
}
|
2001-01-04 10:47:39 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|