mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 03:31:05 +00:00
GST_DEBUG and _INFO should have no trailing \n
Original commit message from CVS: GST_DEBUG and _INFO should have no trailing \n
This commit is contained in:
parent
c14adca257
commit
ffe760e476
9 changed files with 147 additions and 119 deletions
|
@ -141,6 +141,18 @@ gst_identity_get_bufferpool (GstPad *pad)
|
|||
return gst_pad_get_bufferpool (identity->srcpad);
|
||||
}
|
||||
|
||||
static GstCaps*
|
||||
gst_identity_getcaps (GstPad *pad, GstCaps *caps)
|
||||
{
|
||||
GstIdentity *identity;
|
||||
GstPad *otherpad;
|
||||
|
||||
identity = GST_IDENTITY (gst_pad_get_parent (pad));
|
||||
otherpad = (pad == identity->srcpad ? identity->sinkpad : identity->srcpad);
|
||||
|
||||
return gst_pad_get_allowed_caps (otherpad);
|
||||
}
|
||||
|
||||
static GstPadConnectReturn
|
||||
gst_identity_connect (GstPad *pad, GstCaps *caps)
|
||||
{
|
||||
|
@ -167,10 +179,12 @@ gst_identity_init (GstIdentity *identity)
|
|||
gst_pad_set_chain_function (identity->sinkpad, GST_DEBUG_FUNCPTR (gst_identity_chain));
|
||||
gst_pad_set_bufferpool_function (identity->sinkpad, gst_identity_get_bufferpool);
|
||||
gst_pad_set_connect_function (identity->sinkpad, gst_identity_connect);
|
||||
gst_pad_set_getcaps_function (identity->sinkpad, gst_identity_getcaps);
|
||||
|
||||
identity->srcpad = gst_pad_new ("src", GST_PAD_SRC);
|
||||
gst_element_add_pad (GST_ELEMENT (identity), identity->srcpad);
|
||||
gst_pad_set_connect_function (identity->srcpad, gst_identity_connect);
|
||||
gst_pad_set_getcaps_function (identity->srcpad, gst_identity_getcaps);
|
||||
|
||||
identity->loop_based = FALSE;
|
||||
identity->sleep_time = 0;
|
||||
|
|
|
@ -392,7 +392,7 @@ gst_bin_remove (GstBin *bin, GstElement *element)
|
|||
gint state_idx = 0;
|
||||
GstElementState state;
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_PARENTAGE, bin, "trying to remove child %s\n", GST_ELEMENT_NAME (element));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_PARENTAGE, bin, "trying to remove child %s", GST_ELEMENT_NAME (element));
|
||||
|
||||
g_return_if_fail (bin != NULL);
|
||||
g_return_if_fail (GST_IS_BIN (bin));
|
||||
|
@ -553,7 +553,7 @@ gst_bin_change_state_norecurse (GstBin * bin)
|
|||
GstElementStateReturn ret;
|
||||
|
||||
if (GST_ELEMENT_CLASS (parent_class)->change_state) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, bin, "setting bin's own state\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, bin, "setting bin's own state");
|
||||
ret = GST_ELEMENT_CLASS (parent_class)->change_state (GST_ELEMENT (bin));
|
||||
|
||||
return ret;
|
||||
|
@ -845,9 +845,9 @@ gst_bin_iterate (GstBin * bin)
|
|||
if (!running) {
|
||||
if (GST_STATE (bin) == GST_STATE_PLAYING && GST_STATE_PENDING (bin) == GST_STATE_VOID_PENDING) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, bin,
|
||||
"waiting for child shutdown after useless iteration\n");
|
||||
"waiting for child shutdown after useless iteration");
|
||||
gst_element_wait_state_change (GST_ELEMENT (bin));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, bin, "child shutdown\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, bin, "child shutdown");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1248,7 +1248,7 @@ gst_element_set_state (GstElement *element, GstElementState state)
|
|||
/* start with the current state */
|
||||
curpending = GST_STATE(element);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "setting state from %s to %s\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "setting state from %s to %s",
|
||||
gst_element_statename (curpending),
|
||||
gst_element_statename (state));
|
||||
|
||||
|
@ -1265,7 +1265,7 @@ gst_element_set_state (GstElement *element, GstElementState state)
|
|||
GST_STATE_PENDING (element) = curpending;
|
||||
|
||||
if (curpending != state) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "intermediate: setting state to %s\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "intermediate: setting state to %s",
|
||||
gst_element_statename (curpending));
|
||||
}
|
||||
|
||||
|
@ -1276,17 +1276,17 @@ gst_element_set_state (GstElement *element, GstElementState state)
|
|||
|
||||
switch (return_val) {
|
||||
case GST_STATE_FAILURE:
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "have failed change_state return\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "have failed change_state return");
|
||||
return return_val;
|
||||
case GST_STATE_ASYNC:
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "element will change state async\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "element will change state async");
|
||||
return return_val;
|
||||
default:
|
||||
/* Last thing we do is verify that a successful state change really
|
||||
* did change the state... */
|
||||
if (GST_STATE (element) != curpending) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_STATES, element,
|
||||
"element claimed state-change success, but state didn't change %s, %s <-> %s\n",
|
||||
"element claimed state-change success, but state didn't change %s, %s <-> %s",
|
||||
gst_element_statename (GST_STATE (element)),
|
||||
gst_element_statename (GST_STATE_PENDING (element)),
|
||||
gst_element_statename (curpending));
|
||||
|
@ -1304,7 +1304,7 @@ gst_element_negotiate_pads (GstElement *element)
|
|||
{
|
||||
GList *pads = GST_ELEMENT_PADS (element);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "negotiating pads\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "negotiating pads");
|
||||
|
||||
while (pads) {
|
||||
GstPad *pad = GST_PAD (pads->data);
|
||||
|
@ -1344,13 +1344,13 @@ gst_element_negotiate_pads (GstElement *element)
|
|||
|
||||
/* only try to negotiate if the peer element is in PAUSED or higher too */
|
||||
if (otherstate >= GST_STATE_READY) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "perform negotiate for %s:%s and %s:%s\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "perform negotiate for %s:%s and %s:%s",
|
||||
GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad));
|
||||
if (!gst_pad_perform_negotiate (GST_PAD (srcpad), GST_PAD (sinkpad)))
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "not negotiatiating %s:%s and %s:%s, not in READY yet\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "not negotiatiating %s:%s and %s:%s, not in READY yet",
|
||||
GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad));
|
||||
}
|
||||
}
|
||||
|
@ -1364,7 +1364,7 @@ gst_element_clear_pad_caps (GstElement *element)
|
|||
{
|
||||
GList *pads = GST_ELEMENT_PADS (element);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "clearing pad caps\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_CAPS, element, "clearing pad caps");
|
||||
|
||||
while (pads) {
|
||||
GstRealPad *pad = GST_PAD_REALIZE (pads->data);
|
||||
|
@ -1473,7 +1473,7 @@ gst_element_dispose (GObject *object)
|
|||
GList *pads;
|
||||
GstPad *pad;
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_REFCOUNTING, element, "dispose\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_REFCOUNTING, element, "dispose");
|
||||
|
||||
gst_element_set_state (element, GST_STATE_NULL);
|
||||
|
||||
|
|
|
@ -95,30 +95,30 @@ gst_props_debug_entry (GstPropsEntry *entry)
|
|||
|
||||
switch (entry->propstype) {
|
||||
case GST_PROPS_INT_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: int %d\n", name, entry->data.int_data);
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: int %d", name, entry->data.int_data);
|
||||
break;
|
||||
case GST_PROPS_FLOAT_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: float %f\n", name, entry->data.float_data);
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: float %f", name, entry->data.float_data);
|
||||
break;
|
||||
case GST_PROPS_FOURCC_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: fourcc %4.4s\n", name, (gchar*)&entry->data.fourcc_data);
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: fourcc %4.4s", name, (gchar*)&entry->data.fourcc_data);
|
||||
break;
|
||||
case GST_PROPS_BOOL_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: bool %d\n", name, entry->data.bool_data);
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: bool %d", name, entry->data.bool_data);
|
||||
break;
|
||||
case GST_PROPS_STRING_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: string %s\n", name, entry->data.string_data.string);
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: string %s", name, entry->data.string_data.string);
|
||||
break;
|
||||
case GST_PROPS_INT_RANGE_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: int range %d-%d\n", name, entry->data.int_range_data.min,
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: int range %d-%d", name, entry->data.int_range_data.min,
|
||||
entry->data.int_range_data.max);
|
||||
break;
|
||||
case GST_PROPS_FLOAT_RANGE_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: float range %f-%f\n", name, entry->data.float_range_data.min,
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "%s: float range %f-%f", name, entry->data.float_range_data.min,
|
||||
entry->data.float_range_data.max);
|
||||
break;
|
||||
case GST_PROPS_LIST_TYPE:
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "[list]\n");
|
||||
GST_DEBUG (GST_CAT_PROPERTIES, "[list]");
|
||||
{
|
||||
GList *entries = entry->data.list_data.entries;
|
||||
|
||||
|
@ -1218,7 +1218,7 @@ gst_props_entry_check_compatibility (GstPropsEntry *entry1, GstPropsEntry *entry
|
|||
switch (entry2->propstype) {
|
||||
/* b <---> a */
|
||||
case GST_PROPS_FOURCC_TYPE:
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"\"%4.4s\" <--> \"%4.4s\" ?\n",
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"\"%4.4s\" <--> \"%4.4s\" ?",
|
||||
(char*) &entry2->data.fourcc_data, (char*) &entry1->data.fourcc_data);
|
||||
return (entry2->data.fourcc_data == entry1->data.fourcc_data);
|
||||
default:
|
||||
|
@ -1229,13 +1229,13 @@ gst_props_entry_check_compatibility (GstPropsEntry *entry1, GstPropsEntry *entry
|
|||
switch (entry2->propstype) {
|
||||
/* b <---> a - d */
|
||||
case GST_PROPS_INT_RANGE_TYPE:
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"%d <= %d <= %d ?\n",entry2->data.int_range_data.min,
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"%d <= %d <= %d ?",entry2->data.int_range_data.min,
|
||||
entry1->data.int_data,entry2->data.int_range_data.max);
|
||||
return (entry2->data.int_range_data.min <= entry1->data.int_data &&
|
||||
entry2->data.int_range_data.max >= entry1->data.int_data);
|
||||
/* b <---> a */
|
||||
case GST_PROPS_INT_TYPE:
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"%d == %d ?\n",entry1->data.int_data,entry2->data.int_data);
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"%d == %d ?",entry1->data.int_data,entry2->data.int_data);
|
||||
return (entry2->data.int_data == entry1->data.int_data);
|
||||
default:
|
||||
break;
|
||||
|
@ -1266,7 +1266,7 @@ gst_props_entry_check_compatibility (GstPropsEntry *entry1, GstPropsEntry *entry
|
|||
switch (entry2->propstype) {
|
||||
/* t <---> t */
|
||||
case GST_PROPS_STRING_TYPE:
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"\"%s\" <--> \"%s\" ?\n",
|
||||
GST_DEBUG(GST_CAT_PROPERTIES,"\"%s\" <--> \"%s\" ?",
|
||||
entry2->data.string_data.string, entry1->data.string_data.string);
|
||||
return (!strcmp (entry2->data.string_data.string, entry1->data.string_data.string));
|
||||
default:
|
||||
|
|
|
@ -223,7 +223,7 @@ gst_queue_init (GstQueue *queue)
|
|||
queue->writer = FALSE;
|
||||
queue->not_empty = g_cond_new ();
|
||||
queue->not_full = g_cond_new ();
|
||||
GST_DEBUG_ELEMENT (GST_CAT_THREAD, queue, "initialized queue's not_empty & not_full conditions\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_THREAD, queue, "initialized queue's not_empty & not_full conditions");
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -251,7 +251,7 @@ gst_queue_get_bufferpool (GstPad *pad)
|
|||
static void
|
||||
gst_queue_cleanup_buffers (gpointer data, const gpointer user_data)
|
||||
{
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, user_data, "cleaning buffer %p\n", data);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, user_data, "cleaning buffer %p", data);
|
||||
|
||||
if (GST_IS_BUFFER (data)) {
|
||||
gst_buffer_unref (GST_BUFFER (data));
|
||||
|
@ -287,9 +287,9 @@ gst_queue_chain (GstPad *pad, GstBuffer *buf)
|
|||
|
||||
restart:
|
||||
/* we have to lock the queue since we span threads */
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld\n", pthread_self ());
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld", pthread_self ());
|
||||
g_mutex_lock (queue->qlock);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld\n", pthread_self ());
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld", pthread_self ());
|
||||
|
||||
if (GST_IS_EVENT (buf)) {
|
||||
switch (GST_EVENT_TYPE (buf)) {
|
||||
|
@ -307,7 +307,7 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "adding buffer %p of size %d\n",buf,GST_BUFFER_SIZE(buf));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "adding buffer %p of size %d",buf,GST_BUFFER_SIZE(buf));
|
||||
|
||||
if (queue->level_buffers == queue->size_buffers) {
|
||||
/* if this is a leaky queue... */
|
||||
|
@ -315,12 +315,12 @@ restart:
|
|||
/* FIXME don't want to leak events! */
|
||||
/* if we leak on the upstream side, drop the current buffer */
|
||||
if (queue->leaky == GST_QUEUE_LEAK_UPSTREAM) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end");
|
||||
if (GST_IS_EVENT (buf))
|
||||
fprintf(stderr, "Error: queue [%s] leaked an event, type:%d\n",
|
||||
GST_ELEMENT_NAME(GST_ELEMENT(queue)),
|
||||
GST_EVENT_TYPE(GST_EVENT(buf)));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end");
|
||||
gst_buffer_unref(buf);
|
||||
/* now we have to clean up and exit right away */
|
||||
g_mutex_unlock (queue->qlock);
|
||||
|
@ -330,7 +330,7 @@ restart:
|
|||
else {
|
||||
GList *front;
|
||||
GstBuffer *leakbuf;
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on downstream end\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on downstream end");
|
||||
front = queue->queue;
|
||||
leakbuf = (GstBuffer *)(front->data);
|
||||
if (GST_IS_EVENT (leakbuf))
|
||||
|
@ -345,13 +345,13 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre full wait, level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre full wait, level:%d/%d",
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
while (queue->level_buffers == queue->size_buffers) {
|
||||
/* if there's a pending state change for this queue or its manager, switch */
|
||||
/* back to iterator so bottom half of state change executes */
|
||||
while (GST_STATE_PENDING (queue) != GST_STATE_VOID_PENDING) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!");
|
||||
g_mutex_unlock (queue->qlock);
|
||||
if (gst_element_interrupt (GST_ELEMENT (queue)))
|
||||
return;
|
||||
|
@ -372,15 +372,16 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_full, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_full, level:%d/%d",
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
if (queue->writer)
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple writers on queue!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple writers on queue!");
|
||||
queue->writer = TRUE;
|
||||
g_cond_wait (queue->not_full, queue->qlock);
|
||||
queue->writer = FALSE;
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_full signal\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_full signal");
|
||||
}
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post full wait, level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post full wait, level:%d/%d",
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
}
|
||||
|
||||
|
@ -389,7 +390,7 @@ restart:
|
|||
queue->level_buffers++;
|
||||
queue->level_bytes += GST_BUFFER_SIZE(buf);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)+ level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)+ level:%d/%d",
|
||||
GST_DEBUG_PAD_NAME(pad),
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
|
||||
|
@ -403,7 +404,7 @@ restart:
|
|||
|
||||
if (reader)
|
||||
{
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_empty\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_empty");
|
||||
g_cond_signal (queue->not_empty);
|
||||
}
|
||||
}
|
||||
|
@ -425,17 +426,17 @@ gst_queue_get (GstPad *pad)
|
|||
|
||||
restart:
|
||||
/* have to lock for thread-safety */
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld\n", pthread_self ());
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld", pthread_self ());
|
||||
g_mutex_lock (queue->qlock);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld %p\n", pthread_self (), queue->not_empty);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld %p", pthread_self (), queue->not_empty);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre empty wait, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre empty wait, level:%d/%d", queue->level_buffers, queue->size_buffers);
|
||||
while (queue->level_buffers == 0) {
|
||||
/* if there's a pending state change for this queue or its manager, switch
|
||||
* back to iterator so bottom half of state change executes
|
||||
*/
|
||||
while (GST_STATE_PENDING (queue) != GST_STATE_VOID_PENDING) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!");
|
||||
g_mutex_unlock (queue->qlock);
|
||||
if (gst_element_interrupt (GST_ELEMENT (queue)))
|
||||
return NULL;
|
||||
|
@ -453,26 +454,26 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_empty, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_empty, level:%d/%d", queue->level_buffers, queue->size_buffers);
|
||||
if (queue->reader)
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple readers on queue!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple readers on queue!");
|
||||
queue->reader = TRUE;
|
||||
g_cond_wait (queue->not_empty, queue->qlock);
|
||||
queue->reader = FALSE;
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_empty signal\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_empty signal");
|
||||
}
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post empty wait, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post empty wait, level:%d/%d", queue->level_buffers, queue->size_buffers);
|
||||
|
||||
front = queue->queue;
|
||||
buf = (GstBuffer *)(front->data);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "retrieved buffer %p from queue\n", buf);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "retrieved buffer %p from queue", buf);
|
||||
queue->queue = g_list_remove_link (queue->queue, front);
|
||||
g_list_free (front);
|
||||
|
||||
queue->level_buffers--;
|
||||
queue->level_bytes -= GST_BUFFER_SIZE(buf);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)- level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)- level:%d/%d",
|
||||
GST_DEBUG_PAD_NAME(pad),
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
|
||||
|
@ -486,7 +487,7 @@ restart:
|
|||
|
||||
if (writer)
|
||||
{
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_full\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_full");
|
||||
g_cond_signal (queue->not_full);
|
||||
}
|
||||
|
||||
|
@ -495,7 +496,7 @@ restart:
|
|||
GstEvent *event = GST_EVENT(buf);
|
||||
switch (GST_EVENT_TYPE(event)) {
|
||||
case GST_EVENT_EOS:
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue \"%s\" eos\n", GST_ELEMENT_NAME (queue));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue \"%s\" eos", GST_ELEMENT_NAME (queue));
|
||||
gst_element_set_eos (GST_ELEMENT (queue));
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -128,8 +128,6 @@ void gst_scheduler_error (GstScheduler *sched, GstElement *element);
|
|||
void gst_scheduler_pad_connect (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad);
|
||||
void gst_scheduler_pad_disconnect (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad);
|
||||
GstPad* gst_scheduler_pad_select (GstScheduler *sched, GList *padlist);
|
||||
GstClock* gst_scheduler_get_clock (GstScheduler *sched);
|
||||
GstClock* gst_scheduler_get_clock (GstScheduler *sched);
|
||||
GstClockReturn gst_scheduler_clock_wait (GstScheduler *sched, GstElement *element,
|
||||
GstClock *clock, GstClockTime time);
|
||||
gboolean gst_scheduler_iterate (GstScheduler *sched);
|
||||
|
|
|
@ -265,7 +265,7 @@ gst_thread_change_state (GstElement * element)
|
|||
|
||||
if (pthread_equal (self, thread->thread_id)) {
|
||||
GST_DEBUG (GST_CAT_THREAD,
|
||||
"no sync(" GST_DEBUG_THREAD_FORMAT "): setting own thread's state to spinning\n",
|
||||
"no sync(" GST_DEBUG_THREAD_FORMAT "): setting own thread's state to spinning",
|
||||
GST_DEBUG_THREAD_ARGS (thread->pid));
|
||||
return gst_thread_update_state (thread);
|
||||
}
|
||||
|
@ -275,7 +275,7 @@ gst_thread_change_state (GstElement * element)
|
|||
/* set the state to idle */
|
||||
GST_FLAG_UNSET (thread, GST_THREAD_STATE_SPINNING);
|
||||
|
||||
THR_DEBUG ("creating thread \"%s\"\n", GST_ELEMENT_NAME (element));
|
||||
THR_DEBUG ("creating thread \"%s\"", GST_ELEMENT_NAME (element));
|
||||
|
||||
g_mutex_lock (thread->lock);
|
||||
|
||||
|
@ -283,29 +283,29 @@ gst_thread_change_state (GstElement * element)
|
|||
pthread_create (&thread->thread_id, NULL, gst_thread_main_loop, thread);
|
||||
|
||||
/* wait for it to 'spin up' */
|
||||
THR_DEBUG ("waiting for child thread spinup\n");
|
||||
THR_DEBUG ("waiting for child thread spinup");
|
||||
g_cond_wait (thread->cond, thread->lock);
|
||||
THR_DEBUG ("thread claims to be up\n");
|
||||
THR_DEBUG ("thread claims to be up");
|
||||
g_mutex_unlock (thread->lock);
|
||||
break;
|
||||
case GST_STATE_READY_TO_PAUSED:
|
||||
THR_INFO ("readying thread");
|
||||
g_mutex_lock (thread->lock);
|
||||
THR_DEBUG ("signaling\n");
|
||||
THR_DEBUG ("signaling");
|
||||
g_cond_signal (thread->cond);
|
||||
THR_DEBUG ("waiting for ack\n");
|
||||
THR_DEBUG ("waiting for ack");
|
||||
g_cond_wait (thread->cond, thread->lock);
|
||||
THR_DEBUG ("got ack\n");
|
||||
THR_DEBUG ("got ack");
|
||||
g_mutex_unlock (thread->lock);
|
||||
break;
|
||||
case GST_STATE_PAUSED_TO_PLAYING:
|
||||
THR_DEBUG ("telling thread to start spinning\n");
|
||||
THR_DEBUG ("telling thread to start spinning");
|
||||
g_mutex_lock (thread->lock);
|
||||
THR_DEBUG ("signaling\n");
|
||||
THR_DEBUG ("signaling");
|
||||
g_cond_signal (thread->cond);
|
||||
THR_DEBUG ("waiting for ack\n");
|
||||
THR_DEBUG ("waiting for ack");
|
||||
g_cond_wait (thread->cond, thread->lock);
|
||||
THR_DEBUG ("got ack\n");
|
||||
THR_DEBUG ("got ack");
|
||||
g_mutex_unlock (thread->lock);
|
||||
break;
|
||||
case GST_STATE_PLAYING_TO_PAUSED:
|
||||
|
@ -328,7 +328,7 @@ gst_thread_change_state (GstElement * element)
|
|||
GstElement *element = GST_ELEMENT (elements->data);
|
||||
|
||||
g_assert (element);
|
||||
THR_DEBUG (" element \"%s\"\n", GST_ELEMENT_NAME (element));
|
||||
THR_DEBUG (" element \"%s\"", GST_ELEMENT_NAME (element));
|
||||
elements = g_list_next (elements);
|
||||
if (GST_IS_QUEUE (element)) {
|
||||
GstQueue *queue = GST_QUEUE (element);
|
||||
|
@ -337,7 +337,7 @@ gst_thread_change_state (GstElement * element)
|
|||
* FIXME on up- or down-stream side)
|
||||
* FIXME also make this more efficient by keeping list of managed queues
|
||||
*/
|
||||
THR_DEBUG ("waking queue \"%s\"\n", GST_ELEMENT_NAME (element));
|
||||
THR_DEBUG ("waking queue \"%s\"", GST_ELEMENT_NAME (element));
|
||||
g_mutex_lock (queue->qlock);
|
||||
GST_STATE_PENDING (element) = GST_STATE_PAUSED;
|
||||
g_cond_signal (queue->not_full);
|
||||
|
@ -374,7 +374,7 @@ gst_thread_change_state (GstElement * element)
|
|||
if (GST_ELEMENT_SCHED (peerelement) != GST_ELEMENT_SCHED (thread)) {
|
||||
GstQueue *queue = GST_QUEUE (peerelement);
|
||||
|
||||
THR_DEBUG (" element \"%s\" has pad cross sched boundary\n", GST_ELEMENT_NAME (element));
|
||||
THR_DEBUG (" element \"%s\" has pad cross sched boundary", GST_ELEMENT_NAME (element));
|
||||
/* FIXME!! */
|
||||
g_mutex_lock (queue->qlock);
|
||||
g_cond_signal (queue->not_full);
|
||||
|
@ -384,23 +384,23 @@ gst_thread_change_state (GstElement * element)
|
|||
}
|
||||
}
|
||||
}
|
||||
THR_DEBUG ("telling thread to pause, signaling\n");
|
||||
THR_DEBUG ("telling thread to pause, signaling");
|
||||
g_cond_signal (thread->cond);
|
||||
THR_DEBUG ("waiting for ack\n");
|
||||
THR_DEBUG ("waiting for ack");
|
||||
g_cond_wait (thread->cond, thread->lock);
|
||||
THR_DEBUG ("got ack\n");
|
||||
THR_DEBUG ("got ack");
|
||||
g_mutex_unlock (thread->lock);
|
||||
break;
|
||||
}
|
||||
case GST_STATE_READY_TO_NULL:
|
||||
THR_DEBUG ("telling thread to pause (null) - and joining\n");
|
||||
THR_DEBUG ("telling thread to pause (null) - and joining");
|
||||
/* MattH FIXME revisit */
|
||||
g_mutex_lock (thread->lock);
|
||||
THR_DEBUG ("signaling\n");
|
||||
THR_DEBUG ("signaling");
|
||||
g_cond_signal (thread->cond);
|
||||
THR_DEBUG ("waiting for ack\n");
|
||||
THR_DEBUG ("waiting for ack");
|
||||
g_cond_wait (thread->cond, thread->lock);
|
||||
THR_DEBUG ("got ack\n");
|
||||
THR_DEBUG ("got ack");
|
||||
pthread_join (thread->thread_id, NULL);
|
||||
thread->thread_id = -1;
|
||||
g_mutex_unlock (thread->lock);
|
||||
|
@ -411,18 +411,18 @@ gst_thread_change_state (GstElement * element)
|
|||
|
||||
break;
|
||||
case GST_STATE_PAUSED_TO_READY:
|
||||
THR_DEBUG ("telling thread to stop spinning\n");
|
||||
THR_DEBUG ("telling thread to stop spinning");
|
||||
g_mutex_lock (thread->lock);
|
||||
THR_DEBUG ("signaling\n");
|
||||
THR_DEBUG ("signaling");
|
||||
g_cond_signal (thread->cond);
|
||||
THR_DEBUG ("waiting for ack\n");
|
||||
THR_DEBUG ("waiting for ack");
|
||||
g_cond_wait (thread->cond, thread->lock);
|
||||
THR_DEBUG ("got ack\n");
|
||||
THR_DEBUG ("got ack");
|
||||
g_mutex_unlock (thread->lock);
|
||||
|
||||
break;
|
||||
default:
|
||||
GST_DEBUG_ELEMENT (GST_CAT_THREAD, element, "UNHANDLED STATE CHANGE! %x\n", transition);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_THREAD, element, "UNHANDLED STATE CHANGE! %x", transition);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -455,15 +455,15 @@ gst_thread_main_loop (void *arg)
|
|||
stateset = GST_ELEMENT_CLASS (parent_class)->change_state (GST_ELEMENT(thread));
|
||||
|
||||
if (stateset != GST_STATE_SUCCESS) {
|
||||
THR_DEBUG_MAIN ("state change of children failed\n");
|
||||
THR_DEBUG_MAIN ("state change of children failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
THR_DEBUG_MAIN ("indicating spinup\n");
|
||||
THR_DEBUG_MAIN ("indicating spinup");
|
||||
g_cond_signal (thread->cond);
|
||||
/* don't unlock the mutex because we hold it into the top of the while loop */
|
||||
THR_DEBUG_MAIN ("thread has indicated spinup to parent process\n");
|
||||
THR_DEBUG_MAIN ("thread has indicated spinup to parent process");
|
||||
|
||||
/***** THREAD IS NOW IN READY STATE *****/
|
||||
|
||||
|
@ -474,7 +474,7 @@ gst_thread_main_loop (void *arg)
|
|||
/* NOTE: cannot be in NULL, we're not running in that state at all */
|
||||
case GST_STATE_READY:
|
||||
/* wait to be set to either the NULL or PAUSED states */
|
||||
THR_DEBUG_MAIN ("thread in %s state, waiting for either %s or %s\n",
|
||||
THR_DEBUG_MAIN ("thread in %s state, waiting for either %s or %s",
|
||||
gst_element_statename (GST_STATE_READY),
|
||||
gst_element_statename (GST_STATE_NULL),
|
||||
gst_element_statename (GST_STATE_PAUSED));
|
||||
|
@ -489,7 +489,7 @@ gst_thread_main_loop (void *arg)
|
|||
|
||||
/* been signaled, we need to state transition now and signal back */
|
||||
gst_thread_update_state (thread);
|
||||
THR_DEBUG_MAIN ("done with state transition, signaling back to parent process\n");
|
||||
THR_DEBUG_MAIN ("done with state transition, signaling back to parent process");
|
||||
g_cond_signal (thread->cond);
|
||||
/* now we decide what to do next */
|
||||
if (GST_STATE (thread) == GST_STATE_NULL) {
|
||||
|
@ -499,7 +499,7 @@ gst_thread_main_loop (void *arg)
|
|||
continue;
|
||||
case GST_STATE_PAUSED:
|
||||
/* wait to be set to either the READY or PLAYING states */
|
||||
THR_DEBUG_MAIN("thread in %s state, waiting for either %s or %s\n",
|
||||
THR_DEBUG_MAIN("thread in %s state, waiting for either %s or %s",
|
||||
gst_element_statename (GST_STATE_PAUSED),
|
||||
gst_element_statename (GST_STATE_READY),
|
||||
gst_element_statename (GST_STATE_PLAYING));
|
||||
|
@ -540,14 +540,14 @@ gst_thread_main_loop (void *arg)
|
|||
gst_thread_update_state (thread);
|
||||
}
|
||||
/* once we're here, SPINNING has stopped, we should signal that we're done */
|
||||
THR_DEBUG_MAIN ("SPINNING stopped, signaling back to parent process\n");
|
||||
THR_DEBUG_MAIN ("SPINNING stopped, signaling back to parent process");
|
||||
g_cond_signal (thread->cond);
|
||||
/* now we can wait for PAUSED */
|
||||
continue;
|
||||
}
|
||||
case GST_STATE_PLAYING:
|
||||
/* wait to be set to PAUSED */
|
||||
THR_DEBUG_MAIN ("thread in %s state, waiting for %s\n",
|
||||
THR_DEBUG_MAIN ("thread in %s state, waiting for %s",
|
||||
gst_element_statename(GST_STATE_PLAYING),
|
||||
gst_element_statename(GST_STATE_PAUSED));
|
||||
g_cond_wait (thread->cond,thread->lock);
|
||||
|
@ -559,7 +559,7 @@ gst_thread_main_loop (void *arg)
|
|||
/* there's only PAUSED, we we just wait for it */
|
||||
continue;
|
||||
case GST_STATE_NULL:
|
||||
THR_DEBUG_MAIN ("thread in %s state, preparing to die\n",
|
||||
THR_DEBUG_MAIN ("thread in %s state, preparing to die",
|
||||
gst_element_statename(GST_STATE_NULL));
|
||||
GST_FLAG_SET (thread, GST_THREAD_STATE_REAPING);
|
||||
break;
|
||||
|
|
|
@ -141,6 +141,18 @@ gst_identity_get_bufferpool (GstPad *pad)
|
|||
return gst_pad_get_bufferpool (identity->srcpad);
|
||||
}
|
||||
|
||||
static GstCaps*
|
||||
gst_identity_getcaps (GstPad *pad, GstCaps *caps)
|
||||
{
|
||||
GstIdentity *identity;
|
||||
GstPad *otherpad;
|
||||
|
||||
identity = GST_IDENTITY (gst_pad_get_parent (pad));
|
||||
otherpad = (pad == identity->srcpad ? identity->sinkpad : identity->srcpad);
|
||||
|
||||
return gst_pad_get_allowed_caps (otherpad);
|
||||
}
|
||||
|
||||
static GstPadConnectReturn
|
||||
gst_identity_connect (GstPad *pad, GstCaps *caps)
|
||||
{
|
||||
|
@ -167,10 +179,12 @@ gst_identity_init (GstIdentity *identity)
|
|||
gst_pad_set_chain_function (identity->sinkpad, GST_DEBUG_FUNCPTR (gst_identity_chain));
|
||||
gst_pad_set_bufferpool_function (identity->sinkpad, gst_identity_get_bufferpool);
|
||||
gst_pad_set_connect_function (identity->sinkpad, gst_identity_connect);
|
||||
gst_pad_set_getcaps_function (identity->sinkpad, gst_identity_getcaps);
|
||||
|
||||
identity->srcpad = gst_pad_new ("src", GST_PAD_SRC);
|
||||
gst_element_add_pad (GST_ELEMENT (identity), identity->srcpad);
|
||||
gst_pad_set_connect_function (identity->srcpad, gst_identity_connect);
|
||||
gst_pad_set_getcaps_function (identity->srcpad, gst_identity_getcaps);
|
||||
|
||||
identity->loop_based = FALSE;
|
||||
identity->sleep_time = 0;
|
||||
|
|
|
@ -223,7 +223,7 @@ gst_queue_init (GstQueue *queue)
|
|||
queue->writer = FALSE;
|
||||
queue->not_empty = g_cond_new ();
|
||||
queue->not_full = g_cond_new ();
|
||||
GST_DEBUG_ELEMENT (GST_CAT_THREAD, queue, "initialized queue's not_empty & not_full conditions\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_THREAD, queue, "initialized queue's not_empty & not_full conditions");
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -251,7 +251,7 @@ gst_queue_get_bufferpool (GstPad *pad)
|
|||
static void
|
||||
gst_queue_cleanup_buffers (gpointer data, const gpointer user_data)
|
||||
{
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, user_data, "cleaning buffer %p\n", data);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, user_data, "cleaning buffer %p", data);
|
||||
|
||||
if (GST_IS_BUFFER (data)) {
|
||||
gst_buffer_unref (GST_BUFFER (data));
|
||||
|
@ -287,9 +287,9 @@ gst_queue_chain (GstPad *pad, GstBuffer *buf)
|
|||
|
||||
restart:
|
||||
/* we have to lock the queue since we span threads */
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld\n", pthread_self ());
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld", pthread_self ());
|
||||
g_mutex_lock (queue->qlock);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld\n", pthread_self ());
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld", pthread_self ());
|
||||
|
||||
if (GST_IS_EVENT (buf)) {
|
||||
switch (GST_EVENT_TYPE (buf)) {
|
||||
|
@ -307,7 +307,7 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "adding buffer %p of size %d\n",buf,GST_BUFFER_SIZE(buf));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "adding buffer %p of size %d",buf,GST_BUFFER_SIZE(buf));
|
||||
|
||||
if (queue->level_buffers == queue->size_buffers) {
|
||||
/* if this is a leaky queue... */
|
||||
|
@ -315,12 +315,12 @@ restart:
|
|||
/* FIXME don't want to leak events! */
|
||||
/* if we leak on the upstream side, drop the current buffer */
|
||||
if (queue->leaky == GST_QUEUE_LEAK_UPSTREAM) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end");
|
||||
if (GST_IS_EVENT (buf))
|
||||
fprintf(stderr, "Error: queue [%s] leaked an event, type:%d\n",
|
||||
GST_ELEMENT_NAME(GST_ELEMENT(queue)),
|
||||
GST_EVENT_TYPE(GST_EVENT(buf)));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on upstream end");
|
||||
gst_buffer_unref(buf);
|
||||
/* now we have to clean up and exit right away */
|
||||
g_mutex_unlock (queue->qlock);
|
||||
|
@ -330,7 +330,7 @@ restart:
|
|||
else {
|
||||
GList *front;
|
||||
GstBuffer *leakbuf;
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on downstream end\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue is full, leaking buffer on downstream end");
|
||||
front = queue->queue;
|
||||
leakbuf = (GstBuffer *)(front->data);
|
||||
if (GST_IS_EVENT (leakbuf))
|
||||
|
@ -345,13 +345,13 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre full wait, level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre full wait, level:%d/%d",
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
while (queue->level_buffers == queue->size_buffers) {
|
||||
/* if there's a pending state change for this queue or its manager, switch */
|
||||
/* back to iterator so bottom half of state change executes */
|
||||
while (GST_STATE_PENDING (queue) != GST_STATE_VOID_PENDING) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!");
|
||||
g_mutex_unlock (queue->qlock);
|
||||
if (gst_element_interrupt (GST_ELEMENT (queue)))
|
||||
return;
|
||||
|
@ -372,15 +372,16 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_full, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_full, level:%d/%d",
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
if (queue->writer)
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple writers on queue!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple writers on queue!");
|
||||
queue->writer = TRUE;
|
||||
g_cond_wait (queue->not_full, queue->qlock);
|
||||
queue->writer = FALSE;
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_full signal\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_full signal");
|
||||
}
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post full wait, level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post full wait, level:%d/%d",
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
}
|
||||
|
||||
|
@ -389,7 +390,7 @@ restart:
|
|||
queue->level_buffers++;
|
||||
queue->level_bytes += GST_BUFFER_SIZE(buf);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)+ level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)+ level:%d/%d",
|
||||
GST_DEBUG_PAD_NAME(pad),
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
|
||||
|
@ -403,7 +404,7 @@ restart:
|
|||
|
||||
if (reader)
|
||||
{
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_empty\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_empty");
|
||||
g_cond_signal (queue->not_empty);
|
||||
}
|
||||
}
|
||||
|
@ -425,17 +426,17 @@ gst_queue_get (GstPad *pad)
|
|||
|
||||
restart:
|
||||
/* have to lock for thread-safety */
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld\n", pthread_self ());
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locking t:%ld", pthread_self ());
|
||||
g_mutex_lock (queue->qlock);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld %p\n", pthread_self (), queue->not_empty);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "locked t:%ld %p", pthread_self (), queue->not_empty);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre empty wait, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "pre empty wait, level:%d/%d", queue->level_buffers, queue->size_buffers);
|
||||
while (queue->level_buffers == 0) {
|
||||
/* if there's a pending state change for this queue or its manager, switch
|
||||
* back to iterator so bottom half of state change executes
|
||||
*/
|
||||
while (GST_STATE_PENDING (queue) != GST_STATE_VOID_PENDING) {
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "interrupted!!");
|
||||
g_mutex_unlock (queue->qlock);
|
||||
if (gst_element_interrupt (GST_ELEMENT (queue)))
|
||||
return NULL;
|
||||
|
@ -453,26 +454,26 @@ restart:
|
|||
}
|
||||
}
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_empty, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "waiting for not_empty, level:%d/%d", queue->level_buffers, queue->size_buffers);
|
||||
if (queue->reader)
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple readers on queue!\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "WARNING: multiple readers on queue!");
|
||||
queue->reader = TRUE;
|
||||
g_cond_wait (queue->not_empty, queue->qlock);
|
||||
queue->reader = FALSE;
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_empty signal\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "got not_empty signal");
|
||||
}
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post empty wait, level:%d/%d\n", queue->level_buffers, queue->size_buffers);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "post empty wait, level:%d/%d", queue->level_buffers, queue->size_buffers);
|
||||
|
||||
front = queue->queue;
|
||||
buf = (GstBuffer *)(front->data);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "retrieved buffer %p from queue\n", buf);
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "retrieved buffer %p from queue", buf);
|
||||
queue->queue = g_list_remove_link (queue->queue, front);
|
||||
g_list_free (front);
|
||||
|
||||
queue->level_buffers--;
|
||||
queue->level_bytes -= GST_BUFFER_SIZE(buf);
|
||||
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)- level:%d/%d\n",
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "(%s:%s)- level:%d/%d",
|
||||
GST_DEBUG_PAD_NAME(pad),
|
||||
queue->level_buffers, queue->size_buffers);
|
||||
|
||||
|
@ -486,7 +487,7 @@ restart:
|
|||
|
||||
if (writer)
|
||||
{
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_full\n");
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "signalling not_full");
|
||||
g_cond_signal (queue->not_full);
|
||||
}
|
||||
|
||||
|
@ -495,7 +496,7 @@ restart:
|
|||
GstEvent *event = GST_EVENT(buf);
|
||||
switch (GST_EVENT_TYPE(event)) {
|
||||
case GST_EVENT_EOS:
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue \"%s\" eos\n", GST_ELEMENT_NAME (queue));
|
||||
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "queue \"%s\" eos", GST_ELEMENT_NAME (queue));
|
||||
gst_element_set_eos (GST_ELEMENT (queue));
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Reference in a new issue