mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-22 17:51:16 +00:00
Updates to the new props API
Original commit message from CVS: Updates to the new props API Some more info in -inspect
This commit is contained in:
parent
f0326eea55
commit
0e40bc56b6
2 changed files with 117 additions and 49 deletions
|
@ -1,60 +1,93 @@
|
|||
#include <gst/gst.h>
|
||||
#include <string.h>
|
||||
|
||||
/* this must be built within the gstreamer dir, else this will fail */
|
||||
#include <gst/gstpropsprivate.h>
|
||||
|
||||
static void
|
||||
print_prop (GstPropsEntry *prop, gboolean showname, gchar *pfx)
|
||||
{
|
||||
GList *list;
|
||||
GstPropsEntry *listentry;
|
||||
gchar *longprefix;
|
||||
GstPropsType type;
|
||||
|
||||
if (showname)
|
||||
printf("%s%s: ",pfx,g_quark_to_string(prop->propid));
|
||||
printf("%s%s: ", pfx, gst_props_entry_get_name (prop));
|
||||
else
|
||||
printf(pfx);
|
||||
|
||||
switch (prop->propstype) {
|
||||
case GST_PROPS_INT_ID:
|
||||
printf("Integer: %d\n",prop->data.int_data);
|
||||
type = gst_props_entry_get_type (prop);
|
||||
|
||||
switch (type) {
|
||||
case GST_PROPS_INT_TYPE:
|
||||
{
|
||||
gint val;
|
||||
gst_props_entry_get_int (prop, &val);
|
||||
printf("Integer: %d\n", val);
|
||||
break;
|
||||
case GST_PROPS_INT_RANGE_ID:
|
||||
printf("Integer range: %d - %d\n",prop->data.int_range_data.min,
|
||||
prop->data.int_range_data.max);
|
||||
}
|
||||
case GST_PROPS_INT_RANGE_TYPE:
|
||||
{
|
||||
gint min, max;
|
||||
gst_props_entry_get_int_range (prop, &min, &max);
|
||||
printf("Integer range: %d - %d\n", min, max);
|
||||
break;
|
||||
case GST_PROPS_FLOAT_ID:
|
||||
printf("Float: %f\n",prop->data.float_data);
|
||||
}
|
||||
case GST_PROPS_FLOAT_TYPE:
|
||||
{
|
||||
gfloat val;
|
||||
gst_props_entry_get_float (prop, &val);
|
||||
printf("Float: %f\n", val);
|
||||
break;
|
||||
case GST_PROPS_FLOAT_RANGE_ID:
|
||||
printf("Float range: %f - %f\n",prop->data.float_range_data.min,
|
||||
prop->data.float_range_data.max);
|
||||
}
|
||||
case GST_PROPS_FLOAT_RANGE_TYPE:
|
||||
{
|
||||
gfloat min, max;
|
||||
gst_props_entry_get_float_range (prop, &min, &max);
|
||||
printf("Float range: %f - %f\n", min, max);
|
||||
break;
|
||||
case GST_PROPS_BOOL_ID:
|
||||
printf("Boolean: %s\n",prop->data.bool_data ? "TRUE" : "FALSE");
|
||||
}
|
||||
case GST_PROPS_BOOL_TYPE:
|
||||
{
|
||||
gboolean val;
|
||||
gst_props_entry_get_boolean (prop, &val);
|
||||
printf("Boolean: %s\n", val ? "TRUE" : "FALSE");
|
||||
break;
|
||||
case GST_PROPS_STRING_ID:
|
||||
printf("String: %s\n",prop->data.string_data.string);
|
||||
}
|
||||
case GST_PROPS_STRING_TYPE:
|
||||
{
|
||||
const gchar *val;
|
||||
gst_props_entry_get_string (prop, &val);
|
||||
printf("String: %s\n", val);
|
||||
break;
|
||||
case GST_PROPS_FOURCC_ID:
|
||||
}
|
||||
case GST_PROPS_FOURCC_TYPE:
|
||||
{
|
||||
guint32 val;
|
||||
gst_props_entry_get_fourcc_int (prop, &val);
|
||||
printf("FourCC: '%c%c%c%c'\n",
|
||||
prop->data.fourcc_data & 0xff,prop->data.fourcc_data>>8 & 0xff,
|
||||
prop->data.fourcc_data>>16 & 0xff,prop->data.fourcc_data>>24 & 0xff);
|
||||
(gchar)( val & 0xff),
|
||||
(gchar)((val >> 8) & 0xff),
|
||||
(gchar)((val >> 16) & 0xff),
|
||||
(gchar)((val >> 24) & 0xff));
|
||||
break;
|
||||
case GST_PROPS_LIST_ID:
|
||||
printf("List:\n");
|
||||
longprefix = g_strdup_printf("%s ",pfx);
|
||||
list = prop->data.list_data.entries;
|
||||
}
|
||||
case GST_PROPS_LIST_TYPE:
|
||||
{
|
||||
const GList *list;
|
||||
gchar *longprefix;
|
||||
|
||||
gst_props_entry_get_list (prop, &list);
|
||||
printf ("List:\n");
|
||||
longprefix = g_strdup_printf ("%s ", pfx);
|
||||
while (list) {
|
||||
listentry = (GstPropsEntry*)(list->data);
|
||||
list = g_list_next(list);
|
||||
print_prop(listentry,FALSE,longprefix);
|
||||
GstPropsEntry *listentry;
|
||||
|
||||
listentry = (GstPropsEntry*) (list->data);
|
||||
print_prop (listentry, FALSE, longprefix);
|
||||
|
||||
list = g_list_next (list);
|
||||
}
|
||||
g_free(longprefix);
|
||||
g_free (longprefix);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
printf("unknown props %d\n", prop->propstype);
|
||||
printf("unknown props %d\n", type);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -190,7 +223,7 @@ print_element_info (GstElementFactory *factory)
|
|||
|
||||
have_flags = FALSE;
|
||||
|
||||
printf("Element Flags:\n");
|
||||
printf("\nElement Flags:\n");
|
||||
if (GST_FLAG_IS_SET(element,GST_ELEMENT_COMPLEX)) {
|
||||
printf(" GST_ELEMENT_COMPLEX\n");
|
||||
have_flags = TRUE;
|
||||
|
@ -210,6 +243,24 @@ print_element_info (GstElementFactory *factory)
|
|||
if (!have_flags)
|
||||
printf(" no flags set\n");
|
||||
|
||||
if (GST_IS_BIN (element)) {
|
||||
printf("\nBin Flags:\n");
|
||||
if (GST_FLAG_IS_SET(element,GST_BIN_FLAG_MANAGER)) {
|
||||
printf(" GST_BIN_FLAG_MANAGER\n");
|
||||
have_flags = TRUE;
|
||||
}
|
||||
if (GST_FLAG_IS_SET(element,GST_BIN_SELF_SCHEDULABLE)) {
|
||||
printf(" GST_BIN_SELF_SCHEDULABLE\n");
|
||||
have_flags = TRUE;
|
||||
}
|
||||
if (GST_FLAG_IS_SET(element,GST_BIN_FLAG_PREFER_COTHREADS)) {
|
||||
printf(" GST_BIN_FLAG_PREFER_COTHREADS\n");
|
||||
have_flags = TRUE;
|
||||
}
|
||||
if (!have_flags)
|
||||
printf(" no flags set\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
printf("\nElement Implementation:\n");
|
||||
|
@ -228,6 +279,23 @@ print_element_info (GstElementFactory *factory)
|
|||
GST_DEBUG_FUNCPTR_NAME(gstobject_class->restore_thyself));
|
||||
#endif
|
||||
|
||||
have_flags = FALSE;
|
||||
|
||||
printf("\nClocking Interaction:\n");
|
||||
if (element->setclockfunc) {
|
||||
printf(" element requires a clock\n");
|
||||
have_flags = TRUE;
|
||||
}
|
||||
if (element->getclockfunc) {
|
||||
GstClock *clock;
|
||||
|
||||
clock = gst_element_get_clock (element);
|
||||
printf(" element provides a clock: %s\n", GST_OBJECT_NAME(clock));
|
||||
have_flags = TRUE;
|
||||
}
|
||||
if (!have_flags) {
|
||||
printf(" none\n");
|
||||
}
|
||||
|
||||
|
||||
printf("\nPads:\n");
|
||||
|
@ -292,8 +360,10 @@ print_element_info (GstElementFactory *factory)
|
|||
GValue value = { 0, };
|
||||
GParamSpec *param = property_specs[i];
|
||||
|
||||
g_value_init (&value, param->value_type);
|
||||
g_object_get_property (G_OBJECT (element), param->name, &value);
|
||||
if (param->flags & G_PARAM_READABLE) {
|
||||
g_value_init (&value, param->value_type);
|
||||
g_object_get_property (G_OBJECT (element), param->name, &value);
|
||||
}
|
||||
|
||||
printf(" %-40.40s: ",param->name);
|
||||
switch (G_VALUE_TYPE (&value)) {
|
||||
|
@ -323,7 +393,7 @@ print_element_info (GstElementFactory *factory)
|
|||
/* g_type_class_unref (ec); */
|
||||
}
|
||||
else
|
||||
printf("unknown %d", param->value_type);
|
||||
printf("unknown %ld", param->value_type);
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
#include <gst/gstparse.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <gst/gstpropsprivate.h>
|
||||
#include <sys/time.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
static int launch_argc;
|
||||
static char **launch_argv;
|
||||
|
@ -18,16 +14,16 @@ gboolean
|
|||
idle_func (gpointer data)
|
||||
{
|
||||
gboolean busy;
|
||||
struct timeval tfthen, tfnow;
|
||||
guint64 diff;
|
||||
GTimeVal tfthen, tfnow;
|
||||
GstClockTimeDiff diff;
|
||||
|
||||
gettimeofday (&tfthen, (struct timezone *)NULL);
|
||||
g_get_current_time (&tfthen);
|
||||
busy = gst_bin_iterate (GST_BIN (data));
|
||||
iterations++;
|
||||
gettimeofday (&tfnow, (struct timezone *)NULL);
|
||||
g_get_current_time (&tfnow);
|
||||
|
||||
diff = ((guint64)tfnow.tv_sec*1000000LL+tfnow.tv_usec) -
|
||||
((guint64)tfthen.tv_sec*1000000LL+tfthen.tv_usec);
|
||||
diff = GST_TIMEVAL_TO_TIME (tfnow) -
|
||||
GST_TIMEVAL_TO_TIME (tfthen);
|
||||
|
||||
sum += diff;
|
||||
min = MIN (min, diff);
|
||||
|
@ -166,6 +162,8 @@ main(int argc, char *argv[])
|
|||
launch_argc = argc;
|
||||
launch_argv = argv;
|
||||
|
||||
//gst_schedulerfactory_set_default_name ("fast");
|
||||
|
||||
/* make a null-terminated version of argv */
|
||||
argvn = g_new0 (char *,argc);
|
||||
memcpy (argvn, argv+1, sizeof (char*) * (argc-1));
|
||||
|
|
Loading…
Reference in a new issue