From 33b574198c0d7f42cbd12479bb909edbcd507b2a Mon Sep 17 00:00:00 2001 From: Jesse Talavera Date: Sun, 15 Dec 2024 21:39:48 -0500 Subject: [PATCH] Swap the buffers after copying the most recent camera frame, but only upon success --- camera/drivers/ffmpeg.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/camera/drivers/ffmpeg.c b/camera/drivers/ffmpeg.c index 4f9a511c6c..754390cfdb 100644 --- a/camera/drivers/ffmpeg.c +++ b/camera/drivers/ffmpeg.c @@ -419,8 +419,6 @@ static void ffmpeg_camera_poll_thread(void *data) } slock_lock(ffmpeg->target_buffer_lock); - ffmpeg->active_buffer = ffmpeg->active_buffer == ffmpeg->target_buffers[0] ? ffmpeg->target_buffers[1] : ffmpeg->target_buffers[0]; - // TODO: When should I swap the buffers? result = av_image_copy_to_buffer( ffmpeg->active_buffer, ffmpeg->target_buffer_length, @@ -431,6 +429,9 @@ static void ffmpeg_camera_poll_thread(void *data) ffmpeg->target_frame->height, 1 ); + if (result >= 0) { + ffmpeg->active_buffer = ffmpeg->active_buffer == ffmpeg->target_buffers[0] ? ffmpeg->target_buffers[1] : ffmpeg->target_buffers[0]; + } slock_unlock(ffmpeg->target_buffer_lock); if (result < 0) {