mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
Only add to ringbuffer if feedback stream is active
This commit is contained in:
parent
2f36f4009a
commit
2f7d2a6668
1 changed files with 24 additions and 22 deletions
|
|
@ -2060,31 +2060,33 @@ static void graph_props_changed(void *object, enum spa_direction direction)
|
|||
|
||||
pw_stream_update_params(impl->capture, params, 1);
|
||||
|
||||
fprintf(stdout, "graph props changed\n");
|
||||
uint32_t index;
|
||||
const uint32_t available = impl->feedback_ringbuffer_size
|
||||
- spa_ringbuffer_get_write_index(&impl->feedback_ringbuffer, &index);
|
||||
const uint64_t pod_length = SPA_POD_SIZE(params[0]);
|
||||
const uint64_t full_length = pod_length + sizeof(uint64_t);
|
||||
if (available >= full_length) {
|
||||
fprintf(stdout, "writing to buffer\n");
|
||||
fprintf(stdout, "writing data, pod length: %lu\nindex: %u\n",
|
||||
pod_length, index);
|
||||
if (impl->feedback_stream_active) {
|
||||
fprintf(stdout, "graph props changed\n");
|
||||
uint32_t index;
|
||||
int32_t write_index_return = spa_ringbuffer_get_write_index(&impl->feedback_ringbuffer, &index);
|
||||
const uint32_t available = impl->feedback_ringbuffer_size - write_index_return;
|
||||
const uint64_t pod_length = SPA_POD_SIZE(params[0]);
|
||||
const uint64_t full_length = pod_length + sizeof(uint64_t);
|
||||
if (available >= full_length) {
|
||||
fprintf(stdout, "writing to buffer\n");
|
||||
fprintf(stdout, "writing data, pod length: %lu\nindex: %u\n",
|
||||
pod_length, index);
|
||||
|
||||
spa_ringbuffer_write_data(&impl->feedback_ringbuffer,
|
||||
impl->feedback_ringbuffer_data, impl->feedback_ringbuffer_size,
|
||||
index % impl->feedback_ringbuffer_size, &pod_length,
|
||||
sizeof(uint64_t));
|
||||
spa_ringbuffer_write_data(&impl->feedback_ringbuffer,
|
||||
impl->feedback_ringbuffer_data, impl->feedback_ringbuffer_size,
|
||||
index % impl->feedback_ringbuffer_size, &pod_length,
|
||||
sizeof(uint64_t));
|
||||
|
||||
spa_ringbuffer_write_data(&impl->feedback_ringbuffer,
|
||||
impl->feedback_ringbuffer_data, impl->feedback_ringbuffer_size,
|
||||
(index + sizeof(uint64_t)) % impl->feedback_ringbuffer_size, params[0],
|
||||
SPA_POD_SIZE(params[0]));
|
||||
spa_ringbuffer_write_data(&impl->feedback_ringbuffer,
|
||||
impl->feedback_ringbuffer_data, impl->feedback_ringbuffer_size,
|
||||
(index + sizeof(uint64_t)) % impl->feedback_ringbuffer_size, params[0],
|
||||
SPA_POD_SIZE(params[0]));
|
||||
|
||||
spa_ringbuffer_write_update(&impl->feedback_ringbuffer,
|
||||
index + sizeof(uint64_t) + SPA_POD_SIZE(params[0]));
|
||||
} else {
|
||||
fprintf(stdout, "not enough space in ringbuffer\n");
|
||||
spa_ringbuffer_write_update(&impl->feedback_ringbuffer,
|
||||
index + sizeof(uint64_t) + SPA_POD_SIZE(params[0]));
|
||||
} else {
|
||||
fprintf(stdout, "not enough space in ringbuffer, available: %u, required: %lu, write index return: %i, buffer size: %u\n", available, full_length, write_index_return, impl->feedback_ringbuffer_size);
|
||||
}
|
||||
}
|
||||
|
||||
spa_pod_dynamic_builder_clean(&b);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue