From ab6d705ebd04be1744ab15bc580332a6a45633fb Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:14:04 +0200 Subject: [PATCH] Fix onDequeue not being called upon adjustments to finalFrames --- src/decode.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/decode.ts b/src/decode.ts index 76ed14d..a9140dd 100644 --- a/src/decode.ts +++ b/src/decode.ts @@ -463,6 +463,8 @@ export class VideoDecoderWrapper extends DecoderWrapper { const result: { frame: VideoFrame | null } = { frame: null }; this.finalFrames.push(result); + let finalFrameRemoved = false; + try { if (!alpha) { // Nothing needs to be merged @@ -477,14 +479,21 @@ export class VideoDecoderWrapper extends DecoderWrapper { // Emit any leading frames that are ready, preserving input order while (this.finalFrames.length > 0 && this.finalFrames[0]!.frame !== null) { const next = this.finalFrames.shift()!; + finalFrameRemoved = true; this.frameHandler(next.frame!); } } catch (error) { removeItem(this.finalFrames, result); + finalFrameRemoved = true; this.onError(error); } finally { removeItem(this.mergeAlphaPromises, resolver.promise); resolver.resolve(); + + if (finalFrameRemoved) { + // Since final frames affect the decode queue size + this.onDequeue?.(); + } } }