mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-25 06:59:57 -05:00
implement set_format
Serialize the formats Use SpaMemoryRef where we can Add more debug
This commit is contained in:
parent
98679cbd53
commit
8f9222bf9e
19 changed files with 611 additions and 399 deletions
|
|
@ -603,7 +603,7 @@ parse_control (PinosStream *stream,
|
|||
/* FIXME send update port status */
|
||||
|
||||
/* send state-change */
|
||||
spa_control_builder_init_into (&builder, buffer, 1024, NULL, 0);
|
||||
spa_control_builder_init_into (&builder, buffer, sizeof(buffer), NULL, 0);
|
||||
sc.state = SPA_NODE_STATE_READY;
|
||||
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_STATE_CHANGE, &sc);
|
||||
spa_control_builder_end (&builder, &control);
|
||||
|
|
@ -611,6 +611,7 @@ parse_control (PinosStream *stream,
|
|||
if (spa_control_write (&control, priv->fd) < 0)
|
||||
g_warning ("stream %p: error writing control", stream);
|
||||
|
||||
spa_control_clear (&control);
|
||||
break;
|
||||
}
|
||||
case SPA_CONTROL_CMD_SET_PROPERTY:
|
||||
|
|
@ -647,8 +648,8 @@ parse_control (PinosStream *stream,
|
|||
if (fd == -1)
|
||||
break;
|
||||
|
||||
g_debug ("add mem %d, %d, %d", p.mem_id, fd, p.flags);
|
||||
mem = spa_memory_import (0, p.mem_id);
|
||||
g_debug ("add mem %d,%d, %d, %d", p.mem.pool_id, p.mem.id, fd, p.flags);
|
||||
mem = spa_memory_import (&p.mem);
|
||||
mem->flags = p.flags;
|
||||
mem->fd = fd;
|
||||
mem->ptr = NULL;
|
||||
|
|
@ -664,7 +665,7 @@ parse_control (PinosStream *stream,
|
|||
break;
|
||||
|
||||
g_debug ("stream %p: stop", stream);
|
||||
mem = spa_memory_find (0, p.mem_id);
|
||||
mem = spa_memory_find (&p.mem);
|
||||
if (--mem->refcount == 0)
|
||||
mem->notify (mem);
|
||||
break;
|
||||
|
|
@ -679,13 +680,12 @@ parse_control (PinosStream *stream,
|
|||
break;
|
||||
|
||||
g_debug ("add buffer %d", p.buffer_id);
|
||||
mem = spa_memory_find (0, p.mem_id);
|
||||
mem = spa_memory_find (&p.mem);
|
||||
bid.cleanup = false;
|
||||
bid.id = p.buffer_id;
|
||||
bid.offset = p.offset;
|
||||
bid.size = p.size;
|
||||
bid.buf = (SpaBuffer *)((uint8_t*) spa_memory_ensure_ptr (mem) + p.offset);
|
||||
spa_debug_buffer (bid.buf);
|
||||
bid.buf = SPA_MEMBER (spa_memory_ensure_ptr (mem), p.offset, SpaBuffer);
|
||||
|
||||
g_array_append_val (priv->buffer_ids, bid);
|
||||
break;
|
||||
|
|
@ -711,11 +711,8 @@ parse_control (PinosStream *stream,
|
|||
if (spa_control_iter_parse_cmd (&it, &p) < 0)
|
||||
break;
|
||||
|
||||
if ((bid = find_buffer (stream, p.buffer_id))) {
|
||||
if ((bid = find_buffer (stream, p.buffer_id)))
|
||||
priv->buffer = bid->buf;
|
||||
spa_debug_buffer (bid->buf);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case SPA_CONTROL_CMD_REUSE_BUFFER:
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@ gst_pinos_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
|
|||
GstMemory *mem = NULL;
|
||||
GstClockTime pts, dts, base;
|
||||
gsize size;
|
||||
gboolean tmpfile, res;
|
||||
gboolean res;
|
||||
|
||||
pinossink = GST_PINOS_SINK (bsink);
|
||||
|
||||
|
|
@ -517,6 +517,9 @@ gst_pinos_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
|
|||
|
||||
b = g_slice_new (SinkBuffer);
|
||||
b->buffer.id = pinos_fd_manager_get_id (pinossink->fdmanager);
|
||||
b->buffer.mem.pool_id = SPA_ID_INVALID;
|
||||
b->buffer.mem.id = SPA_ID_INVALID;
|
||||
b->buffer.offset = 0;
|
||||
b->buffer.size = sizeof (SinkBuffer);
|
||||
b->buffer.n_metas = 1;
|
||||
b->buffer.metas = offsetof (SinkBuffer, metas);
|
||||
|
|
@ -541,7 +544,6 @@ gst_pinos_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
|
|||
if (gst_buffer_n_memory (buffer) == 1
|
||||
&& gst_is_fd_memory (gst_buffer_peek_memory (buffer, 0))) {
|
||||
mem = gst_buffer_get_memory (buffer, 0);
|
||||
tmpfile = gst_is_tmpfile_memory (mem);
|
||||
} else {
|
||||
GstMapInfo minfo;
|
||||
GstAllocationParams params = {0, 0, 0, 0, { NULL, }};
|
||||
|
|
@ -553,7 +555,6 @@ gst_pinos_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
|
|||
goto map_error;
|
||||
gst_buffer_extract (buffer, 0, minfo.data, size);
|
||||
gst_memory_unmap (mem, &minfo);
|
||||
tmpfile = TRUE;
|
||||
}
|
||||
|
||||
pinos_main_loop_lock (pinossink->loop);
|
||||
|
|
@ -563,7 +564,8 @@ gst_pinos_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
|
|||
b->mem = mem;
|
||||
b->fd = gst_fd_memory_get_fd (mem);
|
||||
|
||||
b->datas[0].mem_id = 0;
|
||||
b->datas[0].mem.pool_id = SPA_ID_INVALID;
|
||||
b->datas[0].mem.id = SPA_ID_INVALID;
|
||||
b->datas[0].offset = mem->offset;
|
||||
b->datas[0].size = mem->size;
|
||||
b->datas[0].stride = 0;
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ on_new_buffer (GObject *gobject,
|
|||
SpaData *d = &SPA_BUFFER_DATAS (b)[i];
|
||||
SpaMemory *mem;
|
||||
|
||||
mem = spa_memory_find (0, d->mem_id);
|
||||
mem = spa_memory_find (&d->mem);
|
||||
|
||||
if (mem->fd) {
|
||||
GstMemory *fdmem = NULL;
|
||||
|
|
|
|||
|
|
@ -444,7 +444,7 @@ on_received_buffer (PinosPort *port,
|
|||
uint8_t *data;
|
||||
size_t size, towrite, total;
|
||||
|
||||
mem = spa_memory_find (0, d[i].mem_id);
|
||||
mem = spa_memory_find (&d[i].mem);
|
||||
|
||||
size = d[i].size;
|
||||
data = (guint8*)mem->ptr + d[i].offset;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue