Skip to content

Publish the effective video route: nativeRemoteHLS does not reflect an ingest fallback #321

Description

@edde746

LoadOptions.nativeRemoteHLS records what the host asked for, but the engine can change the effective route after that: the #168 carriage watchdog reroutes onto the ingest loopback mid-session, and the #199 remembered-verdict path takes the loopback straight away. In both cases options.nativeRemoteHLS is set to false internally, and loadedOptions is not public, so a host has no way to learn which pipeline actually ended up serving the session.

That matters because host behaviour differs per route:

  • external subtitles: the loopback honours load-time LoadOptions.externalSubtitles, the bypass drops them, so a host that compensates after load ends up registering them twice once a fallback happens;
  • subtitle timing ownership: on the bypass AVPlayer draws the origin's WebVTT, on the loopback the host's own renderer owns it;
  • composited PiP subtitles: only meaningful on the software path.

Could the engine publish the effective route — e.g. @Published public internal(set) var activeVideoRoute: VideoRoute with .nativeAVPlayer / .loopbackIngest / .software, or simply expose the post-fallback nativeRemoteHLS — so hosts can reconcile on the change rather than inferring it? A published value would also let a host react to the mid-session reroute, which today is only visible as a log line.

Workaround in the meantime is asking subtitleTracks whether external entries already exist, which covers duplicate registration but not the timing or PiP decisions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions