mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
remove hardcoded port allocation params
This commit is contained in:
parent
ca7d08c406
commit
3fee60597e
6 changed files with 27 additions and 48 deletions
|
|
@ -76,9 +76,6 @@ struct _PinosStreamPrivate
|
|||
GPtrArray *possible_formats;
|
||||
SpaFormat *format;
|
||||
SpaPortInfo port_info;
|
||||
SpaAllocParam *port_params[2];
|
||||
SpaAllocParamMetaEnable param_meta_enable;
|
||||
SpaAllocParamBuffers param_buffers;
|
||||
|
||||
PinosStreamFlags flags;
|
||||
|
||||
|
|
@ -1204,7 +1201,8 @@ pinos_stream_connect (PinosStream *stream,
|
|||
*/
|
||||
gboolean
|
||||
pinos_stream_start_allocation (PinosStream *stream,
|
||||
PinosProperties *props)
|
||||
SpaAllocParam **params,
|
||||
unsigned int n_params)
|
||||
{
|
||||
PinosStreamPrivate *priv;
|
||||
PinosContext *context;
|
||||
|
|
@ -1219,17 +1217,8 @@ pinos_stream_start_allocation (PinosStream *stream,
|
|||
|
||||
control_builder_init (stream, &builder);
|
||||
|
||||
priv->port_info.params = priv->port_params;
|
||||
priv->port_info.n_params = 1;
|
||||
|
||||
priv->port_params[0] = &priv->param_buffers.param;
|
||||
priv->param_buffers.param.type = SPA_ALLOC_PARAM_TYPE_BUFFERS;
|
||||
priv->param_buffers.param.size = sizeof (SpaAllocParamBuffers);
|
||||
priv->param_buffers.minsize = 115200;
|
||||
priv->param_buffers.stride = 640;
|
||||
priv->param_buffers.min_buffers = 0;
|
||||
priv->param_buffers.max_buffers = 0;
|
||||
priv->param_buffers.align = 16;
|
||||
priv->port_info.params = params;
|
||||
priv->port_info.n_params = n_params;
|
||||
|
||||
/* send update port status */
|
||||
add_port_update (stream, &builder, SPA_CONTROL_CMD_PORT_UPDATE_INFO);
|
||||
|
|
|
|||
|
|
@ -104,7 +104,8 @@ gboolean pinos_stream_connect (PinosStream *stream,
|
|||
gboolean pinos_stream_disconnect (PinosStream *stream);
|
||||
|
||||
gboolean pinos_stream_start_allocation (PinosStream *stream,
|
||||
PinosProperties *props);
|
||||
SpaAllocParam **params,
|
||||
unsigned int n_params);
|
||||
|
||||
gboolean pinos_stream_start (PinosStream *stream);
|
||||
gboolean pinos_stream_stop (PinosStream *stream);
|
||||
|
|
|
|||
|
|
@ -99,18 +99,32 @@ static gboolean
|
|||
do_start (GstBufferPool * pool)
|
||||
{
|
||||
GstPinosPool *p = GST_PINOS_POOL (pool);
|
||||
PinosProperties *props = NULL;
|
||||
GstStructure *config;
|
||||
GstCaps *caps;
|
||||
guint size;
|
||||
guint min_buffers;
|
||||
guint max_buffers;
|
||||
SpaAllocParam *port_params[2];
|
||||
SpaAllocParamMetaEnable param_meta_enable;
|
||||
SpaAllocParamBuffers param_buffers;
|
||||
|
||||
config = gst_buffer_pool_get_config (pool);
|
||||
gst_buffer_pool_config_get_params (config, &caps, &size, &min_buffers, &max_buffers);
|
||||
|
||||
port_params[0] = ¶m_buffers.param;
|
||||
param_buffers.param.type = SPA_ALLOC_PARAM_TYPE_BUFFERS;
|
||||
param_buffers.param.size = sizeof (SpaAllocParamBuffers);
|
||||
param_buffers.minsize = size;
|
||||
param_buffers.stride = 0;
|
||||
param_buffers.min_buffers = min_buffers;
|
||||
param_buffers.max_buffers = max_buffers;
|
||||
param_buffers.align = 16;
|
||||
port_params[1] = ¶m_meta_enable.param;
|
||||
param_meta_enable.param.type = SPA_ALLOC_PARAM_TYPE_META_ENABLE;
|
||||
param_meta_enable.param.size = sizeof (SpaAllocParamMetaEnable);
|
||||
param_meta_enable.type = SPA_META_TYPE_HEADER;
|
||||
|
||||
pinos_stream_start_allocation (p->stream, props);
|
||||
pinos_stream_start_allocation (p->stream, port_params, 2);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -220,8 +220,6 @@ gst_pinos_sink_init (GstPinosSink * sink)
|
|||
sink->pool = gst_pinos_pool_new ();
|
||||
sink->client_name = pinos_client_name();
|
||||
sink->mode = DEFAULT_PROP_MODE;
|
||||
g_queue_init (&sink->empty);
|
||||
g_queue_init (&sink->filled);
|
||||
|
||||
sink->buf_ids = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL,
|
||||
(GDestroyNotify) gst_buffer_unref);
|
||||
|
|
@ -409,10 +407,9 @@ on_add_buffer (GObject *gobject,
|
|||
g_slice_dup (ProcessMemData, &data),
|
||||
process_mem_data_destroy);
|
||||
|
||||
gst_pinos_pool_add_buffer (GST_PINOS_POOL (pinossink->pool), buf);
|
||||
gst_pinos_pool_add_buffer (pinossink->pool, buf);
|
||||
g_hash_table_insert (pinossink->buf_ids, GINT_TO_POINTER (id), buf);
|
||||
|
||||
g_queue_push_tail (&pinossink->empty, buf);
|
||||
pinos_main_loop_signal (pinossink->loop, FALSE);
|
||||
}
|
||||
|
||||
|
|
@ -428,9 +425,7 @@ on_remove_buffer (GObject *gobject,
|
|||
buf = g_hash_table_lookup (pinossink->buf_ids, GINT_TO_POINTER (id));
|
||||
GST_MINI_OBJECT_CAST (buf)->dispose = NULL;
|
||||
|
||||
gst_pinos_pool_remove_buffer (GST_PINOS_POOL (pinossink->pool), buf);
|
||||
g_queue_remove (&pinossink->empty, buf);
|
||||
g_queue_remove (&pinossink->filled, buf);
|
||||
gst_pinos_pool_remove_buffer (pinossink->pool, buf);
|
||||
g_hash_table_remove (pinossink->buf_ids, GINT_TO_POINTER (id));
|
||||
}
|
||||
|
||||
|
|
@ -451,8 +446,6 @@ on_new_buffer (GObject *gobject,
|
|||
|
||||
g_debug ("recycle buffer %d %p", id, buf);
|
||||
if (buf) {
|
||||
g_queue_remove (&pinossink->filled, buf);
|
||||
g_queue_push_tail (&pinossink->empty, buf);
|
||||
pinos_main_loop_signal (pinossink->loop, FALSE);
|
||||
}
|
||||
}
|
||||
|
|
@ -490,12 +483,6 @@ on_format_notify (GObject *gobject,
|
|||
GParamSpec *pspec,
|
||||
gpointer user_data)
|
||||
{
|
||||
GstPinosSink *pinossink = user_data;
|
||||
SpaFormat *format;
|
||||
PinosProperties *props = NULL;
|
||||
|
||||
g_object_get (gobject, "format", &format, NULL);
|
||||
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
@ -594,15 +581,9 @@ gst_pinos_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
|
|||
if (buffer->pool != GST_BUFFER_POOL_CAST (pinossink->pool)) {
|
||||
GstBuffer *b = NULL;
|
||||
|
||||
while (TRUE) {
|
||||
b = g_queue_peek_head (&pinossink->empty);
|
||||
if (b)
|
||||
break;
|
||||
|
||||
pinos_main_loop_wait (pinossink->loop);
|
||||
}
|
||||
g_queue_push_tail (&pinossink->filled, b);
|
||||
gst_buffer_pool_acquire_buffer (GST_BUFFER_POOL_CAST (pinossink->pool), &b, NULL);
|
||||
|
||||
/* FIXME, copy */
|
||||
buffer = b;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -87,9 +87,6 @@ struct _GstPinosSink {
|
|||
|
||||
GstPinosPool *pool;
|
||||
GHashTable *buf_ids;
|
||||
|
||||
GQueue empty;
|
||||
GQueue filled;
|
||||
};
|
||||
|
||||
struct _GstPinosSinkClass {
|
||||
|
|
|
|||
|
|
@ -723,10 +723,7 @@ on_format_notify (GObject *gobject,
|
|||
gst_base_src_set_caps (GST_BASE_SRC (pinossrc), caps);
|
||||
gst_caps_unref (caps);
|
||||
|
||||
|
||||
|
||||
|
||||
pinos_stream_start_allocation (pinossrc->stream, NULL);
|
||||
pinos_stream_start_allocation (pinossrc->stream, NULL, 0);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue