mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 02:01:12 +00:00
gst/gstqueue.c: Reverted to 1.110 until this makes the testsuite and various apps work.
Original commit message from CVS: * gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps), (gst_queue_link), (gst_queue_handle_src_query): Reverted to 1.110 until this makes the testsuite and various apps work.
This commit is contained in:
parent
bcacdad2df
commit
d6e66eee73
3 changed files with 57 additions and 134 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2004-12-03 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
|
||||||
|
(gst_queue_link), (gst_queue_handle_src_query):
|
||||||
|
Reverted to 1.110 until this makes the testsuite and various
|
||||||
|
apps work.
|
||||||
|
|
||||||
2004-12-01 Christian Fredrik Kalager Schaller christian@fluendo.com
|
2004-12-01 Christian Fredrik Kalager Schaller christian@fluendo.com
|
||||||
|
|
||||||
* docs/upload.mak: fix included CVS conflict strings
|
* docs/upload.mak: fix included CVS conflict strings
|
||||||
|
|
|
@ -41,24 +41,6 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_STATIC_CAPS_ANY);
|
GST_STATIC_CAPS_ANY);
|
||||||
|
|
||||||
GST_DEBUG_CATEGORY_STATIC (queue_dataflow);
|
GST_DEBUG_CATEGORY_STATIC (queue_dataflow);
|
||||||
#define GST_CAT_DEFAULT (queue_dataflow)
|
|
||||||
|
|
||||||
#define STATUS(queue, msg) \
|
|
||||||
GST_CAT_LOG_OBJECT (queue_dataflow, queue, \
|
|
||||||
"(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \
|
|
||||||
"bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \
|
|
||||||
"-%" G_GUINT64_FORMAT " ns, %u elements", \
|
|
||||||
GST_DEBUG_PAD_NAME (pad), \
|
|
||||||
queue->cur_level.buffers, \
|
|
||||||
queue->min_threshold.buffers, \
|
|
||||||
queue->max_size.buffers, \
|
|
||||||
queue->cur_level.bytes, \
|
|
||||||
queue->min_threshold.bytes, \
|
|
||||||
queue->max_size.bytes, \
|
|
||||||
queue->cur_level.time, \
|
|
||||||
queue->min_threshold.time, \
|
|
||||||
queue->max_size.time, \
|
|
||||||
queue->queue->length)
|
|
||||||
|
|
||||||
static GstElementDetails gst_queue_details = GST_ELEMENT_DETAILS ("Queue",
|
static GstElementDetails gst_queue_details = GST_ELEMENT_DETAILS ("Queue",
|
||||||
"Generic",
|
"Generic",
|
||||||
|
@ -138,9 +120,7 @@ static gboolean gst_queue_handle_src_query (GstPad * pad,
|
||||||
GstQueryType type, GstFormat * fmt, gint64 * value);
|
GstQueryType type, GstFormat * fmt, gint64 * value);
|
||||||
|
|
||||||
static GstCaps *gst_queue_getcaps (GstPad * pad);
|
static GstCaps *gst_queue_getcaps (GstPad * pad);
|
||||||
static GstPadLinkReturn
|
static GstPadLinkReturn gst_queue_link (GstPad * pad, const GstCaps * caps);
|
||||||
gst_queue_link_sink (GstPad * pad, const GstCaps * caps);
|
|
||||||
static GstPadLinkReturn gst_queue_link_src (GstPad * pad, const GstCaps * caps);
|
|
||||||
static void gst_queue_locked_flush (GstQueue * queue);
|
static void gst_queue_locked_flush (GstQueue * queue);
|
||||||
|
|
||||||
static GstElementStateReturn gst_queue_change_state (GstElement * element);
|
static GstElementStateReturn gst_queue_change_state (GstElement * element);
|
||||||
|
@ -308,7 +288,7 @@ gst_queue_init (GstQueue * queue)
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_chain));
|
GST_DEBUG_FUNCPTR (gst_queue_chain));
|
||||||
gst_element_add_pad (GST_ELEMENT (queue), queue->sinkpad);
|
gst_element_add_pad (GST_ELEMENT (queue), queue->sinkpad);
|
||||||
gst_pad_set_link_function (queue->sinkpad,
|
gst_pad_set_link_function (queue->sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_link_sink));
|
GST_DEBUG_FUNCPTR (gst_queue_link));
|
||||||
gst_pad_set_getcaps_function (queue->sinkpad,
|
gst_pad_set_getcaps_function (queue->sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
||||||
gst_pad_set_active (queue->sinkpad, TRUE);
|
gst_pad_set_active (queue->sinkpad, TRUE);
|
||||||
|
@ -318,8 +298,7 @@ gst_queue_init (GstQueue * queue)
|
||||||
"src");
|
"src");
|
||||||
gst_pad_set_get_function (queue->srcpad, GST_DEBUG_FUNCPTR (gst_queue_get));
|
gst_pad_set_get_function (queue->srcpad, GST_DEBUG_FUNCPTR (gst_queue_get));
|
||||||
gst_element_add_pad (GST_ELEMENT (queue), queue->srcpad);
|
gst_element_add_pad (GST_ELEMENT (queue), queue->srcpad);
|
||||||
gst_pad_set_link_function (queue->srcpad,
|
gst_pad_set_link_function (queue->srcpad, GST_DEBUG_FUNCPTR (gst_queue_link));
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_link_src));
|
|
||||||
gst_pad_set_getcaps_function (queue->srcpad,
|
gst_pad_set_getcaps_function (queue->srcpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
||||||
gst_pad_set_event_function (queue->srcpad,
|
gst_pad_set_event_function (queue->srcpad,
|
||||||
|
@ -395,7 +374,7 @@ gst_queue_getcaps (GstPad * pad)
|
||||||
|
|
||||||
queue = GST_QUEUE (gst_pad_get_parent (pad));
|
queue = GST_QUEUE (gst_pad_get_parent (pad));
|
||||||
|
|
||||||
if (pad == queue->srcpad && queue->cur_level.bytes > 0) {
|
if (queue->cur_level.bytes > 0) {
|
||||||
return gst_caps_copy (queue->negotiated_caps);
|
return gst_caps_copy (queue->negotiated_caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,45 +382,7 @@ gst_queue_getcaps (GstPad * pad)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstPadLinkReturn
|
static GstPadLinkReturn
|
||||||
gst_queue_link_sink (GstPad * pad, const GstCaps * caps)
|
gst_queue_link (GstPad * pad, const GstCaps * caps)
|
||||||
{
|
|
||||||
GstQueue *queue;
|
|
||||||
GstPadLinkReturn link_ret;
|
|
||||||
|
|
||||||
queue = GST_QUEUE (gst_pad_get_parent (pad));
|
|
||||||
|
|
||||||
if (queue->cur_level.bytes > 0) {
|
|
||||||
if (gst_caps_is_equal (caps, queue->negotiated_caps)) {
|
|
||||||
GST_QUEUE_MUTEX_UNLOCK;
|
|
||||||
return GST_PAD_LINK_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Wait until the queue is empty before attempting the pad
|
|
||||||
negotiation. */
|
|
||||||
GST_QUEUE_MUTEX_LOCK;
|
|
||||||
|
|
||||||
STATUS (queue, "waiting for queue to get empty");
|
|
||||||
while (queue->cur_level.bytes > 0) {
|
|
||||||
g_cond_wait (queue->item_del, queue->qlock);
|
|
||||||
}
|
|
||||||
STATUS (queue, "queue is now empty");
|
|
||||||
|
|
||||||
GST_QUEUE_MUTEX_UNLOCK;
|
|
||||||
}
|
|
||||||
|
|
||||||
link_ret = gst_pad_proxy_pad_link (pad, caps);
|
|
||||||
|
|
||||||
if (GST_PAD_LINK_SUCCESSFUL (link_ret)) {
|
|
||||||
/* we store an extra copy of the negotiated caps, just in case
|
|
||||||
* the pads become unnegotiated while we have buffers */
|
|
||||||
gst_caps_replace (&queue->negotiated_caps, gst_caps_copy (caps));
|
|
||||||
}
|
|
||||||
|
|
||||||
return link_ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GstPadLinkReturn
|
|
||||||
gst_queue_link_src (GstPad * pad, const GstCaps * caps)
|
|
||||||
{
|
{
|
||||||
GstQueue *queue;
|
GstQueue *queue;
|
||||||
GstPadLinkReturn link_ret;
|
GstPadLinkReturn link_ret;
|
||||||
|
@ -524,6 +465,23 @@ gst_queue_handle_pending_events (GstQueue * queue)
|
||||||
g_mutex_unlock (queue->event_lock);
|
g_mutex_unlock (queue->event_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define STATUS(queue, msg) \
|
||||||
|
GST_CAT_LOG_OBJECT (queue_dataflow, queue, \
|
||||||
|
"(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \
|
||||||
|
"bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \
|
||||||
|
"-%" G_GUINT64_FORMAT " ns, %u elements", \
|
||||||
|
GST_DEBUG_PAD_NAME (pad), \
|
||||||
|
queue->cur_level.buffers, \
|
||||||
|
queue->min_threshold.buffers, \
|
||||||
|
queue->max_size.buffers, \
|
||||||
|
queue->cur_level.bytes, \
|
||||||
|
queue->min_threshold.bytes, \
|
||||||
|
queue->max_size.bytes, \
|
||||||
|
queue->cur_level.time, \
|
||||||
|
queue->min_threshold.time, \
|
||||||
|
queue->max_size.time, \
|
||||||
|
queue->queue->length)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_queue_chain (GstPad * pad, GstData * data)
|
gst_queue_chain (GstPad * pad, GstData * data)
|
||||||
{
|
{
|
||||||
|
@ -953,10 +911,10 @@ gst_queue_handle_src_query (GstPad * pad,
|
||||||
GstQueryType type, GstFormat * fmt, gint64 * value)
|
GstQueryType type, GstFormat * fmt, gint64 * value)
|
||||||
{
|
{
|
||||||
GstQueue *queue = GST_QUEUE (gst_pad_get_parent (pad));
|
GstQueue *queue = GST_QUEUE (gst_pad_get_parent (pad));
|
||||||
|
gboolean res;
|
||||||
|
|
||||||
if (!GST_PAD_PEER (queue->sinkpad))
|
res = gst_pad_query (GST_PAD_PEER (queue->sinkpad), type, fmt, value);
|
||||||
return FALSE;
|
if (!res)
|
||||||
if (!gst_pad_query (GST_PAD_PEER (queue->sinkpad), type, fmt, value))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (type == GST_QUERY_POSITION) {
|
if (type == GST_QUERY_POSITION) {
|
||||||
|
|
|
@ -41,24 +41,6 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_STATIC_CAPS_ANY);
|
GST_STATIC_CAPS_ANY);
|
||||||
|
|
||||||
GST_DEBUG_CATEGORY_STATIC (queue_dataflow);
|
GST_DEBUG_CATEGORY_STATIC (queue_dataflow);
|
||||||
#define GST_CAT_DEFAULT (queue_dataflow)
|
|
||||||
|
|
||||||
#define STATUS(queue, msg) \
|
|
||||||
GST_CAT_LOG_OBJECT (queue_dataflow, queue, \
|
|
||||||
"(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \
|
|
||||||
"bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \
|
|
||||||
"-%" G_GUINT64_FORMAT " ns, %u elements", \
|
|
||||||
GST_DEBUG_PAD_NAME (pad), \
|
|
||||||
queue->cur_level.buffers, \
|
|
||||||
queue->min_threshold.buffers, \
|
|
||||||
queue->max_size.buffers, \
|
|
||||||
queue->cur_level.bytes, \
|
|
||||||
queue->min_threshold.bytes, \
|
|
||||||
queue->max_size.bytes, \
|
|
||||||
queue->cur_level.time, \
|
|
||||||
queue->min_threshold.time, \
|
|
||||||
queue->max_size.time, \
|
|
||||||
queue->queue->length)
|
|
||||||
|
|
||||||
static GstElementDetails gst_queue_details = GST_ELEMENT_DETAILS ("Queue",
|
static GstElementDetails gst_queue_details = GST_ELEMENT_DETAILS ("Queue",
|
||||||
"Generic",
|
"Generic",
|
||||||
|
@ -138,9 +120,7 @@ static gboolean gst_queue_handle_src_query (GstPad * pad,
|
||||||
GstQueryType type, GstFormat * fmt, gint64 * value);
|
GstQueryType type, GstFormat * fmt, gint64 * value);
|
||||||
|
|
||||||
static GstCaps *gst_queue_getcaps (GstPad * pad);
|
static GstCaps *gst_queue_getcaps (GstPad * pad);
|
||||||
static GstPadLinkReturn
|
static GstPadLinkReturn gst_queue_link (GstPad * pad, const GstCaps * caps);
|
||||||
gst_queue_link_sink (GstPad * pad, const GstCaps * caps);
|
|
||||||
static GstPadLinkReturn gst_queue_link_src (GstPad * pad, const GstCaps * caps);
|
|
||||||
static void gst_queue_locked_flush (GstQueue * queue);
|
static void gst_queue_locked_flush (GstQueue * queue);
|
||||||
|
|
||||||
static GstElementStateReturn gst_queue_change_state (GstElement * element);
|
static GstElementStateReturn gst_queue_change_state (GstElement * element);
|
||||||
|
@ -308,7 +288,7 @@ gst_queue_init (GstQueue * queue)
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_chain));
|
GST_DEBUG_FUNCPTR (gst_queue_chain));
|
||||||
gst_element_add_pad (GST_ELEMENT (queue), queue->sinkpad);
|
gst_element_add_pad (GST_ELEMENT (queue), queue->sinkpad);
|
||||||
gst_pad_set_link_function (queue->sinkpad,
|
gst_pad_set_link_function (queue->sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_link_sink));
|
GST_DEBUG_FUNCPTR (gst_queue_link));
|
||||||
gst_pad_set_getcaps_function (queue->sinkpad,
|
gst_pad_set_getcaps_function (queue->sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
||||||
gst_pad_set_active (queue->sinkpad, TRUE);
|
gst_pad_set_active (queue->sinkpad, TRUE);
|
||||||
|
@ -318,8 +298,7 @@ gst_queue_init (GstQueue * queue)
|
||||||
"src");
|
"src");
|
||||||
gst_pad_set_get_function (queue->srcpad, GST_DEBUG_FUNCPTR (gst_queue_get));
|
gst_pad_set_get_function (queue->srcpad, GST_DEBUG_FUNCPTR (gst_queue_get));
|
||||||
gst_element_add_pad (GST_ELEMENT (queue), queue->srcpad);
|
gst_element_add_pad (GST_ELEMENT (queue), queue->srcpad);
|
||||||
gst_pad_set_link_function (queue->srcpad,
|
gst_pad_set_link_function (queue->srcpad, GST_DEBUG_FUNCPTR (gst_queue_link));
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_link_src));
|
|
||||||
gst_pad_set_getcaps_function (queue->srcpad,
|
gst_pad_set_getcaps_function (queue->srcpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
|
||||||
gst_pad_set_event_function (queue->srcpad,
|
gst_pad_set_event_function (queue->srcpad,
|
||||||
|
@ -395,7 +374,7 @@ gst_queue_getcaps (GstPad * pad)
|
||||||
|
|
||||||
queue = GST_QUEUE (gst_pad_get_parent (pad));
|
queue = GST_QUEUE (gst_pad_get_parent (pad));
|
||||||
|
|
||||||
if (pad == queue->srcpad && queue->cur_level.bytes > 0) {
|
if (queue->cur_level.bytes > 0) {
|
||||||
return gst_caps_copy (queue->negotiated_caps);
|
return gst_caps_copy (queue->negotiated_caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,45 +382,7 @@ gst_queue_getcaps (GstPad * pad)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstPadLinkReturn
|
static GstPadLinkReturn
|
||||||
gst_queue_link_sink (GstPad * pad, const GstCaps * caps)
|
gst_queue_link (GstPad * pad, const GstCaps * caps)
|
||||||
{
|
|
||||||
GstQueue *queue;
|
|
||||||
GstPadLinkReturn link_ret;
|
|
||||||
|
|
||||||
queue = GST_QUEUE (gst_pad_get_parent (pad));
|
|
||||||
|
|
||||||
if (queue->cur_level.bytes > 0) {
|
|
||||||
if (gst_caps_is_equal (caps, queue->negotiated_caps)) {
|
|
||||||
GST_QUEUE_MUTEX_UNLOCK;
|
|
||||||
return GST_PAD_LINK_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Wait until the queue is empty before attempting the pad
|
|
||||||
negotiation. */
|
|
||||||
GST_QUEUE_MUTEX_LOCK;
|
|
||||||
|
|
||||||
STATUS (queue, "waiting for queue to get empty");
|
|
||||||
while (queue->cur_level.bytes > 0) {
|
|
||||||
g_cond_wait (queue->item_del, queue->qlock);
|
|
||||||
}
|
|
||||||
STATUS (queue, "queue is now empty");
|
|
||||||
|
|
||||||
GST_QUEUE_MUTEX_UNLOCK;
|
|
||||||
}
|
|
||||||
|
|
||||||
link_ret = gst_pad_proxy_pad_link (pad, caps);
|
|
||||||
|
|
||||||
if (GST_PAD_LINK_SUCCESSFUL (link_ret)) {
|
|
||||||
/* we store an extra copy of the negotiated caps, just in case
|
|
||||||
* the pads become unnegotiated while we have buffers */
|
|
||||||
gst_caps_replace (&queue->negotiated_caps, gst_caps_copy (caps));
|
|
||||||
}
|
|
||||||
|
|
||||||
return link_ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GstPadLinkReturn
|
|
||||||
gst_queue_link_src (GstPad * pad, const GstCaps * caps)
|
|
||||||
{
|
{
|
||||||
GstQueue *queue;
|
GstQueue *queue;
|
||||||
GstPadLinkReturn link_ret;
|
GstPadLinkReturn link_ret;
|
||||||
|
@ -524,6 +465,23 @@ gst_queue_handle_pending_events (GstQueue * queue)
|
||||||
g_mutex_unlock (queue->event_lock);
|
g_mutex_unlock (queue->event_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define STATUS(queue, msg) \
|
||||||
|
GST_CAT_LOG_OBJECT (queue_dataflow, queue, \
|
||||||
|
"(%s:%s) " msg ": %u of %u-%u buffers, %u of %u-%u " \
|
||||||
|
"bytes, %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT \
|
||||||
|
"-%" G_GUINT64_FORMAT " ns, %u elements", \
|
||||||
|
GST_DEBUG_PAD_NAME (pad), \
|
||||||
|
queue->cur_level.buffers, \
|
||||||
|
queue->min_threshold.buffers, \
|
||||||
|
queue->max_size.buffers, \
|
||||||
|
queue->cur_level.bytes, \
|
||||||
|
queue->min_threshold.bytes, \
|
||||||
|
queue->max_size.bytes, \
|
||||||
|
queue->cur_level.time, \
|
||||||
|
queue->min_threshold.time, \
|
||||||
|
queue->max_size.time, \
|
||||||
|
queue->queue->length)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_queue_chain (GstPad * pad, GstData * data)
|
gst_queue_chain (GstPad * pad, GstData * data)
|
||||||
{
|
{
|
||||||
|
@ -953,10 +911,10 @@ gst_queue_handle_src_query (GstPad * pad,
|
||||||
GstQueryType type, GstFormat * fmt, gint64 * value)
|
GstQueryType type, GstFormat * fmt, gint64 * value)
|
||||||
{
|
{
|
||||||
GstQueue *queue = GST_QUEUE (gst_pad_get_parent (pad));
|
GstQueue *queue = GST_QUEUE (gst_pad_get_parent (pad));
|
||||||
|
gboolean res;
|
||||||
|
|
||||||
if (!GST_PAD_PEER (queue->sinkpad))
|
res = gst_pad_query (GST_PAD_PEER (queue->sinkpad), type, fmt, value);
|
||||||
return FALSE;
|
if (!res)
|
||||||
if (!gst_pad_query (GST_PAD_PEER (queue->sinkpad), type, fmt, value))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (type == GST_QUERY_POSITION) {
|
if (type == GST_QUERY_POSITION) {
|
||||||
|
|
Loading…
Reference in a new issue