Repository navigation
fix: Auto falls back to TCP when UDP delivers packets but no frame decodes (#113) - #125
Conversation
|
/review |
Code Review by Qodo
1.
|
|
/agentic_review |
3100fee to
1a44445
Compare
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 1a44445 |
|
Qodo review — all four accepted and fixed:
|
1a44445 to
b3923f8
Compare
The diff reflects all four reported fixes: packet-based UDP stall detection, decoder-health and packet-loss gating, stall resets on status/SDP changes, and separate packet-loss NAL accounting. The published Qodo review itself failed to complete, so these changes still need a fresh review to verify them end to end. |
|
Device check (Aceline-1, b3923f8): slot 3 ( |
… failures, restarts per connection; nal_dropped counts loss only (Qodo on #125)
fix: Auto falls back to TCP when UDP delivers packets but no frame decodes (#113)
Closes #113.
Cause (details in #113): the lab cameras send RTSP-over-UDP heavily reordered (up to ~42 packets, which
RtpReorderhandles) and.126also loses ≈ 1.5 packets/s on the way. Nearly every H.265 key frame then has a hole andNalAssemblerdrops it whole; on key frames only (#85) the cell shows nothing although 30 packets/s arrive. TCP has no loss.Fix
QuadCell: once a second, if RTSP plays over UDP/multicast, packets arrive (≥ 5 fps) and no frame was decoded for 8 s (longer than any lab camera's key frame interval), it tells the session (reportUdpBroken).RtspSession: with Auto or Multicast, a broken UDP stream ends the receive loop and the URL is marked UDP-failed, so the reconnect uses TCP — the same path asno video over UDP, using TCPtoday; log…: packets but no decoded frame for 8 s (N NAL units dropped) over UDP, using TCP. An explicit UDP setting stays on UDP./stats.json: per cellnal_dropped(NAL units dropped because one of their packets was lost).Unblocks Auto as the default (#112).
Device check: Aceline-1, slot 3 (
.126, H.265) on Auto in the 3×3 grid → falls back to TCP within ~10 s and shows key frames; slot 2 (.133, H.264) on Auto stays on UDP.