PrismCore / API reference / Probing and input

Structure

SourceInfo

struct SourceInfo

Declared in Sources/PrismCore/Probe/SourceProbe.swift · PrismCore 3.5.4

Everything Aether's engine routing needs to decide PrismCore vs Prism, and everything MasterPlaylistBuilder needs to sign the manifest — read in one libavformat open.

Initializers

init(formatName: String, duration: Double?, video: VideoTrackInfo?, audioTracks: [AudioTrackInfo], subtitleTracks: [SubtitleTrackInfo] = [], chapters: [ChapterInfo] = [], hdr10Plus: HDR10PlusFinding? = nil)

Explicit so subtitleTracks (and later chapters, hdr10Plus) could be added without breaking callers that predate them.

Instance properties

let formatName: String

No documentation comment in the source.

let duration: Double?

Source duration in seconds; nil when the container doesn't know (some live ingests).

let video: VideoTrackInfo?

No documentation comment in the source.

let audioTracks: [AudioTrackInfo]

No documentation comment in the source.

let subtitleTracks: [SubtitleTrackInfo]

Every subtitle stream, text and bitmap alike — the bitmap ones are reported precisely because PrismCore does not carry them (phase 6), and the host has to know they exist to offer them in its own overlay.

let chapters: [ChapterInfo]

The container's chapter marks, in start order. Empty for a source without them — most containers — never nil.

let hdr10Plus: HDR10PlusFinding?

What a bounded read of the video bitstream said about HDR10+ (ST 2094-40) metadata. nil when nobody asked — the default, because asking costs packet reads (see HDR10PlusScan) — and when there is no video track to ask about. Reporting only: nothing in the playlist or the display criteria reads it.

var textSubtitleTracks: [SubtitleTrackInfo] { get }

Text subtitle tracks PrismCore turns into WebVTT renditions.

var bitmapSubtitleTracks: [SubtitleTrackInfo] { get }

Bitmap subtitle tracks the host has to render itself.

var nativeReadiness: StreamCopyability { get }

The single question the router asks: can PrismCore take this source today?

.streamCopy when video and at least one audio track copy as-is, .requiresAudioBridge when video copies but every audio track needs the phase-3 encoder, .unsupported when the video itself can't ride the pipeline (VP9, MPEG-2, …).

var preferredCopyableAudioTrack: AudioTrackInfo? { get }

The first stream-copyable audio track, i.e. the one the v0 remuxer would pick (an AC3 compat track beats a DTS main track).

Generated from the public symbols of PrismCore 3.5.4. All types