What happened?
I played a live MPEG-TS channel whose audio is MP2 stereo. I expected the segment producer to keep cutting for as long as the source delivers, which is what 6.31.0 does on the same channel and the same origin. Instead 6.47.0 finalizes segments normally for about twenty seconds and then wedges the cutter with zero audio packets in its window, emits one 85 MB segment declared as half a second, and produces nothing after that.
The one deliberate behavioural difference between the two versions on this class of source is 6.32.0's move from E-AC-3 to FLAC for a bridged source of two channels or fewer. 6.31.0 reports decoding + EAC3 re-encode and plays for minutes; 6.47.0 reports decoding + FLAC re-encode and wedges.
Recovery afterwards behaves correctly on its own terms and cannot help, because there is nothing left to serve: #65 nudges, then skips stage 2 with "the producer is starved, not the consumer", and the item dies with AVFoundationErrorDomain/-11866. The viewer gets a thirty-second rebuffer, a few seconds of picture, and a second stall the session does not return fr
Steps to reproduce
Take a live MPEG-TS source whose audio is MP2 stereo at 48 kHz, two channels (mine is HEVC 3840x2160 at 50 fps, hvc1.2.4.L153, from an Xtream panel that answers with a 302 to a token-bearing media host).
Configure LoadOptions with the default audioBridgeMode (.surroundCompat) and load it as a live source on the native route.
Watch the HLSSegmentProducer log for about half a minute.
Segments seg-0..seg-16 finalize at 1.280 s each, then the no-cut watchdog fires with window video=1792 key=30 audio=0.
The same channel on 6.31.0, same host and same app build, plays for minutes with muxCuts climbing steadily (44, 71, 94, 117, 144 at t=30/60/90/120/150 s).
AetherEngine version or commit SHA
6.47.0
Host app
Custom / my own integration
Platform
tvOS
OS version
26.6
Device / chip
ATV 4k 3th gen
Playback path
Native AVPlayer
Source media (for playback bugs)
No response
Error codes / log lines
6.31.0, working:
[HLSVideoEngine] audio: codec=mp2 (bridge required), decoding + EAC3 re-encode [AudioBridge] init: mode=surroundCompat srcCodec=86016 sampleRate=48000 sourceChannels=2 encoderChannels=2 bitRate=256 kbps [HLSVideoEngine] prepared: codec=hvc1.2.4.L153,ec-3 resolution=3840x2160 fps=50.000
6.47.0, wedging:
[HLSVideoEngine] audio: codec=mp2 (bridge required), decoding + FLAC re-encode [AudioBridge] init: mode=surroundCompat encoder=flac srcCodec=86016 sampleRate=48000 sourceChannels=2 encoderChannels=2 bitRate=VBR (source=container, container=2, decoder=2) [HLSVideoEngine] prepared: codec=hvc1.2.4.L153,fLaC resolution=3840x2160 fps=50.000
[HLSSegmentProducer] no-cut stall: no segment finalized for 10s (packetsRead=3787, sinceFinalize=1792, rate=179.1pkt/s, cutter wedge); window video=1792 key=30 audio=0 foreign=0 videoPtsAdvance=0.0s; aborting the source read and exiting for host retune [HLSSegmentProducer] seg-17.m4s captured (85388914 B) [HLSSegmentProducer] live seg-17 finalized: start=21.740s dur=0.500s [HLSSegmentProducer] pump finished: reason=segmentStall packetsRead=3788 packetsWritten=2876 lastError=0 elapsed=11094ms [HLSVideoEngine] live segment cutter stalled (likely SSAI ad pod); requesting host retune to the server route
[AetherEngine] #65 re-engaging stalled AVPlayer (stall + 6s without fetches): nudge seek to 21.45s [AetherEngine] #65 stage-2 skipped: no segment finalized since the stall (producer still at seg18); the producer is starved, not the consumer; publishing liveSourceReset to host [NativeAVPlayerHost] #1 failedToPlayToEndTime AVFoundationErrorDomain/-11866 'Playback Stopped'
Both memprobe samples after the wedge read muxBytesMB=0 muxCuts=0, and the producer stays at seg18 for the rest of the session.
Anything else
What this report does not establish: the same line reports videoPtsAdvance=0.0s, and a change of audio encoder does not explain a video timeline that fails to advance across 1792 packets, so a second factor may be present. The origin is also independently unreliable. Measured with curl outside any player it closes the connection by itself after ten to fifty-five seconds, and it answers 401 to a reused token link, which is the same shape as the 302-to-a-one-slot-host origin in 6.36.0. Two other players buffer on this channel as well, roughly once every few minutes, so a source-side dropout coinciding with the wedge cannot be excluded from this trace alone. The control that would settle it, 6.47.0 against a channel whose audio is stream-copied AAC and therefore never enters the bridge, has not been run.
On the workaround: AudioBridgeMode offers no way back for this source, since .lossless is FLAC unconditionally and .surroundCompat returns FLAC for any source of two channels or fewer, so a host that hits this has to pin back.
What happened?
I played a live MPEG-TS channel whose audio is MP2 stereo. I expected the segment producer to keep cutting for as long as the source delivers, which is what 6.31.0 does on the same channel and the same origin. Instead 6.47.0 finalizes segments normally for about twenty seconds and then wedges the cutter with zero audio packets in its window, emits one 85 MB segment declared as half a second, and produces nothing after that.
The one deliberate behavioural difference between the two versions on this class of source is 6.32.0's move from E-AC-3 to FLAC for a bridged source of two channels or fewer. 6.31.0 reports decoding + EAC3 re-encode and plays for minutes; 6.47.0 reports decoding + FLAC re-encode and wedges.
Recovery afterwards behaves correctly on its own terms and cannot help, because there is nothing left to serve: #65 nudges, then skips stage 2 with "the producer is starved, not the consumer", and the item dies with AVFoundationErrorDomain/-11866. The viewer gets a thirty-second rebuffer, a few seconds of picture, and a second stall the session does not return fr
Steps to reproduce
Take a live MPEG-TS source whose audio is MP2 stereo at 48 kHz, two channels (mine is HEVC 3840x2160 at 50 fps, hvc1.2.4.L153, from an Xtream panel that answers with a 302 to a token-bearing media host).
Configure LoadOptions with the default audioBridgeMode (.surroundCompat) and load it as a live source on the native route.
Watch the HLSSegmentProducer log for about half a minute.
Segments seg-0..seg-16 finalize at 1.280 s each, then the no-cut watchdog fires with window video=1792 key=30 audio=0.
The same channel on 6.31.0, same host and same app build, plays for minutes with muxCuts climbing steadily (44, 71, 94, 117, 144 at t=30/60/90/120/150 s).
AetherEngine version or commit SHA
6.47.0
Host app
Custom / my own integration
Platform
tvOS
OS version
26.6
Device / chip
ATV 4k 3th gen
Playback path
Native AVPlayer
Source media (for playback bugs)
No response
Error codes / log lines
Anything else
What this report does not establish: the same line reports videoPtsAdvance=0.0s, and a change of audio encoder does not explain a video timeline that fails to advance across 1792 packets, so a second factor may be present. The origin is also independently unreliable. Measured with curl outside any player it closes the connection by itself after ten to fifty-five seconds, and it answers 401 to a reused token link, which is the same shape as the 302-to-a-one-slot-host origin in 6.36.0. Two other players buffer on this channel as well, roughly once every few minutes, so a source-side dropout coinciding with the wedge cannot be excluded from this trace alone. The control that would settle it, 6.47.0 against a channel whose audio is stream-copied AAC and therefore never enters the bridge, has not been run.
On the workaround: AudioBridgeMode offers no way back for this source, since .lossless is FLAC unconditionally and .surroundCompat returns FLAC for any source of two channels or fewer, so a host that hits this has to pin back.