mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
alsa: improve ringbuffer params
Always reuse the ringbuffer after we consumed some of it. This is the trigger for upstream to write some more in the buffer.
This commit is contained in:
parent
84d422bc46
commit
91ba492712
2 changed files with 7 additions and 4 deletions
|
|
@ -383,15 +383,16 @@ impl_node_port_enum_params(struct spa_node *node,
|
|||
t->param_alloc_meta_enable.MetaEnable,
|
||||
":", t->param_alloc_meta_enable.type, "I", t->meta.Ringbuffer,
|
||||
":", t->param_alloc_meta_enable.size, "i", sizeof(struct spa_meta_ringbuffer),
|
||||
":", t->param_alloc_meta_enable.ringbufferSize, "i", this->period_frames *
|
||||
this->frame_size * 32,
|
||||
":", t->param_alloc_meta_enable.ringbufferSize, "iru", this->props.min_latency * this->frame_size,
|
||||
2, this->props.min_latency * this->frame_size,
|
||||
this->period_frames * this->frame_size,
|
||||
":", t->param_alloc_meta_enable.ringbufferStride, "i", 0,
|
||||
":", t->param_alloc_meta_enable.ringbufferBlocks, "i", 1,
|
||||
":", t->param_alloc_meta_enable.ringbufferAlign, "i", 16);
|
||||
break;
|
||||
|
||||
default:
|
||||
return SPA_RESULT_NOT_IMPLEMENTED;
|
||||
return SPA_RESULT_ENUM_END;
|
||||
}
|
||||
|
||||
return SPA_RESULT_OK;
|
||||
|
|
|
|||
|
|
@ -369,10 +369,12 @@ pull_frames(struct state *state,
|
|||
n_bytes = SPA_MIN(avail, to_write * state->frame_size);
|
||||
n_frames = SPA_MIN(to_write, n_bytes / state->frame_size);
|
||||
|
||||
spa_ringbuffer_read_data(ringbuffer, d[0].data, index & ringbuffer->mask, dst, n_bytes);
|
||||
spa_ringbuffer_read_data(ringbuffer, d[0].data, index % ringbuffer->mask, dst, n_bytes);
|
||||
|
||||
spa_ringbuffer_read_update(ringbuffer, index + n_bytes);
|
||||
reuse = avail == n_bytes;
|
||||
spa_log_trace(state->log, "%d %d %ld %zd", avail, index, to_write, n_bytes);
|
||||
reuse = true;
|
||||
} else {
|
||||
offs = SPA_MIN(d[0].chunk->offset + state->ready_offset, d[0].maxsize);
|
||||
size = SPA_MIN(d[0].chunk->size + offs, d[0].maxsize) - offs;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue