gst: only return the custom flag when in _render()

Make a custom ACQUIRE flag and if it's set, return the custom error
when the pool is empty.
This commit is contained in:
Wim Taymans 2025-01-17 17:08:07 +01:00
parent c7ccc5abca
commit d36a867788
2 changed files with 8 additions and 4 deletions

View file

@ -168,11 +168,14 @@ acquire_buffer (GstBufferPool * pool, GstBuffer ** buffer,
break;
}
if (params && (params->flags & GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT))
goto no_more_buffers;
if (params) {
if (params->flags & GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT)
goto no_more_buffers;
if (p->paused)
goto paused;
if ((params->flags & GST_BUFFER_POOL_ACQUIRE_FLAG_LAST) &&
p->paused)
goto paused;
}
GST_WARNING_OBJECT (pool, "failed to dequeue buffer: %s", strerror(errno));
g_cond_wait (&p->cond, GST_OBJECT_GET_LOCK (pool));

View file

@ -873,6 +873,7 @@ gst_pipewire_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
pw_thread_loop_unlock (pwsink->stream->core->loop);
params.flags = GST_BUFFER_POOL_ACQUIRE_FLAG_LAST;
res = gst_buffer_pool_acquire_buffer (GST_BUFFER_POOL_CAST (pwsink->stream->pool),
&b, &params);
if (res == GST_FLOW_CUSTOM_ERROR_1) {