Skip to content

Commit 1d948ac

Browse files
chore(release): prep 4.5.5 — bound subtitle side-demuxer open on remote discs (#76)
README pin references 4.5.4 → 4.5.5; CHANGELOG [4.5.5] entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XZTEfmztPE8hAdjHdBr9BH
1 parent 577798c commit 1d948ac

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ the public-API contract.
1010

1111
## [Unreleased]
1212

13+
## [4.5.5] — 2026-06-27
14+
15+
### Fixed
16+
17+
- **Selecting an embedded subtitle on a network ISO (Blu-ray / DVD over http) never showed cues, while the same disc worked from a local ISO (#76).** The embedded subtitle side-demuxer logged `embedded subtitle reader exited (cancelled=true) packetsRead=0`: it was superseded by a seek / title switch / re-select before it read a single packet. The open was glacially slow on a remote disc. It re-opened with the full 50 MB / 60 s probe, and the disc's sparse `hdmv_pgs_subtitle` streams never resolve codec parameters, so `find_stream_info` read to the full 50 MB over http chasing them (the #75 pattern). It then ran the MKV cue-index prewarm seek (`duration × 0.5`), a cold range read to the middle of a 32 GB ISO that buys nothing for a concat MPEG-TS / VOB disc. Together the open ran tens of seconds; locally both are instant, so it only failed over http. `EmbeddedSubtitleDecoder` needs only codec id / type (carried in the container header / MPEG-TS PMT and resolved by the open itself) and seeds bitmap canvas dims from the source video size, so the full chase is pure cost. The side-demuxer now caps its probe to 4 MB / 5 s (honouring an even tighter caller budget), skips the cue-index prewarm seek for disc sources, and opens the same BD/DVD title the user is watching rather than always title 0. Applied to both the inline reader and the native multi-decode (#55) reader. Reported by the AetherPlayer community.
18+
19+
([release notes](https://github.com/superuser404notfound/AetherEngine/releases/tag/4.5.5))
20+
1321
## [4.5.4] — 2026-06-26
1422

1523
### Fixed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ Subtitle cues land in raw source PTS; render the overlay against `player.sourceT
152152
Install via Swift Package Manager:
153153

154154
```swift
155-
.package(url: "https://github.com/superuser404notfound/AetherEngine", from: "4.5.4")
155+
.package(url: "https://github.com/superuser404notfound/AetherEngine", from: "4.5.5")
156156
```
157157

158158
Two complementary samples ship in `Examples/`:
@@ -275,10 +275,10 @@ Browse all of this as a searchable site at **[aetherengine.superuser404.de](http
275275
AetherEngine uses [Semantic Versioning](https://semver.org). The public API surface — every `public` declaration in `Sources/AetherEngine/` — is the stability contract. **Major** removes / renames public symbols or breaks adopters; **Minor** adds public API or codec / format support; **Patch** fixes bugs with no public API change. `internal` types are not part of the contract.
276276

277277
```swift
278-
.package(url: "https://github.com/superuser404notfound/AetherEngine", from: "4.5.4")
278+
.package(url: "https://github.com/superuser404notfound/AetherEngine", from: "4.5.5")
279279
```
280280

281-
Pin to `.upToNextMinor(from: "4.5.4")` for stricter teams that prefer to opt into minor bumps explicitly.
281+
Pin to `.upToNextMinor(from: "4.5.5")` for stricter teams that prefer to opt into minor bumps explicitly.
282282

283283
## Requirements
284284

0 commit comments

Comments
 (0)