summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-10-21 11:17:08 -0400
committerWim Taymans <wim@metal.(none)>2009-10-24 16:07:23 -0400
commite5c9643d4f18578b0f77a51f4b100b35057a6cb3 (patch)
tree0e039625a62d9bdf188a75f0ec1cedc0b1ccc102
parentc57e5bf07e66ebe5942c4e96e81af07da6d3739a (diff)
multiqueue: fix properties
Fix properties, make the extra-size properties as not implemented.
-rw-r--r--plugins/elements/gstmultiqueue.c81
1 files changed, 44 insertions, 37 deletions
diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c
index 30b7bc665..857544f5e 100644
--- a/plugins/elements/gstmultiqueue.c
+++ b/plugins/elements/gstmultiqueue.c
@@ -192,6 +192,14 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src%d",
GST_DEBUG_CATEGORY_STATIC (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
* 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
@@ -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
* 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_BUFFERS 5
#define DEFAULT_EXTRA_SIZE_TIME 3 * GST_SECOND
-/* Signals and args */
-enum
-{
- SIGNAL_UNDERRUN,
- SIGNAL_OVERRUN,
- LAST_SIGNAL
-};
-
enum
{
- ARG_0,
- ARG_EXTRA_SIZE_BYTES,
- ARG_EXTRA_SIZE_BUFFERS,
- ARG_EXTRA_SIZE_TIME,
- ARG_MAX_SIZE_BYTES,
- ARG_MAX_SIZE_BUFFERS,
- ARG_MAX_SIZE_TIME,
+ PROP_0,
+ PROP_EXTRA_SIZE_BYTES,
+ PROP_EXTRA_SIZE_BUFFERS,
+ PROP_EXTRA_SIZE_TIME,
+ PROP_MAX_SIZE_BYTES,
+ PROP_MAX_SIZE_BUFFERS,
+ PROP_MAX_SIZE_TIME,
+ PROP_LAST
};
#define GST_MULTI_QUEUE_MUTEX_LOCK(q) G_STMT_START { \
@@ -313,34 +317,37 @@ gst_multi_queue_class_init (GstMultiQueueClass * klass)
/* 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)",
"Max. amount of data in the queue (bytes, 0=disable)",
0, G_MAXUINT, DEFAULT_MAX_SIZE_BYTES,
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)",
"Max. number of buffers in the queue (0=disable)", 0, G_MAXUINT,
DEFAULT_MAX_SIZE_BUFFERS,
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)",
"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));
- 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)",
- "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,
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)",
- "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,
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)",
- "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,
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);
switch (prop_id) {
- case ARG_MAX_SIZE_BYTES:
+ case PROP_MAX_SIZE_BYTES:
GST_MULTI_QUEUE_MUTEX_LOCK (mq);
mq->max_size.bytes = g_value_get_uint (value);
SET_CHILD_PROPERTY (mq, bytes);
GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
break;
- case ARG_MAX_SIZE_BUFFERS:
+ case PROP_MAX_SIZE_BUFFERS:
GST_MULTI_QUEUE_MUTEX_LOCK (mq);
mq->max_size.visible = g_value_get_uint (value);
SET_CHILD_PROPERTY (mq, visible);
GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
break;
- case ARG_MAX_SIZE_TIME:
+ case PROP_MAX_SIZE_TIME:
GST_MULTI_QUEUE_MUTEX_LOCK (mq);
mq->max_size.time = g_value_get_uint64 (value);
SET_CHILD_PROPERTY (mq, time);
GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
break;
- case ARG_EXTRA_SIZE_BYTES:
+ case PROP_EXTRA_SIZE_BYTES:
mq->extra_size.bytes = g_value_get_uint (value);
break;
- case ARG_EXTRA_SIZE_BUFFERS:
+ case PROP_EXTRA_SIZE_BUFFERS:
mq->extra_size.visible = g_value_get_uint (value);
break;
- case ARG_EXTRA_SIZE_TIME:
+ case PROP_EXTRA_SIZE_TIME:
mq->extra_size.time = g_value_get_uint64 (value);
break;
default:
@@ -447,22 +454,22 @@ gst_multi_queue_get_property (GObject * object, guint prop_id,
GST_MULTI_QUEUE_MUTEX_LOCK (mq);
switch (prop_id) {
- case ARG_EXTRA_SIZE_BYTES:
+ case PROP_EXTRA_SIZE_BYTES:
g_value_set_uint (value, mq->extra_size.bytes);
break;
- case ARG_EXTRA_SIZE_BUFFERS:
+ case PROP_EXTRA_SIZE_BUFFERS:
g_value_set_uint (value, mq->extra_size.visible);
break;
- case ARG_EXTRA_SIZE_TIME:
+ case PROP_EXTRA_SIZE_TIME:
g_value_set_uint64 (value, mq->extra_size.time);
break;
- case ARG_MAX_SIZE_BYTES:
+ case PROP_MAX_SIZE_BYTES:
g_value_set_uint (value, mq->max_size.bytes);
break;
- case ARG_MAX_SIZE_BUFFERS:
+ case PROP_MAX_SIZE_BUFFERS:
g_value_set_uint (value, mq->max_size.visible);
break;
- case ARG_MAX_SIZE_TIME:
+ case PROP_MAX_SIZE_TIME:
g_value_set_uint64 (value, mq->max_size.time);
break;
default: