harness: Add gst_harness_set_live()

By default each harness returns is_live=TRUE in latency queries. This is
often not desired and can now be overridden.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/599>
This commit is contained in:
Sebastian Dröge 2020-09-10 14:17:26 +03:00
parent ca38070bdf
commit 1a59eeedb4
2 changed files with 27 additions and 2 deletions

View file

@ -182,6 +182,8 @@ struct _GstHarnessPrivate
GstClockTime latency_min; GstClockTime latency_min;
GstClockTime latency_max; GstClockTime latency_max;
gboolean is_live;
gboolean has_clock_wait; gboolean has_clock_wait;
gboolean drop_buffers; gboolean drop_buffers;
GstClockTime last_push_ts; GstClockTime last_push_ts;
@ -375,7 +377,8 @@ gst_harness_sink_query (GstPad * pad, GstObject * parent, GstQuery * query)
switch (GST_QUERY_TYPE (query)) { switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_LATENCY: case GST_QUERY_LATENCY:
gst_query_set_latency (query, TRUE, priv->latency_min, priv->latency_max); gst_query_set_latency (query, priv->is_live, priv->latency_min,
priv->latency_max);
break; break;
case GST_QUERY_CAPS: case GST_QUERY_CAPS:
{ {
@ -465,7 +468,8 @@ gst_harness_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
switch (GST_QUERY_TYPE (query)) { switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_LATENCY: case GST_QUERY_LATENCY:
gst_query_set_latency (query, TRUE, priv->latency_min, priv->latency_max); gst_query_set_latency (query, priv->is_live, priv->latency_min,
priv->latency_max);
break; break;
case GST_QUERY_CAPS: case GST_QUERY_CAPS:
{ {
@ -683,6 +687,7 @@ gst_harness_new_empty (void)
priv->last_push_ts = GST_CLOCK_TIME_NONE; priv->last_push_ts = GST_CLOCK_TIME_NONE;
priv->latency_min = 0; priv->latency_min = 0;
priv->latency_max = GST_CLOCK_TIME_NONE; priv->latency_max = GST_CLOCK_TIME_NONE;
priv->is_live = TRUE;
priv->drop_buffers = FALSE; priv->drop_buffers = FALSE;
priv->testclock = GST_TEST_CLOCK_CAST (gst_test_clock_new ()); priv->testclock = GST_TEST_CLOCK_CAST (gst_test_clock_new ());
@ -2223,6 +2228,23 @@ gst_harness_set_upstream_latency (GstHarness * h, GstClockTime latency)
priv->latency_min = latency; priv->latency_min = latency;
} }
/**
* gst_harness_set_live:
* @h: a #GstHarness
* @is_live: %TRUE for live, %FALSE for non-live
*
* Sets the liveness reported by #GstHarness when receiving a latency-query.
* The default is %TRUE.
*
* Since: 1.20
*/
void
gst_harness_set_live (GstHarness * h, gboolean is_live)
{
GstHarnessPrivate *priv = h->priv;
priv->is_live = is_live;
}
/** /**
* gst_harness_get_allocator: * gst_harness_get_allocator:
* @h: a #GstHarness * @h: a #GstHarness

View file

@ -260,6 +260,9 @@ GstClockTime gst_harness_query_latency (GstHarness * h);
GST_CHECK_API GST_CHECK_API
void gst_harness_set_upstream_latency (GstHarness * h, GstClockTime latency); void gst_harness_set_upstream_latency (GstHarness * h, GstClockTime latency);
GST_CHECK_API
void gst_harness_set_live (GstHarness * h, gboolean is_live);
/* allocation query parameters */ /* allocation query parameters */
GST_CHECK_API GST_CHECK_API