Commit Graph
1 Commits
Author SHA1 Message Date
Nic BoetandClaude Opus 5.5 98cb2d95a7 fix: pair decoded frames with their packet by pts in Monitor::Decode()
The codec can consume packets without returning a frame for them; H.264
does after lost or corrupt slices (RTSP over UDP). Decode() paired each
frame with the oldest decoder_queue entry, so those entries stayed queued
for good: every later frame went to an older packet, and once the queue
passed 2 x the keyframe interval the throttle stopped sending while the
codec waited for input, so decoding stopped until zmwatch restarted zmc.

Match the frame to the entry with its pts and release the entries before
it with an earlier pts (decoded, no image), as the flush paths do. A frame
older than every entry is dropped; without a usable pts the oldest entry
is used, as before.

refs #4860

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 20:10:37 -05:00