Skip to content

6.7.0 - the software path says how much cushion it had, and a custom reader can decline the disc probe

Latest

Choose a tag to compare

@superuser404notfound superuser404notfound released this 04 Aug 09:58

One new opt-in on the IOReader protocol, which is why this is a minor rather than a patch, plus the telemetry that #295 turned out to need. Drop-in from 6.6.4.

Added

  • IOReader.discImageProbeEnabled, so an ordinary custom reader can skip ISO/UDF recognition. Every custom reader entered disc recognition before its container hint was applied, which on a remote source is sparse reads at the ISO9660 and UDF signature offsets for a file the caller already knows is not a disc image, repeated whenever playback opens an independent reader for subtitles or frame extraction. The property defaults to true, so existing conformers and raw ISO/UDF sources keep automatic DVD and Blu-ray support, and SMBIOReader takes it in its initialiser and preserves it across independent readers.

    A URL source gates this on the path extension (iso, img, udf). A custom source has no path to gate on, so an explicit fact from the caller is the only reliable signal, which is what this adds. Contributed by @murderer1234 in #301.

  • The software path reports its read-ahead, and what the display did with it. A software session left a field trace with no cushion figure anywhere in it, which is what made #295 hard to place: a blocked read reached the picture and no number said whether the buffer had 40 ms or 2 s. Three signals looked like they answered it and did not. frameAhead is the #49 producer-shift fold on the native path and reads 0 here by construction. bufferedSessionTime is fed only on live sessions, so a VOD software session published its own playhead back as its frontier. The isReadyForMoreMediaData=false line is latched to one per session and marks the first fill, not a sustained one.

    The memprobe now carries swAhead= (seconds of decoded video queued ahead of the clock), plus swDropped= and swDelay= from AVSampleBufferVideoRenderer own metrics, which count frames dropped for missing their display deadline: the class our own counters cannot see. On a native session the fields are absent rather than zero.

    swFrames=753 swAhead=0.26s swDropped=187/749 swDelay=0.00s ... frameAhead=0.00s
    

    Measurement only (#303). No floor and no target depth: whether this path holds too little is unproven, and with the #295 mechanism removed it is unknown whether anything is left to fix. The number comes first.

Changed

  • bufferedPosition on a VOD software session reports the decoded cushion instead of the playhead. The AetherEngine#54 contract is unchanged, it still never trails the playhead, and the live frontier still wins where it is larger. What changes is that the VOD software case stops publishing a frontier that was only ever a placeholder.

Upgrading

No source change on the consumer side. A host that draws a buffer bar will see it move on software VOD sessions where it previously sat on the playhead.