Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
223 commits
Select commit Hold shift + click to select a range
2986230
feat(disc): play a DVD-Video VIDEO_TS folder over HTTP
yipengfei329 Oct 13, 2026
3bf8acc
fix(cache): publish retained software VOD resident ranges
orut34iop Oct 13, 2026
761b031
fix(cache): use upstream blocking executor for residency sampling
orut34iop Oct 13, 2026
4a5eae0
test(cache): guard residency sampling executor
orut34iop Oct 13, 2026
02e1f02
fix(demux): repair variable-cadence H264 heads and hierarchical parti…
orut34iop Oct 13, 2026
b76b115
fix(demux): reconstruct clamped Matroska H264 timestamps
oxyc Oct 13, 2026
523b904
docs(changelog): note Matroska H264 cadence repair
oxyc Oct 13, 2026
93d2be8
feat(dovi): Metal FEL composer and Dolby Vision display metadata (not…
pkajaba Oct 7, 2026
36c28ec
feat(dovi): picture-order pairing and delivery building blocks for th…
pkajaba Oct 7, 2026
bf5716c
fix(dovi): refuse hostile RPUs before libdovi can abort the process
pkajaba Oct 7, 2026
242a12f
feat(renderer): bounded video look-ahead gate and display-order PTS f…
pkajaba Oct 7, 2026
cf93b6a
fix(io): the VOD packet cache covers audio packets that carry no dura…
pkajaba Oct 13, 2026
936f8b2
fix(tvos): keep the software VOD packet cache in purgeable memory
pkajaba Oct 13, 2026
e1d3285
feat(dovi): dual-layer Profile 7 FEL decoder (not routed)
pkajaba Oct 7, 2026
f31b67c
feat(dovi): route Profile 7 FEL to the dual-layer decoder behind pref…
pkajaba Oct 7, 2026
73955ad
feat(probes): Dolby Vision pulse test (clip generator, tvOS host, fil…
pkajaba Oct 7, 2026
8c954fb
feat(aetherctl): FEL playback, survey and diagnostics tooling
pkajaba Oct 7, 2026
ef2a130
fix(errors): a refused live join says so, instead of reading as an un…
jpsts Oct 13, 2026
c886baf
fix(live): the HLS ingest rides out an origin's refusals instead of e…
jpsts Oct 13, 2026
7acbf23
fix(airplay): a live session on the HLS ingest moves to the receiver …
jpsts Oct 14, 2026
a905385
fix(software): preserve valid residency and honor bounded positioning…
orut34iop Oct 14, 2026
4b96166
Merge PR #756 'feat/dvd-video-ts-folder': play a DVD-Video VIDEO_TS f…
superuser404notfound Oct 14, 2026
383bad3
fix(disc): a folder with both BDMV and VIDEO_TS plays its Blu-ray title
Oct 14, 2026
ac6b5f7
fix(playback): report the software host's actual video decoder
andreencar Oct 13, 2026
d1af20f
Merge pull request #760 from andreencar/fix/753-active-video-decoder
superuser404notfound Oct 14, 2026
b18699d
Merge pull request #761 from orut34iop/codex/fix-h264-missing-head-ca…
Oct 14, 2026
249bfe2
fix(demux): keep non-video order across the missing-head handover (#761)
Oct 14, 2026
8b976ab
Merge pull request #762 from oxyc/fix/matroska-h264-frame-cadence
Oct 14, 2026
a65688e
fix(demux): refuse a CFR reconstruction that presents before it decod…
Oct 14, 2026
3d4562e
fix(renderer): hand FEL frames over in arrival order with a minimum-u…
pkajaba Oct 13, 2026
e13aa27
fix(dovi): preroll the FEL route before the clock starts, and start i…
pkajaba Oct 13, 2026
4e4cc98
chore(dovi): composer logs: periodic GPU timing at verbose
pkajaba Oct 14, 2026
5fb3636
chore(dovi): composer logs a repeated command buffer error once
pkajaba Oct 14, 2026
31c1142
Merge fel2/3-composer into fel2/4-decoder-parts (log cleanup)
pkajaba Oct 14, 2026
783b9ca
Merge fel2/4-decoder-parts into fel2/5-decoder (log cleanup)
pkajaba Oct 14, 2026
b87b0e8
Merge fel2/5-decoder into fel2/6-route (log cleanup)
pkajaba Oct 14, 2026
ab6d3f1
Merge fel2/6-route into fel2/7-pulse-probe (log cleanup)
pkajaba Oct 14, 2026
cc2f7c2
chore(dovi): dual-layer decoder logs: one prefix, readable phrases, 1…
pkajaba Oct 14, 2026
83001da
chore(dovi): docs: the per-second summary and GPU timing are verbose
pkajaba Oct 14, 2026
a4fd0fd
chore(probes): pulse host reads the soak tally from lines that still …
pkajaba Oct 14, 2026
62dabe0
Merge fel2/7-pulse-probe into fel2/8-tooling (log cleanup)
pkajaba Oct 14, 2026
64612ae
Merge fel2/8-tooling into fel2/9-renderer-no-hold (log cleanup)
pkajaba Oct 14, 2026
b2a8474
Merge fel2/9-renderer-no-hold into fel2/10-fel-start (log cleanup)
pkajaba Oct 14, 2026
bde80ba
fix(dovi): deliver the frames still owed at end of stream instead of …
pkajaba Oct 14, 2026
f6bac83
Merge branch 'cloud/fix-fel-eos-drain' into cloud/fix-fel-eos-drain-r…
pkajaba Oct 14, 2026
66cf433
fix(dovi): drain the FEL decoder before the end-of-stream flush
pkajaba Oct 14, 2026
93f3f03
fix(dovi): let the dual-layer decoder report and rebuild invalidated …
pkajaba Oct 14, 2026
488457b
Merge branch 'cloud/fix-fel-session-rebuild' into cloud/fix-fel-sessi…
pkajaba Oct 14, 2026
e625ef9
fix(dovi): recover the FEL route's sessions after the system invalida…
pkajaba Oct 14, 2026
cf80ed5
test(dovi): DEBUG hook that invalidates both FEL sessions, for the AE…
pkajaba Oct 14, 2026
e5f2d35
Merge branch 'cloud/fix-fel-session-rebuild' into cloud/fix-fel-sessi…
pkajaba Oct 14, 2026
fd0fdce
test(dovi): the AE#739 harness hook reaches the FEL route's sessions
pkajaba Oct 14, 2026
dc1f266
fix(iframes): serve tone-mapped Motion JPEG stills for HDR and Dolby …
Oct 14, 2026
e4f4830
fix(dovi): report a dual-layer session loss to the host once, not onc…
pkajaba Oct 14, 2026
0dc926a
Merge branch 'cloud/fix-fel-session-rebuild' into cloud/fix-fel-sessi…
pkajaba Oct 14, 2026
f6fcdbd
fix(iframes): keep the media-playlist fallback when a JPEG rendition …
Oct 14, 2026
476f73c
Merge branch 'feat/ae682-mjpg-iframes'
Oct 14, 2026
49b0d70
test(dovi): leak and memory checks that parallel suites cannot disturb
pkajaba Oct 14, 2026
e945d78
fix(dovi): cap the reshaping prediction at full scale before the resi…
pkajaba Oct 14, 2026
923819f
test(dovi): N3 expects the prediction capped before the residual, as …
pkajaba Oct 14, 2026
67289b2
Merge cloud/flaky-packet-balance into fel2/5-decoder (leak and memory…
pkajaba Oct 14, 2026
deabddd
Merge fel2/5-decoder into fel2/6-route (FEL fixes)
pkajaba Oct 14, 2026
4142992
Merge cloud/fix-fel-session-rebuild-route into fel2/6-route (route dr…
pkajaba Oct 14, 2026
e725deb
feat(audio): put LibTrueHD and LibDTSX behind package traits
williamliu0516 Oct 13, 2026
5b8dc8d
Merge fel2/3-composer into fel2/4-decoder-parts (cap the reshaping pr…
pkajaba Oct 15, 2026
2b0695f
Merge fel2/4-decoder-parts into fel2/5-decoder (cap the reshaping pre…
pkajaba Oct 15, 2026
0fa7862
Merge fel2/5-decoder into fel2/6-route (cap the reshaping prediction …
pkajaba Oct 15, 2026
43f01b5
Merge fel2/6-route into fel2/7-pulse-probe (cap the reshaping predict…
pkajaba Oct 15, 2026
b8e3d8b
Merge fel2/7-pulse-probe into fel2/8-tooling (cap the reshaping predi…
pkajaba Oct 15, 2026
ecaf4c3
Merge fel2/8-tooling into fel2/9-renderer-no-hold (cap the reshaping …
pkajaba Oct 15, 2026
34e9b9c
Merge fel2/9-renderer-no-hold into fel2/10-fel-start (cap the reshapi…
pkajaba Oct 15, 2026
34f4cc7
Merge public fel2/6-route into fel2/6-route (prediction cap landed on…
pkajaba Oct 15, 2026
11c28a5
fix(audio): decode FLAC whose blocks are under CoreMedia's 192-sample…
Oct 15, 2026
10600a5
chore: merge upstream main to restore PR 759 CI
orut34iop Oct 15, 2026
eb91b78
Merge branch 'fix/764-flac-small-blocks'
Oct 15, 2026
cc3ca46
Merge pull request #765 from pkajaba/fel2/1-rpu-guard
superuser404notfound Oct 15, 2026
ec97b90
docs(changelog): file the RPU guard under Unreleased (#765)
Oct 15, 2026
7fe7562
Merge branch 'fix/765-followup'
Oct 15, 2026
96fed93
Merge pull request #766 from pkajaba/fel2/2-renderer-reorder
superuser404notfound Oct 15, 2026
4000a9f
Merge pull request #767 from pkajaba/fel2/3-composer
superuser404notfound Oct 15, 2026
fcc3ea8
fix(dovi): #767 follow-up: P8.1 rewrite skips the header read, pin th…
Oct 15, 2026
bd0c66c
Merge branch 'fix/767-followup'
Oct 15, 2026
069a7a7
test: the #767 Dolby Vision suites run off the cooperative pool
Oct 15, 2026
8bf82c8
Merge branch 'fix/ae711-fixture-off-pool'
Oct 15, 2026
f1ba851
test: the Dolby Vision compute suites share one lane off the pool
Oct 15, 2026
4524b90
Merge branch 'fix/dovi-tests-one-lane'
Oct 15, 2026
beb787c
Merge pull request #768 from pkajaba/fel2/4-decoder-parts
superuser404notfound Oct 15, 2026
f99c574
fix(dovi): #768 follow-up: bounded parameter-set ids, stall guard jum…
Oct 15, 2026
01e2c1d
Merge branch 'fix/768-followup'
Oct 15, 2026
81d02ef
Merge PR #769: dual-layer Profile 7 FEL decoder (not routed)
Oct 15, 2026
af54104
test: keep the #769 suites off the cooperative pool, drop two arrival…
Oct 15, 2026
10e7ca4
Merge origin/main into fel2/6-route-review
pkajaba Oct 15, 2026
495c8a6
fix(decoder): makeBlockBuffer's failure path cannot release the block…
pkajaba Oct 15, 2026
42bc605
refactor(decoder): end-of-stream drain on the pipeline protocol; FEL …
pkajaba Oct 15, 2026
eb4f16f
docs: drop the dolby-vision-fel.md link until #770 adds the page
Oct 15, 2026
533ab98
Merge branch 'fix/769-doc-link'
Oct 15, 2026
48acb61
test(dovi): drop the task-scoped packet balance, unused since main bo…
pkajaba Oct 15, 2026
173b14f
Merge PR #770: route Profile 7 FEL to the dual-layer decoder behind p…
Oct 15, 2026
d3ff33e
fix(dovi): label the dual-layer route as hardware decode, log the no-…
Oct 15, 2026
32c10c7
Merge origin/main: #770 merged, keep main's #760 line
pkajaba Oct 15, 2026
adb554f
docs(changelog): session-loss recovery and end-of-stream drain on the…
pkajaba Oct 15, 2026
6aa1275
test(dovi): bound composeAsync on the GPU slots, not on delivery lag
Oct 15, 2026
419e39b
Merge branch 'fix/compose-async-bound'
Oct 15, 2026
6a3e6df
test: time-limited dual-layer suites leave the one-lane pool
pkajaba Oct 15, 2026
e39fd8d
test: give the dual-layer lane suites a five-minute time limit
Oct 15, 2026
4da2434
Merge branch 'fix/lane-time-limits'
Oct 15, 2026
1269564
Merge pull request #771 from pkajaba/fel2/7-pulse-probe
Oct 15, 2026
104fa4d
fix(probes): pulse server ignores any unparsable Range header
Oct 15, 2026
f8dfe57
Merge pull request #772 from pkajaba/fel2/8-tooling
Oct 15, 2026
5f7df6d
fix(aetherctl): bound the pin test's threshold scan and the --cycle-e…
Oct 15, 2026
476e45d
test(source-open): stop assuming the first open request reaches the wire
Oct 15, 2026
ae7f621
Merge branch 'fix/source-open-test-unsent-first-request'
Oct 15, 2026
89820c6
Merge pull request #773 from pkajaba/fel2/9-renderer-no-hold
Oct 15, 2026
df6dc0f
fix(renderer): keep the arrival-order floor at or below the clock
Oct 15, 2026
01dd560
Merge pull request #774 from pkajaba/fel2/10-fel-start
Oct 15, 2026
66c1459
fix(dovi): open the FEL preroll after an off-grid seek, at 60 fps and…
Oct 15, 2026
9480b14
Merge PR #775: the VOD packet cache covers audio packets that carry n…
Oct 15, 2026
4385445
Merge PR #776: keep the software VOD packet cache in purgeable memory…
Oct 15, 2026
3211d62
fix(swhost): refuse a memory-store cursor before any chunk changes state
Oct 15, 2026
3221fe8
Merge PR #784: FEL route recovers from session loss and drains at end…
Oct 15, 2026
8205d53
fix(video): recover H264 VOD parameter changes through compatible dec…
orut34iop Oct 15, 2026
b5d9a1e
Merge PR #778: the HLS ingest rides out an origin's refusals instead …
Oct 15, 2026
a16ad60
fix(live): only a refusal gets the live ingest's minute of retries (#…
Oct 15, 2026
a8ca9ef
Merge remote-tracking branch 'origin/main' into pr-779
Oct 15, 2026
0785ee5
Merge PR #779 'fix/live-join-refusal-error': a refused live join says…
Oct 15, 2026
f958a04
test: await H264 cold-resume compatibility readiness
orut34iop Oct 15, 2026
c65dc4b
Merge upstream main to resolve changelog conflict for PR 785
orut34iop Oct 15, 2026
05d38f9
Merge PR #780 'fix/airplay-live-route-change': a live session on the …
Oct 15, 2026
1d6c5a0
fix(airplay): the refused-master fallback rejoins a live playlist ins…
Oct 15, 2026
9ccdfd0
fix(demux): a jump back anchors the connection at the landing instead…
Oct 15, 2026
00d48f6
Merge PR #788 'fix/782-restart-reanchors-at-target': a jump back anch…
superuser404notfound Oct 15, 2026
1b2de7a
fix(build): spell out the CFRRewriter initializer for toolchains befo…
Oct 15, 2026
2eb5915
Merge PR #789 'fix/787-cfr-rewriter-init': the CFRRewriter initialize…
superuser404notfound Oct 15, 2026
962fd0a
Merge PR #777 'feat/truehd-trait': LibTrueHD and LibDTSX behind packa…
superuser404notfound Oct 15, 2026
fec79e1
fix(audio): the audio pick skips object audio a build has no decoder …
Oct 15, 2026
236760b
Merge branch 'fix/777-trait-followups': object-audio pick follows the…
Oct 15, 2026
b4ca3cd
fix(hls): declare a BANDWIDTH the densest segment fits under (#783)
Oct 15, 2026
1418256
Merge pull request #790 from superuser404notfound/fix/783-peak-bandwidth
superuser404notfound Oct 15, 2026
20ac6ce
Merge PR #759 'codex/fix-software-vod-resident-ranges': software VOD …
Oct 15, 2026
c7ac32a
fix(software): residency drops history the memory store's kernel recl…
Oct 15, 2026
86f7f18
Merge branch 'fix/759-followups': residency drops reclaimed memory-st…
Oct 15, 2026
210728a
Merge PR #785 'codex/fix-h264-vod-config-change': H.264 VOD parameter…
Oct 15, 2026
72c2ec7
fix(video): judge an H.264 VOD set change by its decoder signature (#…
Oct 15, 2026
7d0c148
Merge branch 'fix/785-sps-decoder-signature': H.264 VOD set changes j…
Oct 15, 2026
7fb6142
fix(audio): give TrueHD a second of access units before calling its d…
Oct 15, 2026
b3edb6b
Merge branch 'fix/786-truehd-silence-threshold': TrueHD gets a second…
Oct 15, 2026
43af24e
feat(engine): replace a live session's request headers without a rebu…
dlev02 Oct 15, 2026
f310def
feat(audio): TrackInfo.isDTSX, from the profile and from LibDTSX's ve…
Oct 15, 2026
eb3a72a
Merge branch 'feat/dtsx-track-flag': TrackInfo.isDTSX from the profil…
Oct 15, 2026
748cbd6
docs(audio): say which sinks take the lossless bridge, from measurement
Oct 15, 2026
d2bdb01
Merge branch 'docs/lossless-route-wording': which sinks take the loss…
Oct 15, 2026
0d81a2c
Merge remote-tracking branch 'origin/main' into pr793
Oct 15, 2026
4768000
Merge PR #793 'feat/792-live-request-headers': replace a live session…
Oct 15, 2026
eb14d79
fix(engine): the session's still extractor follows rotated request he…
Oct 15, 2026
83aefbf
Merge branch 'fix/792-still-extractor-headers': the session's still e…
Oct 15, 2026
5e78a84
feat(engine): a credential refused mid-session is typed, short, and h…
Oct 15, 2026
4f245b8
Merge branch 'feat/792-credential-refusal': a refused credential is t…
Oct 15, 2026
a3db0d7
chore(release): prep 7.37.0 - request headers rotate without a rebuil…
Oct 15, 2026
e1e9ac3
ci(release): build the .dmg on the xcode-27 image CI already uses
Oct 15, 2026
f7f7004
ci(release): take the DemoPlayerMac binary path from SwiftPM
Oct 15, 2026
b78c309
ci(release): build-dmg.sh comes from the workflow's commit, sources f…
Oct 15, 2026
cb3d8be
fix(dovi): sample FEL enhancement chroma co-sited with the base chroma
claude Oct 15, 2026
21c8ef9
docs(changelog): note the FEL chroma siting fix
claude Oct 15, 2026
b32124e
Merge branch 'superuser404notfound:main' into fix/fel-el-chroma-cosited
stoleneggplant Oct 15, 2026
ea1642a
fix(live): a live stream read off its URL rides out an IPTV panel's r…
jpsts Oct 15, 2026
c02ed66
feat(software): a live join starts near the newest media once the con…
jpsts Oct 15, 2026
d35e5df
test(live): judge the live refusal retries by their outcome, not by t…
jpsts Oct 16, 2026
ef603e3
Merge PR #795 'fix/fel-el-chroma-cosited': FEL enhancement chroma is …
superuser404notfound Oct 16, 2026
71013c4
docs(dovi): FEL design doc covers every Apple platform, names the EL …
Oct 16, 2026
0b5a1fd
Merge remote-tracking branch 'upstream/main' into fix/live-url-refusa…
jpsts Oct 16, 2026
70516c3
Merge remote-tracking branch 'upstream/main' into feat/software-live-…
jpsts Oct 16, 2026
54f1443
Merge PR #797 'feat/software-live-join-placement': a software-path li…
superuser404notfound Oct 16, 2026
d3b40be
test: three suites stop asserting on a wall clock or the kernel's mercy
Oct 16, 2026
d6e70e0
Merge branch 'fix/live-header-test-rotation': three flaky suites stop…
Oct 16, 2026
bd5d5fa
fix(software): the live join's placement yields to a seek that landed…
Oct 16, 2026
280f385
Merge branch 'fix/797-live-join-cas': the live join's placement yield…
Oct 16, 2026
eb10eba
Merge pull request #796 from jpsts/fix/live-url-refusal-retries
superuser404notfound Oct 16, 2026
cc71691
fix(live): a live open's server error is asked once more before it fa…
Oct 16, 2026
7a08fcf
Merge branch 'fix/796-live-open-hardening': a live open's server erro…
Oct 16, 2026
4239cd0
chore: clear the Swift 6.4 build warnings
Oct 16, 2026
9f0467b
Merge branch 'chore/warnings': clear the Swift 6.4 build warnings
Oct 16, 2026
ede2539
fix(deps): LibDTSX 2.0.0, a dynamic framework under the LGPL
Oct 16, 2026
5aca553
fix(live): retain the outgoing video tail when audio opens the replay…
Oct 16, 2026
5bbeaac
fix(deps): LibTrueHD 2.3.1, the version string names the truehd commi…
Oct 16, 2026
713c62a
fix(sw): hold the clock until the first frames are queued on every VO…
Oct 16, 2026
80339d2
chore(release): prep 7.38.0 - a software start waits for its first fr…
Oct 16, 2026
9b16ebd
fix(diag): FelResidualMeasure type-checks in time on Xcode 26
Oct 16, 2026
ce1670f
chore(release): prep 7.38.1 - the package compiles in Release with Xc…
Oct 16, 2026
ba44f0c
docs(used-by): add LillyPlayer
superuser404notfound Oct 16, 2026
fc6b412
Merge pull request #804 from superuser404notfound/used-by/issue-801
superuser404notfound Oct 16, 2026
8557ad9
Merge upstream AetherEngine 7.38.1 (fc6b412e) into the Silo fork
claude Oct 16, 2026
6b70178
refactor(audio): compile the object renderer only with an object-audi…
Oct 17, 2026
1e7bcbc
feat: object audio and Profile 7 FEL composition are opt-in traits
Oct 17, 2026
bd54b41
ci: build and test with every optional component enabled
Oct 17, 2026
3672c4c
feat: Dolby Vision still reshaping is the opt-in DolbyVisionStillResh…
Oct 17, 2026
c290e03
refactor(video): compile the dual-layer delivery and display metadata…
Oct 17, 2026
6b97fe9
ci: build the opt-in components for the device SDKs and the strict pool
Oct 17, 2026
1703abe
docs: optional components, the still reshaping trait and how to enabl…
Oct 17, 2026
834f5fd
chore(release): prep 7.39.0 - object audio, Profile 7 FEL and DV P5 s…
Oct 17, 2026
9a2cd71
docs(audio): the channel bridge, not the engine, drops Atmos objects …
aravindhsampath Oct 17, 2026
f2509d8
docs(audio): object audio keeps objects only in a build with its traits
Oct 17, 2026
33f1e93
feat(audio): LiveTelemetry.objectAudio reports the Atmos objects in p…
aravindhsampath Oct 17, 2026
bb35104
fix(relay): admit only http and https origins
Oct 17, 2026
c7eedf7
fix(hls): stream segment bodies on the persistent HTTP/1.1 ingest, no…
Oct 17, 2026
c127d85
fix(hls): review follow-ups for the streamed persistent ingest (#732)
Oct 17, 2026
17215ee
Merge pull request #816 from superuser404notfound/fix/732-streamed-se…
superuser404notfound Oct 17, 2026
099fac0
test(io): reader test knobs are init parameters, not process-wide hooks
Oct 17, 2026
151322d
Merge pull request #817 from superuser404notfound/fix/live-refusal-te…
superuser404notfound Oct 17, 2026
76d7797
feat(audio): TrueHD Atmos from the stream's own channel presentation,…
Oct 18, 2026
f6c51f1
fix(audio): fuller heights from the bed splitter, its LFE on time (#731)
Oct 18, 2026
39c72a5
docs(audio): the TrueHD Atmos bed comes from the channel presentation…
Oct 18, 2026
6292d7a
fix(audio): the bed splitter lowers an output by a third of the gap (…
Oct 18, 2026
7aa4128
fix(audio): the TrueHD path never mixes object signals, takes metadat…
Oct 18, 2026
3e53e7c
fix(audio): the TrueHD reference render is a measurement-only trait (…
Oct 18, 2026
7a07517
docs(changelog): unreleased TrueHD path and the #732 / relay fixes
Oct 18, 2026
aef8fdb
feat: DTS:X in its standard presentation only, one to one into 7.1.4 …
Oct 18, 2026
c1dbd41
chore(release): prep 7.40.0 - TrueHD Atmos from the channel presentat…
Oct 18, 2026
eca55f0
fix(hls): the persistent ingest waits for room between segments, CI f…
Oct 18, 2026
c188533
Merge pull request #836 from superuser404notfound/feat/731-energy-map
superuser404notfound Oct 18, 2026
5e3d85f
fix(audio): read TrueHD Atmos from the major sync when the probe neve…
Oct 18, 2026
4f70cfa
chore(release): prep 7.40.1 - TrueHD Atmos read from the major sync w…
Oct 18, 2026
93d54e5
Merge pull request #838 from superuser404notfound/fix/truehd-late-start
superuser404notfound Oct 18, 2026
898946d
Merge upstream AetherEngine 7.40.1 (93d54e50) into the Silo fork
Quick104 Oct 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 67 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
test-macos:
name: swift test (macOS)
runs-on: xcode-27
timeout-minutes: 30
timeout-minutes: 50
env:
AUTHORIZATION_TEST_SUITES: 'RefreshableHLSAuthorizationTests|RefreshableSubtitleAuthorizationTests|LiveTrustEvaluatorTests'
steps:
Expand Down Expand Up @@ -67,6 +67,21 @@ jobs:
LIBDISPATCH_COOPERATIVE_POOL_STRICT: "1"
run: swift test --skip-build --disable-xctest

# The optional components (TrueHDObjectAudio, DTSXObjectAudio, DualLayerDolbyVision) are off by
# default, so every step above builds and tests without them. This build and run keep the opt-in
# code compiling and its tests running. Steps in this job rather than a job of their own, to stay
# within the account's concurrent macOS runners.
- name: swift build (all traits)
run: swift build --enable-all-traits --build-tests --scratch-path .build-alltraits

- name: swift test (all traits)
run: swift test --enable-all-traits --skip-build --scratch-path .build-alltraits

- name: swift test (all traits, one-thread cooperative pool)
env:
LIBDISPATCH_COOPERATIVE_POOL_STRICT: "1"
run: swift test --enable-all-traits --skip-build --disable-xctest --scratch-path .build-alltraits

- name: Software VOD packet-cache regressions
run: |
bash Scripts/test-software-packet-coverage.sh
Expand All @@ -86,10 +101,19 @@ jobs:
- name: build the transport probe (AE#377)
run: swift build --build-tests --package-path Probes/TransportProbe

# The pulse test's scripts are Python, shell and Swift nobody runs in CI; a syntax error in one is found
# at the television. Compiling them is all that can be checked without a phone recording.
- name: Compile the Dolby Vision pulse scripts
run: |
python3 -m py_compile Probes/DolbyVisionPulse/Scripts/*.py
zsh -n Probes/DolbyVisionPulse/Scripts/build.sh
zsh -n Probes/DolbyVisionPulse/Scripts/run_tv.sh
swiftc -typecheck Probes/DolbyVisionPulse/Scripts/dump_attachments.swift

build-tvos:
name: xcodebuild (tvOS + visionOS Simulator)
runs-on: xcode-27
timeout-minutes: 30
timeout-minutes: 45
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

Expand Down Expand Up @@ -127,6 +151,33 @@ jobs:
-derivedDataPath .build/xcode-probe \
CODE_SIGNING_ALLOWED=NO

# The Dolby Vision pulse host is the other device harness, and the one that links the engine
# itself, so it is also the one that breaks when a public API it uses moves. It plays clips on an
# Apple TV that someone films, runs nowhere in CI, and would otherwise be found out by the person
# who needed a measurement that evening. It links the engine through PulseEngine/, which enables the
# DualLayerDolbyVision trait the host measures. EXCLUDED_ARCHS for the reason given above: an app cannot
# link the x86_64 slice.
- name: Build the Dolby Vision pulse host (Probes/DolbyVisionPulse)
run: |
xcodebuild build \
-project Probes/DolbyVisionPulse/Device/DolbyVisionPulse.xcodeproj \
-scheme DolbyVisionPulse \
-destination 'generic/platform=tvOS Simulator' \
-derivedDataPath .build/xcode-pulse \
EXCLUDED_ARCHS=x86_64 \
CODE_SIGNING_ALLOWED=NO

# xcodebuild has no flag for a package's traits, so the opt-in components reach the device SDKs
# through Probes/AllTraits, a consumer package that enables all of them the way a host does.
- name: Build with every optional component for tvOS
working-directory: Probes/AllTraits
run: |
xcodebuild build \
-scheme AetherEngineAllTraits \
-destination 'generic/platform=tvOS' \
-derivedDataPath ../../.build/xcode-alltraits-tvos \
CODE_SIGNING_ALLOWED=NO

# #344: the package has declared visionOS since 6.0.0 and nothing here compiled for it, so an
# availability list that named tvOS/iOS/macOS and then fell through to `*` broke the visionOS
# build silently. `*` resolves to the declared visionOS floor (1.0), so any API newer than that
Expand All @@ -144,7 +195,7 @@ jobs:
build-ios:
name: xcodebuild (iOS Simulator) + release aetherctl
runs-on: xcode-27
timeout-minutes: 30
timeout-minutes: 45
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

Expand All @@ -165,6 +216,19 @@ jobs:
- name: swift build -c release (aetherctl)
run: swift build -c release --product aetherctl

- name: swift build -c release (aetherctl, all traits)
run: swift build -c release --enable-all-traits --product aetherctl --scratch-path .build-release-alltraits

# See the tvOS job: the opt-in components for the iOS device SDK, through a consumer package.
- name: Build with every optional component for iOS
working-directory: Probes/AllTraits
run: |
xcodebuild build \
-scheme AetherEngineAllTraits \
-destination 'generic/platform=iOS' \
-derivedDataPath ../../.build/xcode-alltraits-ios \
CODE_SIGNING_ALLOWED=NO

# The docs site (aetherengine-website) validates every heading anchor at build time, but it
# lives in another repo and only builds AFTER a push to main, so a broken anchor ships first
# and is found second: `docs/api.md` linked `formats.md#dolby-vision` against a heading that
Expand Down
17 changes: 13 additions & 4 deletions .github/workflows/release-dmg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@ concurrency:
jobs:
build-and-upload:
name: Build + notarize + upload .dmg
runs-on: macos-15
# Same image as ci.yml: macos-15's latest-stable is Xcode 26.3, whose Swift 6.2 timed out
# type-checking FelResidualMeasure and failed the 7.37.0 DMG while CI on Xcode 27 was green.
runs-on: xcode-27
timeout-minutes: 30
steps:
# workflow_dispatch checks out the ref picked in "Use workflow from"
Expand All @@ -56,9 +58,16 @@ jobs:
with:
ref: refs/tags/${{ github.event.release.tag_name || inputs.tag }}

- uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
with:
xcode-version: latest-stable
# The packaging script follows the workflow, not the tag: the sources it builds are the tag's,
# but a re-run for an older tag needs today's script on today's runner (7.37.0's still looked
# for the binary where Swift 6.2 put it).
- name: Packaging script from the workflow's commit
run: |
git fetch --no-tags --depth=1 origin ${{ github.sha }}
git checkout FETCH_HEAD -- Examples/DemoPlayerMac/Scripts/build-dmg.sh

- name: Show toolchain
run: xcodebuild -version

- name: Resolve tag
id: tag
Expand Down
Loading