mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +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
|
static void
|
||||||
print_formats (const GstFormat *formats)
|
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) {
|
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);
|
||||||
printf ("\t\t(%d):\t%s (%s)\n", value->value, value->value_nick, value->value_name);
|
else
|
||||||
|
g_print ("\t\t(%d):\tUnknown format\n", *formats);
|
||||||
|
|
||||||
formats++;
|
formats++;
|
||||||
}
|
}
|
||||||
g_type_class_unref (klass);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -315,12 +311,22 @@ print_element_properties (GstElement *element)
|
||||||
else if (G_IS_PARAM_SPEC_ENUM (param)) {
|
else if (G_IS_PARAM_SPEC_ENUM (param)) {
|
||||||
GEnumValue *values;
|
GEnumValue *values;
|
||||||
guint j = 0;
|
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;
|
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) {
|
while (values[j].value_name) {
|
||||||
printf("\n%-23.23s (%d): \t%s", "", values[j].value, values[j].value_nick);
|
printf("\n%-23.23s (%d): \t%s", "", values[j].value, values[j].value_nick);
|
||||||
j++;
|
j++;
|
||||||
|
|
|
@ -40,47 +40,6 @@ idle_func (gpointer data)
|
||||||
return busy;
|
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*
|
static GstElement*
|
||||||
xmllaunch_parse_cmdline (const gchar **argv)
|
xmllaunch_parse_cmdline (const gchar **argv)
|
||||||
{
|
{
|
||||||
|
@ -190,9 +149,9 @@ main(int argc, char *argv[])
|
||||||
if (!silent)
|
if (!silent)
|
||||||
{
|
{
|
||||||
gchar **exclude_list = exclude_args ? g_strsplit (exclude_args, ",", 0) : NULL;
|
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
|
#ifndef GST_DISABLE_LOADSAVE
|
||||||
if (savefile) {
|
if (savefile) {
|
||||||
|
@ -218,6 +177,7 @@ main(int argc, char *argv[])
|
||||||
} else {
|
} else {
|
||||||
g_print ("waiting for the state change...\n");
|
g_print ("waiting for the state change...\n");
|
||||||
gst_element_wait_state_change (pipeline);
|
gst_element_wait_state_change (pipeline);
|
||||||
|
g_print ("got the state change...\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_element_set_state (pipeline, GST_STATE_NULL);
|
gst_element_set_state (pipeline, GST_STATE_NULL);
|
||||||
|
|
Loading…
Reference in a new issue