mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:16:12 +00:00
multiqueue: fix properties
Fix properties, make the extra-size properties as not implemented.
This commit is contained in:
parent
b83fb45fac
commit
c490d7542c
1 changed files with 44 additions and 37 deletions
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue