Skip to content

Scrubbing leaves playback paused while AetherEngine still reports playing #292

Description

@wunax

What happened?

I started playing a video normally, then scrubbed to another position while playback was active.

I expected playback to continue automatically from the selected position. Instead, the seek completed and AetherEngine still reported the state as playing, but the video and audio remained paused. Toggling pause and play restored playback.

The logs show two same-target programmatic seeks, with the first superseded by the second. The software playback path then landed with the audio clock rate set to 0.0:

[AetherEngine] seek#1 programmatic began target=2432.97
[AetherEngine] seek#1 programmatic superseded target=2432.97
[AetherEngine] seek#2 programmatic began target=2432.97
[AudioOutput] seekClock to=2432.973 rate=0.0
[AetherEngine] seek#2 programmatic landed rendered=2432.97 target=2432.97

After manually toggling pause and play:

[AudioOutput] pause at t=2432.973
[AudioOutput] setRate 1.0 at t=2432.973

playback resumed normally.

Steps to reproduce

  1. Start playback of a video routed through AetherEngine’s software playback path.
  2. Confirm that playback is running normally.
  3. While the media is playing, scrub to another position.
  4. Release the scrubber and wait for the seek to complete.
  5. Observe that the UI still reports playback as playing, but the video and audio remain paused.
  6. Press pause, then play.
  7. Playback resumes normally from the scrubbed position.

The issue occurs when a programmatic seek is superseded by another same-target seek before the first software-path reposition finishes.

AetherEngine version or commit SHA

6.5.6

Host app

Custom / my own integration

Platform

iOS

OS version

iOS 26.3

Device / chip

iPhone 17 Pro

Playback path

Native AVPlayer

Source media (for playback bugs)

No response

Error codes / log lines


Anything else

