Skip to content

SRT ingest decoder: packets must become VideoFrame pixels + PCM on the source bus #536

Description

@iamfatness

Problem

The shell already adds/removes SRT ingest sources (ShowInputsCoordinator). Native ingest has libsrt RX. pixels stay empty. Assigned SRT sources composite slates.

Depends on the F1 source-bus issue. Do not invent a second frame type.

Done when

  • Listener/caller ingest decodes to the same VideoFrame / PCM contract as Zoom/UVC.
  • Health: connected, RTT, last frame, decode errors — loud, not silent placeholder.
  • 30+ min soak at one 1080p30/60 contribution without starving Program.
  • Stub build unchanged when COREVIDEO_WITH_SRT is off.

Not this issue

SRT program output (separate; still in-progress in README). MXL.

Activity

  1. added 2 commits that reference this issue on Sep 28, 2026
  2. iamfatness commented on Sep 28, 2026

    @iamfatness
    OwnerAuthor

    PR #687 merged as 0ff22af4 (base f9ae3215). The existing FFmpeg ingest decoder already published BGRA pixels and embedded PCM to the source bus; this slice made the non-stub build gate/capability truthful and added decoded media, last-frame age, and stale/disconnect health. Both SRT roles passed a local 1080p30 H.264/AAC contribution into Program. The 30-minute listener run produced 108,021 recorded Program frames and 86,416,968 recorded audio samples, with 2 recording missing frames, 0 render skipped slots, and 1 render deadline miss; the finalized end segment had nonblank video and tone. Local npm run test:gate and all PR CI checks passed. Full commands, artifacts, and limits are in the PR's first comment.

    Keep #536 open. RTT is null because FFmpeg owns the SRT socket and does not expose socket stats to this adapter. decoderFailures currently counts process startup failures; it does not count codec/packet decode errors. Closing this issue still requires a measured RTT and decoder error path (or an explicit owner change to the done criteria), plus validation of those fields against a failing/recovering contribution. No backlog rank was changed.

  3. iamfatness commented on Sep 28, 2026

    @iamfatness
    OwnerAuthor

    Reopening under the issue's done criteria: PR #687 intentionally leaves RTT and decoder error reporting unresolved. The close event coincided with the merge; the issue update above records the remaining work.

  4. iamfatness commented on Sep 28, 2026

    @iamfatness
    OwnerAuthor

    SRT ingest health slice is in PR #694: native codec/packet decoder error counters, honest RTT-unavailable state, and live Sources health from the typed snapshot. Local 24-second contribution and first 30-minute contribution passed with video/audio; the 30-minute run recorded 2 missing/2 dropped Program frames while the combined beta compiled, so an idle-host repeat is underway. PR CI is green. Numeric RTT still needs a separately scoped socket-ownership change; keeping #536 open.

  5. iamfatness commented on Sep 28, 2026

    @iamfatness
    OwnerAuthor

    Follow-up on #694: the idle-host 30-minute 1080p30 SRT contribution passed with 108,022 Program frames, audio present, 0 missing/0 dropped frames, and 0 decoder errors. A real publisher interruption test also passed: the source went stale, then the same source resumed sustained video and audio after a retrying caller reconnected. The first concurrent-build soak had 2 missing/2 dropped frames and remains documented in the PR. Numeric RTT remains unavailable while FFmpeg owns the socket; keeping this issue open for that separately scoped work and installed operator review.

  6. added 2 commits that reference this issue on Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogRanked in docs/BACKLOG.md

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions