mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
-inspect fixes for formats
Original commit message from CVS: -inspect fixes for formats -launch uses the default error/deep_notify handlers
This commit is contained in:
parent
992f55fe4c
commit
7fc1800892
2 changed files with 23 additions and 57 deletions
|
@ -110,21 +110,17 @@ print_props (GstProps *properties, gchar *pfx)
|
|||
static void
|
||||
print_formats (const GstFormat *formats)
|
||||
{
|
||||
GType format_type;
|
||||
GEnumClass *klass;
|
||||
|
||||
format_type = gst_format_get_type();
|
||||
klass = (GEnumClass *) g_type_class_ref (format_type);
|
||||
|
||||
while (formats && *formats) {
|
||||
GEnumValue *value;
|
||||
const gchar *nick;
|
||||
const gchar *description;
|
||||
|
||||
value = g_enum_get_value (klass, *formats);
|
||||
if (gst_format_get_details (*formats, &nick, &description))
|
||||
g_print ("\t\t(%d):\t%s (%s)\n", *formats, nick, description);
|
||||
else
|
||||
g_print ("\t\t(%d):\tUnknown format\n", *formats);
|
||||
|
||||
printf ("\t\t(%d):\t%s (%s)\n", value->value, value->value_nick, value->value_name);
|
||||
formats++;
|
||||
}
|
||||
g_type_class_unref (klass);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -315,12 +311,22 @@ print_element_properties (GstElement *element)
|
|||
else if (G_IS_PARAM_SPEC_ENUM (param)) {
|
||||
GEnumValue *values;
|
||||
guint j = 0;
|
||||
gint enum_value;
|
||||
|
||||
printf("%-23.23s Enum \"%s\" (default %d)", "",
|
||||
g_type_name (G_VALUE_TYPE (&value)),
|
||||
g_value_get_enum (&value));
|
||||
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)
|
||||
break;
|
||||
j++;
|
||||
}
|
||||
|
||||
g_print ("%-23.23s Enum \"%s\" (default %d, \"%s\")", "",
|
||||
g_type_name (G_VALUE_TYPE (&value)),
|
||||
enum_value, values[j].value_nick);
|
||||
|
||||
j = 0;
|
||||
while (values[j].value_name) {
|
||||
printf("\n%-23.23s (%d): \t%s", "", values[j].value, values[j].value_nick);
|
||||
j++;
|
||||
|
|
|
@ -40,47 +40,6 @@ idle_func (gpointer data)
|
|||
return busy;
|
||||
}
|
||||
|
||||
static void
|
||||
property_change_callback (GObject *object, GstObject *orig, GParamSpec *pspec, gchar **excluded_props)
|
||||
{
|
||||
GValue value = { 0, }; /* the important thing is that value.type = 0 */
|
||||
gchar *str = 0;
|
||||
|
||||
if (pspec->flags & G_PARAM_READABLE) {
|
||||
/* let's not print these out for excluded properties... */
|
||||
while (excluded_props != NULL && *excluded_props != NULL)
|
||||
{
|
||||
if (strcmp (pspec->name, *excluded_props) == 0)
|
||||
return;
|
||||
excluded_props++;
|
||||
}
|
||||
g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
|
||||
g_object_get_property (G_OBJECT (orig), pspec->name, &value);
|
||||
|
||||
if (G_IS_PARAM_SPEC_ENUM (pspec)) {
|
||||
GEnumValue *enum_value;
|
||||
enum_value = g_enum_get_value (G_ENUM_CLASS (g_type_class_ref (pspec->value_type)),
|
||||
g_value_get_enum (&value));
|
||||
|
||||
str = g_strdup_printf ("%s (%d)", enum_value->value_nick, enum_value->value);
|
||||
}
|
||||
else {
|
||||
str = g_strdup_value_contents (&value);
|
||||
}
|
||||
g_print ("%s: %s = %s\n", GST_OBJECT_NAME (orig), pspec->name, str);
|
||||
g_free (str);
|
||||
g_value_unset(&value);
|
||||
} else {
|
||||
g_warning ("Parameter not readable. What's up with that?");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
error_callback (GObject *object, GstObject *orig, gchar *error)
|
||||
{
|
||||
g_print ("ERROR: %s: %s\n", GST_OBJECT_NAME (orig), error);
|
||||
}
|
||||
|
||||
static GstElement*
|
||||
xmllaunch_parse_cmdline (const gchar **argv)
|
||||
{
|
||||
|
@ -190,9 +149,9 @@ main(int argc, char *argv[])
|
|||
if (!silent)
|
||||
{
|
||||
gchar **exclude_list = exclude_args ? g_strsplit (exclude_args, ",", 0) : NULL;
|
||||
g_signal_connect (pipeline, "deep_notify", G_CALLBACK (property_change_callback), exclude_list);
|
||||
g_signal_connect (pipeline, "deep_notify", G_CALLBACK (gst_element_default_deep_notify), exclude_list);
|
||||
}
|
||||
g_signal_connect (pipeline, "error", G_CALLBACK (error_callback), NULL);
|
||||
g_signal_connect (pipeline, "error", G_CALLBACK (gst_element_default_error), NULL);
|
||||
|
||||
#ifndef GST_DISABLE_LOADSAVE
|
||||
if (savefile) {
|
||||
|
@ -218,6 +177,7 @@ main(int argc, char *argv[])
|
|||
} else {
|
||||
g_print ("waiting for the state change...\n");
|
||||
gst_element_wait_state_change (pipeline);
|
||||
g_print ("got the state change...\n");
|
||||
}
|
||||
|
||||
gst_element_set_state (pipeline, GST_STATE_NULL);
|
||||
|
|
Loading…
Reference in a new issue