mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
improve node io
Unify input and output io areas. Add support for ranges in the io area. Automatically recycle buffers in the output areas in process_output Improve the mixer, add use_buffer support, use a queue of input buffers, fix mixing, add support for ranges. Fix mixer and v4l2 tests
This commit is contained in:
parent
29fbf2e841
commit
01c13adab5
28 changed files with 983 additions and 747 deletions
|
|
@ -47,8 +47,8 @@ transport_area_get_size (PinosTransportArea *area)
|
|||
{
|
||||
size_t size;
|
||||
size = sizeof (PinosTransportArea);
|
||||
size += area->max_inputs * sizeof (SpaPortInput);
|
||||
size += area->max_outputs * sizeof (SpaPortOutput);
|
||||
size += area->max_inputs * sizeof (SpaPortIO);
|
||||
size += area->max_outputs * sizeof (SpaPortIO);
|
||||
size += sizeof (SpaRingbuffer);
|
||||
size += INPUT_BUFFER_SIZE;
|
||||
size += sizeof (SpaRingbuffer);
|
||||
|
|
@ -63,25 +63,25 @@ transport_setup_area (void *p, PinosTransport *trans)
|
|||
int i;
|
||||
|
||||
trans->area = a = p;
|
||||
p = SPA_MEMBER (p, sizeof (PinosTransportArea), SpaPortInput);
|
||||
p = SPA_MEMBER (p, sizeof (PinosTransportArea), SpaPortIO);
|
||||
|
||||
trans->inputs = p;
|
||||
for (i = 0; i < a->max_inputs; i++) {
|
||||
trans->inputs[i].state = SPA_PORT_STATE_FLAG_NONE;
|
||||
trans->inputs[i].flags = SPA_PORT_INPUT_FLAG_NONE;
|
||||
trans->inputs[i].flags = SPA_PORT_IO_FLAG_NONE;
|
||||
trans->inputs[i].buffer_id = SPA_ID_INVALID;
|
||||
trans->inputs[i].status = SPA_RESULT_OK;
|
||||
}
|
||||
p = SPA_MEMBER (p, a->max_inputs * sizeof (SpaPortInput), void);
|
||||
p = SPA_MEMBER (p, a->max_inputs * sizeof (SpaPortIO), void);
|
||||
|
||||
trans->outputs = p;
|
||||
for (i = 0; i < a->max_outputs; i++) {
|
||||
trans->outputs[i].state = SPA_PORT_STATE_FLAG_NONE;
|
||||
trans->outputs[i].flags = SPA_PORT_OUTPUT_FLAG_NONE;
|
||||
trans->outputs[i].flags = SPA_PORT_IO_FLAG_NONE;
|
||||
trans->outputs[i].buffer_id = SPA_ID_INVALID;
|
||||
trans->outputs[i].status = SPA_RESULT_OK;
|
||||
}
|
||||
p = SPA_MEMBER (p, a->max_outputs * sizeof (SpaPortOutput), void);
|
||||
p = SPA_MEMBER (p, a->max_outputs * sizeof (SpaPortIO), void);
|
||||
|
||||
trans->input_buffer = p;
|
||||
spa_ringbuffer_init (trans->input_buffer, INPUT_BUFFER_SIZE);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue