This extra buffer ensure that the downstream threads are not starved
when multiplexing a stream.
https://bugzilla.gnome.org/show_bug.cgi?id=730758
guint size;
guint min_buffers;
gboolean first_query;
+ guint num_pads;
};
/* This function will aggregate some of the allocation query information with
}
ctx->first_query = FALSE;
+ ctx->num_pads++;
gst_query_unref (query);
return TRUE;
gst_allocation_params_init (&ctx.params);
ctx.size = 0;
ctx.min_buffers = 0;
+ ctx.num_pads = 0;
gst_tee_clear_query_allocation_meta (query);
}
}
#endif
+ /* Allocate one more buffers when multiplexing so we don't starve the
+ * downstream threads. */
+ if (ctx.num_pads > 1)
+ ctx.min_buffers++;
+
gst_query_add_allocation_param (ctx.query, NULL, &ctx.params);
gst_query_add_allocation_pool (ctx.query, NULL, ctx.size,
ctx.min_buffers, 0);
fail_unless (gst_query_get_n_allocation_pools (query), 1);
gst_query_parse_nth_allocation_pool (query, 0, NULL, &size, &min, &max);
fail_unless (size == 130);
- fail_unless (min == 2);
+ /* The tee will allocate one more buffer when multiplexing */
+ fail_unless (min == 2 + 1);
fail_unless (max == 0);
fail_unless (gst_query_get_n_allocation_params (query), 1);