Skip to content

7.21.0 - The stream format a stats panel needs

Choose a tag to compare

@superuser404notfound superuser404notfound released this 27 Sep 17:16
· 11 commits to main since this release

A minor release with additive public API for a host's stats panel. No behaviour change on any playback route.

Added

  • sourceVideoStreamFormat and SourceProbe.videoStreamFormat. A VideoStreamFormat with the source video stream's pixelFormat (yuv420p10le), bitDepth, colorPrimaries, transfer, matrix, range and profile (Main 10), in libav's names as the container and the probe's decoder declared them. colorPrimariesLabel, transferLabel, matrixLabel and rangeLabel give the names a viewer reads ("BT.2020", "PQ (SMPTE ST 2084)", "BT.2020 NCL", "Limited"). A field the stream leaves unspecified stays nil instead of reading as BT.709. (#658)
  • decodedVideoFormat. A DecodedVideoFormat: what the engine's own decoder actually produced (frame, a VideoStreamFormat) and the CoreVideo buffer it was displayed from (pixelBufferFormat, 420v / x420, with pixelBufferLabel reading "P010 (x420)"). It is republished when either changes mid-stream. It is nil on every native route by design: AVPlayer decodes there and no frame passes through the engine, so a panel should show sourceVideoStreamFormat and name AVPlayer as the decoder rather than infer a pixel format nobody observed. (#658)
  • TrackInfo audio detail. sampleRate, bitsPerSample (0 where the codec has no fixed depth: AAC, AC-3, E-AC-3 and Opus decode to float), sampleFormat (fltp, s32), channelLayout (5.1(side)) and profile. The profile is where DTS:X ("DTS-HD MA + DTS:X") and TrueHD Atmos ("Dolby TrueHD + Dolby Atmos") show up; isAtmos still covers E-AC-3 JOC only. All new initializer parameters have defaults, so existing call sites compile unchanged. (#658)

Tooling

  • aetherctl probe prints the pixel format, depth, profile and colour description of the video stream, and rate, depth, sample format, layout and profile per audio track.
  • aetherctl play prints a DECODED line whenever decodedVideoFormat changes: DECODED yuv420p depth=8 ... -> NV12 (420v) on a VP9 source (software route), nothing on an HEVC source (loopback route).

Full changelog: CHANGELOG.md · 7.20.1...7.21.0