Merge branch 'Do-not-active-buffer-pool-queried-from-downstream' into 'master'

pipewiresrc: do not active pool or allocator queried from downstream

See merge request pipewire/pipewire!2465
This commit is contained in:
elliot chen 2025-10-17 22:13:50 +08:00
commit 973ee9f3ea

View file

@ -118,6 +118,8 @@ static gboolean gst_pipewire_src_event (GstBaseSrc * src, GstEvent * event);
static gboolean gst_pipewire_src_query (GstBaseSrc * src, GstQuery * query);
static void gst_pipewire_src_get_times (GstBaseSrc * basesrc, GstBuffer * buffer,
GstClockTime * start, GstClockTime * end);
static gboolean gst_pipewire_src_decide_allocation (GstBaseSrc * basesrc,
GstQuery * query);
static void
gst_pipewire_src_set_property (GObject * object, guint prop_id,
@ -502,6 +504,7 @@ gst_pipewire_src_class_init (GstPipeWireSrcClass * klass)
gstbasesrc_class->event = gst_pipewire_src_event;
gstbasesrc_class->query = gst_pipewire_src_query;
gstbasesrc_class->get_times = gst_pipewire_src_get_times;
gstbasesrc_class->decide_allocation = gst_pipewire_src_decide_allocation;
gstpushsrc_class->create = gst_pipewire_src_create;
GST_DEBUG_CATEGORY_INIT (pipewire_src_debug, "pipewiresrc", 0,
@ -1523,6 +1526,30 @@ gst_pipewire_src_get_times (GstBaseSrc * basesrc, GstBuffer * buffer,
GST_TIME_ARGS (*start), *start, GST_TIME_ARGS (*end), *end);
}
static gboolean
gst_pipewire_src_decide_allocation (GstBaseSrc * basesrc, GstQuery * query)
{
guint i;
/* pipewirsrc has own buffer pool. Clear the allocation information
* which is query from downstream to prevent from activing pool or
* allocator by base class.
*/
for (i = 0; i < gst_query_get_n_allocation_pools (query); i++) {
gst_query_remove_nth_allocation_pool (query, i);
}
for (i = 0; i < gst_query_get_n_allocation_params (query); i++) {
gst_query_remove_nth_allocation_param (query, i);
}
for (i = 0; i < gst_query_get_n_allocation_metas (query); i++) {
gst_query_remove_nth_allocation_meta (query, i);
}
return TRUE;
}
static GstFlowReturn
gst_pipewire_src_create (GstPushSrc * psrc, GstBuffer ** buffer)
{