diff options
| author | 2024-01-27 20:39:25 -0500 | |
|---|---|---|
| committer | 2024-01-27 20:39:25 -0500 | |
| commit | b100eb175e0cfa59a15c4125f26ab5474c2347ec (patch) | |
| tree | f1ee4f8bed5d3490ba5d70a6fc194f3206df8df4 /src/buffer | |
| parent | fb1cbf546300d9f8efdf21c6ac66f7c2f1dfd4f3 (diff) | |
| download | camu-b100eb175e0cfa59a15c4125f26ab5474c2347ec.tar.gz camu-b100eb175e0cfa59a15c4125f26ab5474c2347ec.tar.bz2 camu-b100eb175e0cfa59a15c4125f26ab5474c2347ec.zip | |
wip
- Mostly work in the client
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/buffer')
| -rw-r--r-- | src/buffer/audio.c | 2 | ||||
| -rw-r--r-- | src/buffer/clock.c | 4 | ||||
| -rw-r--r-- | src/buffer/frame_queue.h | 2 | ||||
| -rw-r--r-- | src/buffer/meson.build | 6 | ||||
| -rw-r--r-- | src/buffer/peak_buffer.c | 2 | ||||
| -rw-r--r-- | src/buffer/video.c | 3 |
6 files changed, 12 insertions, 7 deletions
diff --git a/src/buffer/audio.c b/src/buffer/audio.c index a1a109e..ce7a697 100644 --- a/src/buffer/audio.c +++ b/src/buffer/audio.c @@ -5,7 +5,7 @@ #define BUFFER_USEC (12 * 1000000L) #define BUFFER_WATERMARK_LOW (3 * 1000000L) // Must be a most half of the buffer size. -#define BUFFER_WATERMARK_HIGH (4 * 1000000L) +#define BUFFER_WATERMARK_HIGH (3 * 1000000L) #define DESYNC_PTS 0.022 diff --git a/src/buffer/clock.c b/src/buffer/clock.c index 1e7883c..f8284ec 100644 --- a/src/buffer/clock.c +++ b/src/buffer/clock.c @@ -14,10 +14,10 @@ bool camu_clock_calc_tick(struct camu_clock *clock) { u64 start = al_atomic_u64_load(&clock->start, AL_ATOMIC_RELAXED); if (start == 0L) return false; - u64 ts = clock->delay == 0 ? start : aki_get_timestamp(); + f64 tick = al_atomic_f64_load(&clock->tick, AL_ATOMIC_RELAXED); + u64 ts = (tick == 0.0 && clock->delay == 0) ? start : aki_get_timestamp(); al_assert(start <= ts); u64 diff = ts - start; - f64 tick = al_atomic_f64_load(&clock->tick, AL_ATOMIC_RELAXED); if (tick == 0.0) { if (!(diff >= clock->delay && clock->delay >= (diff - clock->delay))) { // We are past the requested start time. diff --git a/src/buffer/frame_queue.h b/src/buffer/frame_queue.h index 35a84e4..df58497 100644 --- a/src/buffer/frame_queue.h +++ b/src/buffer/frame_queue.h @@ -6,8 +6,6 @@ #include "../codec/codec.h" -#include "common.h" - enum { CAMU_QUEUE_OK = 0, CAMU_QUEUE_MORE, diff --git a/src/buffer/meson.build b/src/buffer/meson.build index dce16de..d037d6b 100644 --- a/src/buffer/meson.build +++ b/src/buffer/meson.build @@ -1,4 +1,8 @@ -buffer_src = ['video.c', 'audio.c', 'clock.c', 'peak_buffer.c'] +no_video = false +buffer_src = ['audio.c', 'clock.c', 'peak_buffer.c'] +if not no_video + buffer_src += ['video.c'] +endif buffer_deps = [common_deps] buffer = declare_dependency(sources: buffer_src, dependencies: buffer_deps) diff --git a/src/buffer/peak_buffer.c b/src/buffer/peak_buffer.c index 22a007d..2856a78 100644 --- a/src/buffer/peak_buffer.c +++ b/src/buffer/peak_buffer.c @@ -1,5 +1,7 @@ #include "peak_buffer.h" +// https://github.com/MusicPlayerDaemon/MPD/blob/c71e586c530e1d066efde7c2ca40c363f74100c7/src/util/PeakBuffer.cxx + void camu_peak_buffer_init(struct camu_peak_buffer *buf) { aki_buffer_init(&buf->buf); diff --git a/src/buffer/video.c b/src/buffer/video.c index 9a04933..15af78e 100644 --- a/src/buffer/video.c +++ b/src/buffer/video.c @@ -1,11 +1,12 @@ #include <al/log.h> #include "video.h" +#include "common.h" //#define CAMU_VIDEO_BUFFER_FORCE_SCALER #define BUFFER_WATERMARK_LOW 8 // frames. -#define BUFFER_WATERMARK_BUFFERED 10 +#define BUFFER_WATERMARK_BUFFERED 8 #define BUFFER_WATERMARK_HIGH 14 #define BUFFER_WATERMARK_RESET BUFFER_WATERMARK_HIGH + 10. |