From 0f583e348794b45e4307e70a29865faddcba407f Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 7 Apr 2025 10:48:59 -0400 Subject: Fix hold in local sink, improve seek behavior - Make sure previous queue is ran on single frames. Signed-off-by: Andrew Opalach --- src/buffer/video.c | 6 +++--- src/buffer/video.h | 2 +- src/buffer/video_null.h | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src/buffer') diff --git a/src/buffer/video.c b/src/buffer/video.c index 67b23f6..486a93d 100644 --- a/src/buffer/video.c +++ b/src/buffer/video.c @@ -210,10 +210,10 @@ void camu_video_buffer_flush(struct camu_video_buffer *buf) } // Not thread-safe, must be called while the buffer is not being read from or written to. -void camu_video_buffer_reset(struct camu_video_buffer *buf) +void camu_video_buffer_reset(struct camu_video_buffer *buf, f64 pts) { - buf->reset_pts = al_atomic_load(f64)(&buf->pts, AL_ATOMIC_ACQUIRE); - al_atomic_store(f64)(&buf->pts, -1.0, AL_ATOMIC_RELEASE); + buf->reset_pts = pts; + al_atomic_store(f64)(&buf->pts, -1.0, AL_ATOMIC_RELAXED); if (buf->queue) buf->queue->reset(buf->queue); buf->buffered = false; al_atomic_store(u8)(&buf->flow, FLOWING, AL_ATOMIC_RELAXED); diff --git a/src/buffer/video.h b/src/buffer/video.h index b3b03bb..834aaa4 100644 --- a/src/buffer/video.h +++ b/src/buffer/video.h @@ -55,6 +55,6 @@ void camu_video_buffer_set_latency(struct camu_video_buffer *buf, s32 frames); void camu_video_buffer_push(struct camu_video_buffer *buf, struct camu_codec_frame *frame); void camu_video_buffer_push_subtitle(struct camu_video_buffer *buf, struct camu_codec_packet *packet); void camu_video_buffer_flush(struct camu_video_buffer *buf); -void camu_video_buffer_reset(struct camu_video_buffer *buf); +void camu_video_buffer_reset(struct camu_video_buffer *buf, f64 pts); bool camu_video_buffer_read(struct camu_video_buffer *buf, void *out, bool *weighted); void camu_video_buffer_free(struct camu_video_buffer *buf); diff --git a/src/buffer/video_null.h b/src/buffer/video_null.h index 11dc49b..3de0001 100644 --- a/src/buffer/video_null.h +++ b/src/buffer/video_null.h @@ -74,9 +74,10 @@ static void camu_video_buffer_flush(struct camu_video_buffer *buf) (void)buf; } -static void camu_video_buffer_reset(struct camu_video_buffer *buf) +static void camu_video_buffer_reset(struct camu_video_buffer *buf, f64 pts) { (void)buf; + (void)pts; } static bool camu_video_buffer_read(struct camu_video_buffer *buf, void *out, bool *weighted) -- cgit v1.2.3-101-g0448