PrismCore / API reference / Dolby Vision

Structure

DolbyVisionConversionStats

struct DolbyVisionConversionStats

Declared in Sources/PrismCore/DolbyVision/DolbyVisionRPUConverter.swift · PrismCore 3.5.4

What a Profile 7 → 8.1 conversion did over the course of a session.

Exposed because "did it work" has no other observable answer: a P7 source whose RPUs all failed to convert still plays — as plain HDR10 — so the only other symptom is a viewer reporting that Dolby Vision never engaged.

Initializers

init(convertedRPUs: Int, failedRPUs: Int, droppedEnhancementLayerNALs: Int, staleUnconvertedPackets: Int = 0)

staleUnconvertedPackets defaults so that 2.0.x stays source compatible for anyone constructing this.

Instance properties

let convertedRPUs: Int

RPU NALs rewritten into single-layer 8.1 form.

let failedRPUs: Int

RPU NALs libdovi refused. DROPPED, not left in place (which is what this said, and did, before 2.0.1): a stale Profile 7 RPU inside a container declaring profile 8 is the same mismatch that made a P7 title play black. A non-zero count here means the 8.1 declaration stopped describing every frame, which is worth a host's log line.

let droppedEnhancementLayerNALs: Int

Enhancement-layer NALs dropped — the other half of making a dual-layer stream single-layer.

let staleUnconvertedPackets: Int

Packets the converter decided to rewrite and could not — the packet did not frame, or the output buffer could not be allocated — so the demuxer's original bytes went out with their enhancement layer and their unconverted RPU intact, inside a stream declared single-layer 8.1.

Counted separately because the tallies above deliberately no longer include that work: they are committed only once a rewrite has landed. Anything here is the black-screen mismatch on a rarer path.

var isClean: Bool { get }

Every RPU converted, none refused, and the enhancement layer actually gone.

The EL clause is not belt-and-braces: a dual-layer source reporting zero dropped EL NALs is precisely the state that hid the unspec63 bug for as long as it did — the conversion looked clean while the stream still carried the layer its own dvvC said was absent. If this can read clean in that state again, nothing will report it but a viewer with a black screen.

Generated from the public symbols of PrismCore 3.5.4. All types