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.
LoadOptions.nativeRemoteHLSrecords what the host asked for, but the engine can change the effective route after that: the#168carriage watchdog reroutes onto the ingest loopback mid-session, and the#199remembered-verdict path takes the loopback straight away. In both casesoptions.nativeRemoteHLSis set to false internally, andloadedOptionsis 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:
LoadOptions.externalSubtitles, the bypass drops them, so a host that compensates after load ends up registering them twice once a fallback happens;Could the engine publish the effective route — e.g.
@Published public internal(set) var activeVideoRoute: VideoRoutewith.nativeAVPlayer/.loopbackIngest/.software, or simply expose the post-fallbacknativeRemoteHLS— 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
subtitleTrackswhether external entries already exist, which covers duplicate registration but not the timing or PiP decisions.