diff options
| author | 2024-10-27 19:58:31 -0400 | |
|---|---|---|
| committer | 2024-10-27 19:58:31 -0400 | |
| commit | d6735566cebf82a5d22a3ade22b9acd52fbe11a5 (patch) | |
| tree | 7240a91747013e0dcdf133ea916e8fe1aaf7f2a7 /src/liana | |
| parent | 72eb0c6381f9406a4e45d23f65373d4936770433 (diff) | |
| download | camu-d6735566cebf82a5d22a3ade22b9acd52fbe11a5.tar.gz camu-d6735566cebf82a5d22a3ade22b9acd52fbe11a5.tar.bz2 camu-d6735566cebf82a5d22a3ade22b9acd52fbe11a5.zip | |
Buffer tweaks
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/liana')
| -rw-r--r-- | src/liana/list.h | 2 | ||||
| -rw-r--r-- | src/liana/vcr.c | 11 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/liana/list.h b/src/liana/list.h index bbb2ce4..5e3eaec 100644 --- a/src/liana/list.h +++ b/src/liana/list.h @@ -8,7 +8,7 @@ #define LIANA_TIMESTAMP_INVALID UINT64_MAX #define LIANA_BASE_DELAY 475000Lu // 475ms -#define LIANA_BASE_PING 200000Lu // 200ms +#define LIANA_BASE_PING 150000Lu // 150ms #define LIANA_PAUSE_DELAY LIANA_BASE_PING #define LIANA_DELAY_IGNORE 0Lu diff --git a/src/liana/vcr.c b/src/liana/vcr.c index 192b4f1..40aa757 100644 --- a/src/liana/vcr.c +++ b/src/liana/vcr.c @@ -109,9 +109,9 @@ static void cork_if_buffered(struct lia_vcr *vcr) { u8 buffered = 1; struct lia_vcr_track *track; - al_array_foreach(vcr->tracks, i, track) { - buffered &= al_atomic_load(u8)(&track->buffered, AL_ATOMIC_RELAXED); - } + //al_array_foreach(vcr->tracks, i, track) { + // buffered &= al_atomic_load(u8)(&track->buffered, AL_ATOMIC_RELAXED); + //} if (buffered) { aki_packet_stream_cork(vcr->data, true); al_array_foreach(vcr->tracks, i, track) { @@ -136,9 +136,10 @@ bool lia_vcr_push_packet(struct lia_vcr *vcr, struct aki_packet *packet) aki_thread_create(&track->thread, vcr_track_thread, track); track->running = true; } + s32 count; if (!aki_packet_cache_send_packet(&track->cache, packet)) { aki_packet_free(packet); - } else if (al_atomic_add(s32)(&vcr->count, 1, AL_ATOMIC_RELAXED) > vcr->mark.buffered) { + } else if ((count = al_atomic_add(s32)(&vcr->count, 1, AL_ATOMIC_RELAXED)) > vcr->mark.buffered) { cork_if_buffered(vcr); } break; @@ -204,7 +205,7 @@ void lia_vcr_flush(struct lia_vcr *vcr) vcr_track_close_internal(track); track->client->flush(track->client); aki_packet_cache_enable(&track->cache); - track->running = false; + al_atomic_store(u8)(&track->buffered, 0, AL_ATOMIC_RELAXED); al_atomic_store(s32)(&track->state, LIANA_STREAM_RUNNING, AL_ATOMIC_RELAXED); } aki_signal_send(&vcr->signal); |