From e91f76515cf0c10b40880eb8b9bc4e5287ec5d01 Mon Sep 17 00:00:00 2001
From: Niklas Haas <git@haasn.dev>
Date: Tue, 20 Jun 2023 15:58:53 +0200
Subject: [PATCH] utils/frame_queue: delay first frame until start PTS

Return an empty frame mix until the first frame's PTS value has been
reached.
---
 src/utils/frame_queue.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/utils/frame_queue.c b/src/utils/frame_queue.c
index 57b95f9ff..6ada433a0 100644
--- a/src/utils/frame_queue.c
+++ b/src/utils/frame_queue.c
@@ -642,6 +642,11 @@ static inline enum pl_queue_status point(pl_queue p, struct pl_frame_mix *mix,
     // Find closest frame (nearest neighbour semantics)
     pl_assert(p->queue.num);
     struct entry *entry = p->queue.elem[0];
+    if (entry->pts > params->pts) { // first frame not visible yet
+        *mix = (struct pl_frame_mix) {0};
+        return PL_QUEUE_OK;
+    }
+
     double best = fabs(entry->pts - params->pts);
     for (int i = 1; i < p->queue.num; i++) {
         double dist = fabs(p->queue.elem[i]->pts - params->pts);
-- 
GitLab