Merge branch 'gstharness-timeout-pulls' into 'main'

harness: make pulls' timeout customaizable

See merge request gstreamer/gstreamer!851
This commit is contained in:
Camilo Celis Guzman 2024-05-15 05:57:07 +00:00
commit 2eb2149dd6
2 changed files with 40 additions and 7 deletions

View file

@ -211,6 +211,8 @@ struct _GstHarnessPrivate
gboolean eos_received;
GPtrArray *stress;
guint64 pull_timeout;
};
static GstFlowReturn
@ -756,6 +758,9 @@ gst_harness_new_empty (void)
/* we have forwarding on as a default */
gst_harness_set_forwarding (h, TRUE);
/* we default to 60s as pull timeout */
gst_harness_set_pull_timeout (h, G_USEC_PER_SEC * 60);
return h;
}
@ -1636,6 +1641,31 @@ gst_harness_set_forward_pad (GstHarness * h, GstPad * fwdpad)
(GstObject *) fwdpad);
}
/**
* gst_harness_set_pull_timeout:
* @h: a #GstHarness
* @timeout: timeout in microseconds
*
* Sets the timeout to use on all pull-like methods. This affects src and sink
* harnesses if any.
*
* MT safe.
*
* Since: 1.20
**/
void
gst_harness_set_pull_timeout (GstHarness * h, guint64 timeout)
{
GstHarnessPrivate *priv = h->priv;
priv->pull_timeout = timeout;
/* propagate timeout to src and sink harnesses, if any */
if (h->src_harness)
gst_harness_set_pull_timeout (h->src_harness, timeout);
if (h->sink_harness)
gst_harness_set_pull_timeout (h->sink_harness, timeout);
}
/**
* gst_harness_create_buffer:
* @h: a #GstHarness
@ -1709,8 +1739,8 @@ gst_harness_push (GstHarness * h, GstBuffer * buffer)
* @h: a #GstHarness
*
* Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. The pull
* will timeout in 60 seconds. This is the standard way of getting a buffer
* from a harnessed #GstElement.
* will timeout in #GstHarness.pull_timeout seconds. This is the standard way
* of getting a buffer from a harnessed #GstElement.
*
* MT safe.
*
@ -1723,7 +1753,7 @@ gst_harness_pull (GstHarness * h)
{
GstHarnessPrivate *priv = h->priv;
GstBuffer *buf = (GstBuffer *) g_async_queue_timeout_pop (priv->buffer_queue,
G_USEC_PER_SEC * 60);
priv->pull_timeout);
if (priv->blocking_push_mode) {
g_mutex_lock (&priv->blocking_push_mutex);
@ -2043,7 +2073,7 @@ gst_harness_push_event (GstHarness * h, GstEvent * event)
* @h: a #GstHarness
*
* Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad.
* Timeouts after 60 seconds similar to gst_harness_pull.
* Timeouts after #GstHarness.pull_timeout seconds similar to gst_harness_pull.
*
* MT safe.
*
@ -2056,7 +2086,7 @@ gst_harness_pull_event (GstHarness * h)
{
GstHarnessPrivate *priv = h->priv;
return (GstEvent *) g_async_queue_timeout_pop (priv->sink_event_queue,
G_USEC_PER_SEC * 60);
priv->pull_timeout);
}
/**
@ -2146,7 +2176,7 @@ gst_harness_push_upstream_event (GstHarness * h, GstEvent * event)
* @h: a #GstHarness
*
* Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad.
* Timeouts after 60 seconds similar to gst_harness_pull.
* Timeouts after #GstHarness.pull_timeout seconds similar to gst_harness_pull.
*
* MT safe.
*
@ -2159,7 +2189,7 @@ gst_harness_pull_upstream_event (GstHarness * h)
{
GstHarnessPrivate *priv = h->priv;
return (GstEvent *) g_async_queue_timeout_pop (priv->src_event_queue,
G_USEC_PER_SEC * 60);
priv->pull_timeout);
}
/**

View file

@ -174,6 +174,9 @@ void gst_harness_set_blocking_push_mode (GstHarness * h);
GST_CHECK_API
void gst_harness_set_forwarding (GstHarness * h, gboolean forwarding);
GST_CHECK_API
void gst_harness_set_pull_timeout (GstHarness * h, guint64 timeout);
/* buffers */
GST_CHECK_API