[Deinterlace] hardware warm-up started
[Deinterlace] engaged [hardware]: 64x64 pixFmt=0 (format=nv12,hwupload,yadif_videotoolbox=mode=send_field:parity=auto:deint=interlaced) outTB=1/60
[Deinterlace] hardware warm-up ready after 0.008s
AddInstanceForFactory: No factory registered for id <CFUUID 0x600000338780> F8BB1C28-BAE8-11D6-9C31-00039315CD46
[AetherEngine] AVAudioSession: category set off-main, not activated (AVKit drives activation) policy=0 maxChannels=2 output=2
[AVIOReader] pump tail prefetch issued bytes=-65536
[AVIOReader] pump conn start gen=1 offset=0 len=32MB
[AVIOReader] File size: 1537449562 bytes (data connection)
[AVIOReader] pump gen=1 first data after 21ms
[AVIOReader] pump tail prefetch installed 65536B at 1537384026 after 22ms
[AVIOReader] pump tail prefetch served the read at 1537446502; no reconnect for it
[Demuxer] Opened: 7 streams, duration=3935456000 us
[Demuxer]   stream[0] type=video codec=hevc 1920x960
[Demuxer]   stream[1] type=audio codec=eac3 0x0
[Demuxer]   stream[2] type=audio codec=eac3 0x0
[Demuxer]   stream[3] type=subtitle codec=subrip 0x0
[Demuxer]   stream[4] type=subtitle codec=subrip 0x0
[Demuxer]   stream[5] type=subtitle codec=subrip 0x0
[Demuxer]   stream[6] type=subtitle codec=subrip 0x0
[AetherEngine] load url=https://176-150-1-241.71b6473d293c4f9c9de6b52d631975be.plex.direct:18070/library/parts/2668/1760445023/file.mkv?X-Plex-Token=B-6mVzK4y-yBBy8cu8ZJ source-format=sdr effective-format=sdr rate=23.976
[VTProbe] codec=av01 hwSupported=false
<<<< VT-DS >>>> signalled err=-12906 at <>:2615
[VTProbe] canHardwareDecode codec=173 1920x960 -> false (status=-12906)
[AetherEngine] codec=173 not hardware-decodable by VideoToolbox; routing to the software path so it plays instead of a black screen (#2)
[AetherEngine] dispatch: codec=173 → software
[AetherEngine] renderer audio session active: sourceCh=6 maxChannels=2 preferred=2 output=2
[SWHost] session start: videoCodecID=173 audioCodecID=86056 duration=3935.5s
<<<< VT-DS >>>> signalled err=-12906 at <>:2615
[VTProbe] canHardwareDecode codec=173 1920x960 -> false (status=-12906)
[SWDecoder] Opened: 1920x960, codec=hevc, threads=12, 8-bit
[AudioDecoder] Opened: 48000Hz, 6ch, codec=eac3
[AVIOReader] pump conn gen=1 ended with error: cancelled
[AVIOReader] pump conn start gen=2 offset=1537362335 len=0MB
[AVIOReader] pump gen=2 first data after 20ms
[AVIOReader] pump conn start gen=3 offset=421244446 len=32MB
[AVIOReader] pump gen=3 first data after 3ms
[AetherEngine] #250 subtitle-resolution loadGen=1 seekGen=0 stream=4 coveredFrom=-15.00 retainedFrom=-15.00 resolvedThrough=-15.00 via=pump decodedThrough=-15.00 reason=reconstruction
[AetherEngine] overlay fed by packet-store drainer for stream=4 (backfilled 0 cues)
[AVIOReader] prefetch tail prefetch issued bytes=-65536
[AVIOReader] prefetch conn start gen=1 offset=0 len=32MB
[AudioDecoder] Resampler ready: 48000Hz, 6ch, inFmt=8
[AVIOReader] prefetch tail prefetch installed 65536B at 1537384026 after 27ms
[AVIOReader] File size: 1537449562 bytes (data connection)
[AVIOReader] prefetch gen=1 first data after 36ms
       LoudnessManager.mm:1755  ReadPListFile: unable to open stream for LoudnessManager plist
       LoudnessManager.mm:1261  GetHardwarePlatformKey: cannot get acoustic ID
       LoudnessManager.mm:1215  IsHardwareSupported: no plist loaded, returning false
       LoudnessManager.mm:1215  IsHardwareSupported: no plist loaded, returning false
[AudioOutput] first enqueue: 48000.0Hz 6ch, 1536 samples, renderer.error=nil
[AudioOutput] seekClock to=1165.288 rate=1.0
[AVIOReader] prefetch tail prefetch served the read at 1537446502; no reconnect for it
[Demuxer] Opened: 7 streams, duration=3935456000 us
[Demuxer]   stream[0] type=video codec=hevc 1920x960
[Demuxer]   stream[1] type=audio codec=eac3 0x0
[Demuxer]   stream[2] type=audio codec=eac3 0x0
[Demuxer]   stream[3] type=subtitle codec=subrip 0x0
[Demuxer]   stream[4] type=subtitle codec=subrip 0x0
[Demuxer]   stream[5] type=subtitle codec=subrip 0x0
[Demuxer]   stream[6] type=subtitle codec=subrip 0x0
[AVIOReader] prefetch conn gen=1 ended with error: cancelled
[AVIOReader] prefetch conn start gen=2 offset=1537362335 len=0MB
[SWHost] first video frame enqueued: pixfmt=0x34323076 size=1920x960 pts=1165.289s
[Renderer] enqueue #1: status=rendering ready=true error=nil
[AVIOReader] prefetch gen=2 first data after 50ms
[AetherEngine] #151 forward prefetch started: streams=[3, 4, 5, 6] pacing=0 anchor=3 startAt=0.00s lead=60.0s
[AVIOReader] detour fill block=9 offset=37748736 size=4194304 (resident=1)
[AVIOReader] prefetch conn start gen=3 offset=40633693 len=32MB
[AVIOReader] prefetch gen=3 first data after 4ms
[AetherEngine] #250 subtitle-resolution loadGen=1 seekGen=0 stream=4 coveredFrom=1150.57 retainedFrom=1150.57 resolvedThrough=none via=prefetch decodedThrough=1150.57 reason=reconstruction
[AetherEngine] #151 forward prefetch re-anchored in place at 1165.57s (seek)
[AVIOReader] prefetch conn start gen=4 offset=281730603 len=32MB
[AVIOReader] prefetch gen=4 first data after 6ms
[matroska,webm @ 0x106204520] [error] File is broken, keyframes not correctly marked!
[AVIOReader] prefetch conn start gen=5 offset=315285035 len=32MB
[AVIOReader] prefetch gen=5 first data after 6ms
[AVIOReader] prefetch conn start gen=6 offset=348839467 len=32MB
[AVIOReader] prefetch gen=6 first data after 6ms
[Renderer] enqueue #30: status=rendering ready=false error=nil
[AVIOReader] prefetch conn start gen=7 offset=382393899 len=32MB
[AVIOReader] prefetch gen=7 first data after 6ms
[AVIOReader] prefetch conn start gen=8 offset=415948331 len=32MB
[AVIOReader] prefetch gen=8 first data after 6ms
[applySubtitleEvent #1] cueStart=1157.781s cueEnd=1158.824s engine.currentTime=1167.072s
[applySubtitleEvent #2] cueStart=1178.927s cueEnd=1180.095s engine.currentTime=1167.072s
[applySubtitleEvent #3] cueStart=1193.150s cueEnd=1194.234s engine.currentTime=1167.072s
[applySubtitleEvent #4] cueStart=1201.950s cueEnd=1202.618s engine.currentTime=1167.072s
[applySubtitleEvent #5] cueStart=1220.093s cueEnd=1223.096s engine.currentTime=1167.072s
[applySubtitleEvent #6] cueStart=1223.263s cueEnd=1225.265s engine.currentTime=1167.072s
[applySubtitleEvent #7] cueStart=1225.432s cueEnd=1228.185s engine.currentTime=1167.072s
[AVIOReader] prefetch conn start gen=9 offset=449502763 len=32MB
[AVIOReader] prefetch gen=9 first data after 6ms
[AVIOReader] detour fill block=106 offset=444596224 size=4194304 (resident=2)
[Renderer] isReadyForMoreMediaData=false at enqueue #86 status=rendering
[applySubtitleEvent #8] cueStart=1228.352s cueEnd=1229.853s engine.currentTime=1168.572s
[Renderer] enqueue #100: status=rendering ready=false error=nil
[AVIOReader] File size: 1537449562 bytes (Range probe)
[Demuxer] Opened: 7 streams, duration=3935456000 us
[Demuxer]   stream[0] type=video codec=hevc 1920x960
[Demuxer]   stream[1] type=audio codec=eac3 0x0
[Demuxer]   stream[2] type=audio codec=eac3 0x0
[Demuxer]   stream[3] type=subtitle codec=subrip 0x0
[Demuxer]   stream[4] type=subtitle codec=subrip 0x0
[Demuxer]   stream[5] type=subtitle codec=subrip 0x0
[Demuxer]   stream[6] type=subtitle codec=subrip 0x0
[FrameDecode] Opened 1920x960 codec=hevc threads=2
[FrameExtractor] miss mode=thumbnail t=2150.00s took=113ms bytes=3236015 reopened=y image=ok cancelled=n
[AetherEngine] seek#1 programmatic began target=2432.97
[AetherEngine] seek#1 programmatic superseded target=2432.97
[AetherEngine] seek#2 programmatic began target=2432.97
[AudioOutput] seekClock to=2432.973 rate=0.0
[AetherEngine] seek#2 programmatic landed rendered=2432.97 target=2432.97
[AetherEngine] #250 subtitle-resolution loadGen=1 seekGen=2 stream=4 coveredFrom=2417.97 retainedFrom=2417.97 resolvedThrough=2417.97 via=pump decodedThrough=2417.97 reason=reconstruction
[AVIOReader] detour fill block=107 offset=448790528 size=4194304 (resident=3)
[AetherEngine] #151 forward prefetch re-anchored in place at 2432.97s (seek)
[AVIOReader] detour fill block=67 offset=281018368 size=4194304 (resident=4)
[AVIOReader] detour fill block=68 offset=285212672 size=4194304 (resident=5)
[AVIOReader] detour fill block=69 offset=289406976 size=4194304 (resident=6)
[AVIOReader] prefetch conn gen=9 ended with error: cancelled
[AVIOReader] prefetch conn start gen=10 offset=290119211 len=32MB
[AVIOReader] prefetch gen=10 first data after 18ms
[AVIOReader] prefetch conn start gen=11 offset=323673643 len=32MB
[AVIOReader] prefetch gen=11 first data after 6ms
[AetherEngine] #250 subtitle-resolution loadGen=1 seekGen=2 stream=4 coveredFrom=2417.97 retainedFrom=2417.97 resolvedThrough=none via=prefetch decodedThrough=2417.97 reason=frontier
[AVIOReader] prefetch conn start gen=12 offset=357228075 len=32MB
[AVIOReader] prefetch gen=12 first data after 6ms
[AVIOReader] prefetch conn start gen=13 offset=390782507 len=32MB
[AVIOReader] prefetch gen=13 first data after 6ms
[AVIOReader] prefetch conn start gen=14 offset=424336939 len=32MB
[AVIOReader] prefetch gen=14 first data after 6ms
[AVIOReader] prefetch conn start gen=15 offset=457891371 len=32MB
[AVIOReader] prefetch gen=15 first data after 6ms
[AudioOutput] pause at t=2432.973
[AVIOReader] prefetch conn start gen=16 offset=491445803 len=32MB
[AVIOReader] prefetch gen=16 first data after 7ms
[AVIOReader] prefetch conn start gen=17 offset=525000235 len=32MB
[AVIOReader] prefetch gen=17 first data after 8ms
[AVIOReader] prefetch conn start gen=18 offset=558554667 len=32MB
[AVIOReader] prefetch gen=18 first data after 6ms
[AudioOutput] setRate 1.0 at t=2432.973
[AVIOReader] pump conn gen=3 ended with error: cancelled
[AVIOReader] pump conn start gen=4 offset=1155485864 len=32MB
[AVIOReader] pump gen=4 first data after 91ms
       LoudnessManager.mm:1215  IsHardwareSupported: no plist loaded, returning false
       LoudnessManager.mm:1215  IsHardwareSupported: no plist loaded, returning false
[AVIOReader] prefetch conn start gen=19 offset=592109099 len=32MB
[AVIOReader] prefetch gen=19 first data after 8ms
[AVIOReader] prefetch conn start gen=20 offset=625663531 len=32MB
[AVIOReader] prefetch gen=20 first data after 13ms
[AVIOReader] prefetch conn start gen=21 offset=659217963 len=32MB
[AVIOReader] prefetch gen=21 first data after 8ms
[AVIOReader] prefetch conn start gen=22 offset=692772395 len=32MB
[AVIOReader] prefetch gen=22 first data after 6ms
[AVIOReader] prefetch conn start gen=23 offset=726326827 len=32MB
[AVIOReader] prefetch gen=23 first data after 6ms
[AVIOReader] prefetch conn start gen=24 offset=759881259 len=32MB
[AVIOReader] prefetch gen=24 first data after 7ms
[AVIOReader] prefetch conn start gen=25 offset=793435691 len=32MB
[AVIOReader] prefetch gen=25 first data after 6ms
[applySubtitleEvent #9] cueStart=2436.183s cueEnd=2438.060s engine.currentTime=2435.256s

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions