Repository navigation
·
55 commits
to main
since this release
Fixed
maximumSubtitleOffsetSeconds = 0stops the second download behind embedded subtitles (#1015). Selecting an embedded subtitle on a remote source started the forward prefetch, a second reader that downloads the video bytes again: 243.6 MB against 104.5 MB for a minute of 1080p, MKV and MP4 alike. Its cues only serve an advance offset. A host that declares a reach of 0 now reads subtitles from the main reader alone. The prefetch still runs for a negativesoftwareSubtitleDelaySecondsand the OCR worker, and starts or stops mid-session when either changes. The default (60) keeps today's behaviour.- A declared subtitle offset reach also bounds the bitmap history (#929). Once a host sets
maximumSubtitleOffsetSeconds, bitmap cues that ended more than max(reach, 15 s) behind the playhead are dropped at once instead of being kept up to the 64 MiB budget, since they serve no offset and a seek back re-decodes its own window anyway. With a 4 MB PGS image every 3 s and a reach of 0, a seek back retains 11 images (44.4 MB) instead of 16 (64.5 MB). The default (60, undeclared) keeps the AE#879 budget. - Pluto TV ads have sound on the native path. Pluto muxes audio into its programme segments, stitches video-only ad segments on a new PID into the same variant, and carries the sound of both in its demuxed
AUDIOrendition. The engine played the muxed track, so every ad segment was cut without sound. A live variant that names anAUDIOgroup with a URI now plays that rendition even when its segments carry audio of their own (RFC 8216, and what AVPlayer does); a rendition that cannot be opened falls back to the muxed track. The SSAI video program switch now works with the rendition in use, and the two readers are merged by clock run before timestamp, so the ad is no longer handed out before the end of the programme, including when FFmpeg's wrap correction puts the rendition's clock 2^33 ticks above the video's. The software path has no side-audio merge and still plays such ads silent. - The documentation is rewritten in plain language, and three statements in it were wrong. The README is a short overview now; its content lives in
docs/guide.md,docs/installation.md,docs/features.md,docs/comparison.mdanddocs/licensing.md, and every doc leads with a summary and contents list. The FEL deadline margin is 2 frame intervals (maxFramesInFlight), not 3, and the bypass backstop ismaxDeadlineHoldFrames(6), not 7. A later upscale stage after a remembered MetalFX overrun starts degraded, ML only, rather than with MetalFX.aetherctlhas 29 subcommands, not 28. - A remote Blu-ray ISO no longer starves the demuxer at every range boundary (#1007).
HTTPDiscIOReaderrefilled in serial ranges of up to 8 MiB and handed nothing on until a whole body had arrived, so each boundary showed the demuxer the next request's latency plus its full transfer. On a 61 GB UHD ISO over HTTPS that held the source at 61 to 67 Mb/s against a 104 Mb/s title, with the software host starved and over 2,000 dropped frames in three and a half minutes. Once a read pattern is sequential at the top of the adaptive window, ranges of up to 64 MiB now stream into a FIFO that the demuxer reads from as the bytes arrive, and the next range starts the moment the previous one is complete. The old 8 MiB window is the FIFO's watermark, above which the request is suspended, so memory stays where it was. Disc discovery and random access keep the adaptive reads, a short body resumes at the next byte that has not arrived, and a range that starts anywhere but where it was asked is refused as before. Thanks to @qoli for the measurements and the design. - A refresh-rate switch no longer holds play 1000 ms after its end (AE#950). The margin added in 7.61.1 did not help: the noise it targeted came from tvOS quick switching, where waits of 0, 500 and 1000 ms after
modeSwitchEndmade no reliable difference over about 60 switches each, and with quick switching off no start showed noise without it. A start that changes the panel's rate releases at the end again, about a second sooner. The in-flight restart fix from the same release stays. Thanks to @secunit404 for the measurements.
No API changes. Extended CI and the Xcode 26.3 build are green on the release commit.
Full changelog: 7.62.0...7.62.1