summaryrefslogtreecommitdiff
path: root/src/buffer/video.c
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-04-13 18:14:28 -0400
committerAndrew Opalach <andrew@akon.city> 2026-04-13 18:14:28 -0400
commit2a8cef2947b2d8e436dbec331ac6454d6c9df105 (patch)
tree3945136c99543cd186fa6e0a63f9a20e5b33c3dc /src/buffer/video.c
parent4ceadc74f0086168fbc576032ba3e6f23af16e39 (diff)
downloadcamu-2a8cef2947b2d8e436dbec331ac6454d6c9df105.tar.gz
camu-2a8cef2947b2d8e436dbec331ac6454d6c9df105.tar.bz2
camu-2a8cef2947b2d8e436dbec331ac6454d6c9df105.zip
Single frame -> Static
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/buffer/video.c')
-rw-r--r--src/buffer/video.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/buffer/video.c b/src/buffer/video.c
index 5a469a4..fac08b9 100644
--- a/src/buffer/video.c
+++ b/src/buffer/video.c
@@ -33,7 +33,7 @@ bool camu_video_buffer_init(struct camu_video_buffer *buf, struct camu_clock *cl
buf->latency = 0.0;
atomic_store(f64)(&buf->pts, -1.0, AL_ATOMIC_RELAXED);
buf->seek_pts = -1.0;
- buf->single_frame = true;
+ buf->is_static = true;
buf->queue = NULL;
buf->buffered = false;
buf->weighted_first_read = false;
@@ -55,7 +55,7 @@ bool camu_video_buffer_configure(struct camu_video_buffer *buf, struct camu_code
const char *format_name = camu_pixel_format_name(fmt->format);
switch (stream->mode) {
case CAMU_NORMAL: {
- buf->single_frame = true;
+ buf->is_static = true;
buf->avg_frame_duration = 0.0;
log_info("Stream: %s (%ux%u) IMAGE.", format_name, fmt->width, fmt->height);
break;
@@ -63,8 +63,8 @@ bool camu_video_buffer_configure(struct camu_video_buffer *buf, struct camu_code
#ifdef CAMU_HAVE_FFMPEG
case CAMU_FFMPEG_COMPAT: {
AVRational frame_rate = stream->av.stream->avg_frame_rate;
- buf->single_frame = stream->duration == 0 || frame_rate.den == 0;
- if (buf->single_frame) {
+ buf->is_static = stream->duration == 0 || frame_rate.den == 0;
+ if (buf->is_static) {
buf->avg_frame_duration = 0.0;
log_info("Stream: %s (%ux%u) IMAGE.", format_name, fmt->width, fmt->height);
} else {
@@ -131,7 +131,7 @@ static bool push_av_frame_internal(struct camu_video_buffer *buf, AVFrame *frame
f64 pts = frame->best_effort_timestamp * av_q2d(stream->time_base);
f64 base_pts = atomic_load(f64)(&buf->pts, AL_ATOMIC_ACQUIRE);
f64 duration = camu_ff_frame_duration(frame) * av_q2d(stream->time_base);
- if (!buf->single_frame && frame_is_late(buf->clock, base_pts, pts, duration)) {
+ if (!buf->is_static && frame_is_late(buf->clock, base_pts, pts, duration)) {
log_trace("Discarding late frame with PTS %f.", pts);
return false;
}
@@ -152,8 +152,8 @@ void camu_video_buffer_push(struct camu_video_buffer *buf, struct camu_codec_fra
{
u8 flow = atomic_load(u32)(&buf->flow, AL_ATOMIC_ACQUIRE);
if (flow != FLOWING) {
- // A single frame will be FLUSHED after any push().
- if (buf->single_frame) {
+ // A static buffer will be FLUSHED after any push().
+ if (buf->is_static) {
log_warn("Unexpected duplicate frame received.");
}
camu_codec_frame_discard(frame);
@@ -182,9 +182,9 @@ void camu_video_buffer_push(struct camu_video_buffer *buf, struct camu_codec_fra
}
s32 count = buf->queue->count(buf->queue);
- if (!buf->buffered && (buf->single_frame || count >= BUFFER_MARK_BUFFERED)) {
- // Preserve order of: set flow -> flush -> callback, for single frames.
- if (buf->single_frame) {
+ if (!buf->buffered && (buf->is_static || count >= BUFFER_MARK_BUFFERED)) {
+ // Preserve order of: set flow -> flush -> callback, for static buffers.
+ if (buf->is_static) {
atomic_store(u32)(&buf->flow, FLUSHED, AL_ATOMIC_RELEASE);
buf->queue->flush(buf->queue);
}
@@ -240,7 +240,7 @@ bool camu_video_buffer_read(struct camu_video_buffer *buf, void *out, bool *weig
al_assert(buf->buffered);
f64 base_pts = atomic_load(f64)(&buf->pts, AL_ATOMIC_ACQUIRE);
- if (!buf->single_frame) {
+ if (!buf->is_static) {
bool allow_set = !buf->weighted_first_read;
bool armed_for_pause = false;
f64 pts = camu_clock_get_pts(buf->clock, buf->latency, allow_set, &armed_for_pause);