Repository navigation
7.57.0 - TrueHD and DTS:X built from their own bed, object audio mixes no element signal
Added
-
Hosts can observe the selected secondary subtitle identity.
activeSecondarySubtitleTrackIndexand its publisher report embedded and registered external
track IDs across selection, clearing and rebuild restoration. One-shot URL selections have no
ID. A registered external ID publishes when its decoded replacement commits, so it always
names the cues on screen. The same track may still be selected in both channels. -
Hosts can opt out of background scrub-still generation.
LoadOptions.generatesBackgroundScrubPreviewscontrols the idle sparse
scrub-still ladder and its side reader. It defaults to true, is correctable by reload,
and leaves I-frame playlists, on-demand snapshots and item-swap held pictures unchanged. -
Hosts can read Dolby Vision base-layer source capabilities.
sourceDVBLCompatIDand
sourceDolbyVisionBaseLayerPresentableexpose the engine's existing probe results read-only,
so a host can offer a source-appropriate choice without inferring it from the profile alone.
They describe the source, not the display's output; routing and reload refusal are unchanged.
Changed
-
TrueHD Atmos is built from the stream's own lossless 7.1, steered by its objects (AE#731).
With theTrueHDObjectAudiotrait,objectAudioRenderingno longer decodes the object presentation
exactly and mixes its objects.BedRegressionbuilds every output as a per-band linear combination
of the stream's channel presentation (Dolby's lossless 7.1 or 5.1),W = R · A, withAthe
regression of the object presentation on the bed andRthe elements' layout gains; the elements
are decoded without matrix interpolation and used only as statistics, every element is a point source
(size, snap, zones, screen anchoring and the elevation switch are no longer read) and metadata updates
apply without a ramp. A per-band energy bound (0.9 to 1.6 times the bed) keeps an element the decode
got wrong from adding energy. Against the exact render on ten films and Dolby's Unfold the heights
stayed within 0.15 dB at a correlation of 0.997 and above on all but two extreme windows, and an A/B
on an Apple TV into a Sonos Arc heard no difference. Needs LibTrueHD 3.2.0, whose binary leaves
the interpolating decode out. The latency is 2048 frames, kept off the timeline. -
DTS:X is built from its own bed, steered by its heights. With the
DTSXObjectAudiotrait the
heights are no longer subtracted from the 7.1 bed and played as channels of their own. The decoder
hands over the bed as coded, the heights still folded into it, andBedRegressionbuilds every
output from that bed in a new fold mode,W = D + (R − D · F) · A: the bed on its own speakers, and
each height moving the part of the bed the regression attributes to it from the speaker it is folded
into to its own. The heights are statistics only. Against the exact separation on 21 windows of
seven DTS:X films the heights stayed within 0.14 dB at a correlation of 0.994 and above wherever
they carry 0.3 % of the energy or more, 29 to 49 dB overall. Folded beds use an energy bound of 0.5
to 2.5 times the bed. Needs FFmpegBuild 3.13.0, whosex_heightsno longer subtracts the fold. -
Object audio can no longer mix an element signal into an output. The object renderer is now
ObjectAudioPlacement: it keeps each element's gains towards the layout from its metadata and
mixes no audio, and metadata ramps are gone with it (updates already applied as jumps). A block
that arrives without its bed plays as silence, for every decoder; the path that panned element
signals onto the speakers, which neither the TrueHD nor the DTS:X decoder reached any more, is
removed from the build.
Fixed
-
WMV1/2 software packet caches retain continuous presentation coverage. Their I/P-only
streams use the existing successor-PTS model with depth one, avoiding millisecond holes
from rounded Matroska durations. Disk and memory stores share the qualification; missing/late
PTS and genuine discontinuities remain conservative, and the last frame has no invented end.
WMV3 and other codec qualifications are unchanged. -
Failed external secondary-subtitle replacement preserves the active track.
Previously the old track was torn down before the candidate could decode. Preparation now
completes before replacing it; decode or bitmap-decoder creation failure leaves the old cues,
ASS header, identity and bitmap packet source intact. Rebuilds preserve a pending pick.
Only a current successful candidate commits. Clearing/stopping still releases immediately;
one-shot URL selection is unchanged. -
A fabricated Range verdict is visible before its failed read returns. Record the origin
before waking the reader, so immediate error classification and the VOD no-revive decision
cannot race transfer cleanup. Cancellation and origin-ticket release remain outside the
reader's window lock; Range detection and retry policy are unchanged. -
A pause made in AVKit's own controls now survives a reload. On tvOS the transport bar calls
pause()andplay()straight on theAVPlayer, past the native host, so its play intent stayed
true under a viewer's pause. Every path gated on it then restarted the paused title: the
item-death reload, the media-playlist fallback, the interruption-ended resume and the session
rebuild. The host now mirrorsAVPlayer.rateDidChangeNotificationwhen the reason is
setRateCalledand the current item is ready to play, reading the live rate; any other or
missing reason, and any rate write while an item is still loading, leaves the intent alone. -
A paused software session shows its picture after a rebuild or a paused mount (#973). The
software host started decoding only onplay(), so aloadwithautoplay = falseand every
rebuild of a paused session (setAudioShaping,setAudioDelay,reloadAtCurrentPosition, which
all mount paused) stopped atstartup 7/8 readywithhasFirstFrameReadyForDisplayfalse until
the viewer pressed play. The mount now pauses the host, and a pause of a loaded host that never
played decodes the frame at the playhead under the stopped clock (the Sodalite#104 hold).