multiqueue: fix properties

Fix properties, make the extra-size properties as not implemented.
This commit is contained in:
Wim Taymans 2009-10-21 11:17:08 -04:00 committed by Wim Taymans
parent b83fb45fac
commit c490d7542c

View file

@ -192,6 +192,14 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src%d",
GST_DEBUG_CATEGORY_STATIC (multi_queue_debug); GST_DEBUG_CATEGORY_STATIC (multi_queue_debug);
#define GST_CAT_DEFAULT (multi_queue_debug) #define GST_CAT_DEFAULT (multi_queue_debug)
/* Signals and args */
enum
{
SIGNAL_UNDERRUN,
SIGNAL_OVERRUN,
LAST_SIGNAL
};
/* default limits, we try to keep up to 2 seconds of data and if there is not /* default limits, we try to keep up to 2 seconds of data and if there is not
* time, up to 10 MB. The number of buffers is dynamically scaled to make sure * time, up to 10 MB. The number of buffers is dynamically scaled to make sure
* there is data in the queues. Normally, the byte and time limits are not hit * there is data in the queues. Normally, the byte and time limits are not hit
@ -202,28 +210,24 @@ GST_DEBUG_CATEGORY_STATIC (multi_queue_debug);
/* second limits. When we hit one of the above limits we are probably dealing /* second limits. When we hit one of the above limits we are probably dealing
* with a badly muxed file and we scale the limits to these emergency values. * with a badly muxed file and we scale the limits to these emergency values.
* This is currently not yet implemented. */ * This is currently not yet implemented.
* Since we dynamically scale the queue buffer size up to the limits but avoid
* going above the max-size-buffers when we can, we don't really need this
* aditional extra size. */
#define DEFAULT_EXTRA_SIZE_BYTES 10 * 1024 * 1024 /* 10 MB */ #define DEFAULT_EXTRA_SIZE_BYTES 10 * 1024 * 1024 /* 10 MB */
#define DEFAULT_EXTRA_SIZE_BUFFERS 5 #define DEFAULT_EXTRA_SIZE_BUFFERS 5
#define DEFAULT_EXTRA_SIZE_TIME 3 * GST_SECOND #define DEFAULT_EXTRA_SIZE_TIME 3 * GST_SECOND
/* Signals and args */
enum enum
{ {
SIGNAL_UNDERRUN, PROP_0,
SIGNAL_OVERRUN, PROP_EXTRA_SIZE_BYTES,
LAST_SIGNAL PROP_EXTRA_SIZE_BUFFERS,
}; PROP_EXTRA_SIZE_TIME,
PROP_MAX_SIZE_BYTES,
enum PROP_MAX_SIZE_BUFFERS,
{ PROP_MAX_SIZE_TIME,
ARG_0, PROP_LAST
ARG_EXTRA_SIZE_BYTES,
ARG_EXTRA_SIZE_BUFFERS,
ARG_EXTRA_SIZE_TIME,
ARG_MAX_SIZE_BYTES,
ARG_MAX_SIZE_BUFFERS,
ARG_MAX_SIZE_TIME,
}; };
#define GST_MULTI_QUEUE_MUTEX_LOCK(q) G_STMT_START { \ #define GST_MULTI_QUEUE_MUTEX_LOCK(q) G_STMT_START { \
@ -313,34 +317,37 @@ gst_multi_queue_class_init (GstMultiQueueClass * klass)
/* PROPERTIES */ /* PROPERTIES */
g_object_class_install_property (gobject_class, ARG_MAX_SIZE_BYTES, g_object_class_install_property (gobject_class, PROP_MAX_SIZE_BYTES,
g_param_spec_uint ("max-size-bytes", "Max. size (kB)", g_param_spec_uint ("max-size-bytes", "Max. size (kB)",
"Max. amount of data in the queue (bytes, 0=disable)", "Max. amount of data in the queue (bytes, 0=disable)",
0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES, 0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, ARG_MAX_SIZE_BUFFERS, g_object_class_install_property (gobject_class, PROP_MAX_SIZE_BUFFERS,
g_param_spec_uint ("max-size-buffers", "Max. size (buffers)", g_param_spec_uint ("max-size-buffers", "Max. size (buffers)",
"Max. number of buffers in the queue (0=disable)", 0, G_MAXUINT, "Max. number of buffers in the queue (0=disable)", 0, G_MAXUINT,
DEFAULT_MAX_SIZE_BUFFERS, DEFAULT_MAX_SIZE_BUFFERS,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, ARG_MAX_SIZE_TIME, g_object_class_install_property (gobject_class, PROP_MAX_SIZE_TIME,
g_param_spec_uint64 ("max-size-time", "Max. size (ns)", g_param_spec_uint64 ("max-size-time", "Max. size (ns)",
"Max. amount of data in the queue (in ns, 0=disable)", 0, G_MAXUINT64, "Max. amount of data in the queue (in ns, 0=disable)", 0, G_MAXUINT64,
DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, ARG_EXTRA_SIZE_BYTES, g_object_class_install_property (gobject_class, PROP_EXTRA_SIZE_BYTES,
g_param_spec_uint ("extra-size-bytes", "Extra Size (kB)", g_param_spec_uint ("extra-size-bytes", "Extra Size (kB)",
"Amount of data the queues can grow if one of them is empty (bytes, 0=disable)", "Amount of data the queues can grow if one of them is empty (bytes, 0=disable)"
" (NOT IMPLEMENTED)",
0, G_MAXUINT, DEFAULT_EXTRA_SIZE_BYTES, 0, G_MAXUINT, DEFAULT_EXTRA_SIZE_BYTES,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, ARG_EXTRA_SIZE_BUFFERS, g_object_class_install_property (gobject_class, PROP_EXTRA_SIZE_BUFFERS,
g_param_spec_uint ("extra-size-buffers", "Extra Size (buffers)", g_param_spec_uint ("extra-size-buffers", "Extra Size (buffers)",
"Amount of buffers the queues can grow if one of them is empty (0=disable)", "Amount of buffers the queues can grow if one of them is empty (0=disable)"
" (NOT IMPLEMENTED)",
0, G_MAXUINT, DEFAULT_EXTRA_SIZE_BUFFERS, 0, G_MAXUINT, DEFAULT_EXTRA_SIZE_BUFFERS,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, ARG_EXTRA_SIZE_TIME, g_object_class_install_property (gobject_class, PROP_EXTRA_SIZE_TIME,
g_param_spec_uint64 ("extra-size-time", "Extra Size (ns)", g_param_spec_uint64 ("extra-size-time", "Extra Size (ns)",
"Amount of time the queues can grow if one of them is empty (in ns, 0=disable)", "Amount of time the queues can grow if one of them is empty (in ns, 0=disable)"
" (NOT IMPLEMENTED)",
0, G_MAXUINT64, DEFAULT_EXTRA_SIZE_TIME, 0, G_MAXUINT64, DEFAULT_EXTRA_SIZE_TIME,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
@ -405,31 +412,31 @@ gst_multi_queue_set_property (GObject * object, guint prop_id,
GstMultiQueue *mq = GST_MULTI_QUEUE (object); GstMultiQueue *mq = GST_MULTI_QUEUE (object);
switch (prop_id) { switch (prop_id) {
case ARG_MAX_SIZE_BYTES: case PROP_MAX_SIZE_BYTES:
GST_MULTI_QUEUE_MUTEX_LOCK (mq); GST_MULTI_QUEUE_MUTEX_LOCK (mq);
mq->max_size.bytes = g_value_get_uint (value); mq->max_size.bytes = g_value_get_uint (value);
SET_CHILD_PROPERTY (mq, bytes); SET_CHILD_PROPERTY (mq, bytes);
GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
break; break;
case ARG_MAX_SIZE_BUFFERS: case PROP_MAX_SIZE_BUFFERS:
GST_MULTI_QUEUE_MUTEX_LOCK (mq); GST_MULTI_QUEUE_MUTEX_LOCK (mq);
mq->max_size.visible = g_value_get_uint (value); mq->max_size.visible = g_value_get_uint (value);
SET_CHILD_PROPERTY (mq, visible); SET_CHILD_PROPERTY (mq, visible);
GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
break; break;
case ARG_MAX_SIZE_TIME: case PROP_MAX_SIZE_TIME:
GST_MULTI_QUEUE_MUTEX_LOCK (mq); GST_MULTI_QUEUE_MUTEX_LOCK (mq);
mq->max_size.time = g_value_get_uint64 (value); mq->max_size.time = g_value_get_uint64 (value);
SET_CHILD_PROPERTY (mq, time); SET_CHILD_PROPERTY (mq, time);
GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
break; break;
case ARG_EXTRA_SIZE_BYTES: case PROP_EXTRA_SIZE_BYTES:
mq->extra_size.bytes = g_value_get_uint (value); mq->extra_size.bytes = g_value_get_uint (value);
break; break;
case ARG_EXTRA_SIZE_BUFFERS: case PROP_EXTRA_SIZE_BUFFERS:
mq->extra_size.visible = g_value_get_uint (value); mq->extra_size.visible = g_value_get_uint (value);
break; break;
case ARG_EXTRA_SIZE_TIME: case PROP_EXTRA_SIZE_TIME:
mq->extra_size.time = g_value_get_uint64 (value); mq->extra_size.time = g_value_get_uint64 (value);
break; break;
default: default:
@ -447,22 +454,22 @@ gst_multi_queue_get_property (GObject * object, guint prop_id,
GST_MULTI_QUEUE_MUTEX_LOCK (mq); GST_MULTI_QUEUE_MUTEX_LOCK (mq);
switch (prop_id) { switch (prop_id) {
case ARG_EXTRA_SIZE_BYTES: case PROP_EXTRA_SIZE_BYTES:
g_value_set_uint (value, mq->extra_size.bytes); g_value_set_uint (value, mq->extra_size.bytes);
break; break;
case ARG_EXTRA_SIZE_BUFFERS: case PROP_EXTRA_SIZE_BUFFERS:
g_value_set_uint (value, mq->extra_size.visible); g_value_set_uint (value, mq->extra_size.visible);
break; break;
case ARG_EXTRA_SIZE_TIME: case PROP_EXTRA_SIZE_TIME:
g_value_set_uint64 (value, mq->extra_size.time); g_value_set_uint64 (value, mq->extra_size.time);
break; break;
case ARG_MAX_SIZE_BYTES: case PROP_MAX_SIZE_BYTES:
g_value_set_uint (value, mq->max_size.bytes); g_value_set_uint (value, mq->max_size.bytes);
break; break;
case ARG_MAX_SIZE_BUFFERS: case PROP_MAX_SIZE_BUFFERS:
g_value_set_uint (value, mq->max_size.visible); g_value_set_uint (value, mq->max_size.visible);
break; break;
case ARG_MAX_SIZE_TIME: case PROP_MAX_SIZE_TIME:
g_value_set_uint64 (value, mq->max_size.time); g_value_set_uint64 (value, mq->max_size.time);
break; break;
default: default: