PrismCore / Reference
API reference
Every public type, initializer, property, method and case in PrismCore 3.5.4, with its declaration and documentation comment, generated from the package's symbol graphs.
This reference is generated from the compiler's symbol graphs of the 3.5.4 tag (macOS and tvOS Simulator builds), so every declaration below is exactly what you can call. Every public declaration is covered by PrismCore's Semantic Versioning promise; internal and package symbols are not listed and are not part of the contract.
Types are grouped by the source folder they live in. Members that exist on one platform only are marked — DisplayCriteriaController is the tvOS-only one at the top level. Each entry links to its line in the source on GitHub. Press ⌘K to jump to any symbol by name.
Start with PrismCoreEngine (routing and the one-call open), PrismCoreSession (the remux path) and SoftwarePlaybackPipeline (the software path).
Engine and session
- PlaybackEventSomething the running session noticed that a host can explain to a viewer.
- PrismCoreEngineThe one call that answers *"how do I play this?"* — and hands back something already started.
- PrismCoreErrorWhy a session failed, in terms a host can branch on.
- PrismCoreSessionOne playback session: remux `sourceURL` into HLS-fMP4 on disk and serve it from the loopback.
- PrismCoreVersionWhich PrismCore this is, as released.
- SegmentPlanOriginWhere a session's segment boundaries came from.
- StartupCheckpointOne thing that really happened during `PrismCoreSession.start()`, with the time it happened at.
- StartupPhaseThe stages a session passes through on its way to a playable playlist, in the order they occur.
Probing and input
- AudioTrackInfoStructure
- AV1ConfigurationRecordThe `av1C` fields an AV1 `CODECS` string is made of (AV1 Codec ISO Media File Format Binding, §2.3).
- AVCConfigurationRecordThe three `avcC` bytes an H.264 `CODECS` string is made of.
- CancellablePrismCoreInputA `PrismCoreInput` whose in-flight `read` or `seek` can be released from another thread.
- ChapterInfoOne chapter mark from the container — a Matroska `Chapters` edition entry or an MP4 chapter track, both of which libavformat parses into the same `AVChapter` list.
- DisplayCapabilitiesWhat the display this session plays to can actually present.
- DolbyVisionConfigurationThe container's `AVDOVIDecoderConfigurationRecord` (the `dvcC` / `dvvC` box), which is what decides the whole DV signaling route.
- DynamicRangeHow a variant's dynamic range is declared to AVPlayer.
- FFmpegBuildWhich FFmpeg actually answered, and whether it is the one we compiled against.
- HardwareDecodeSupportWhat *this* device can decode in hardware.
- HDR10PlusFindingWhat the **bitstream** said about HDR10+ (SMPTE ST 2094-40 dynamic metadata) on the video track — the counterpart of `ObjectAudioFinding` for the other premium format that no container declares.
- HDR10PlusScanWhether `SourceProbe.open` should read video packets to look for HDR10+.
- HEVCConfigurationRecordThe `hvcC` profile_tier_level fields, which are the only honest source for an HEVC `CODECS` string.
- HintOutcomeWhat became of a set of hints — the honest record of an open that was offered help.
- HintRejectionWhy a hint, or a whole set of them, was not used.
- IndexCompletenessHow much of a source a keyframe map actually describes.
- IndexLocationWhere a container keeps its seek index, in the published resource's own byte coordinates.
- IndexSourceWhere the timestamps in an `IndexSummary` came from.
- IndexSummaryA container's seek index, described in the **demuxer's own terms**: a stream, the rational time base its timestamps live on, and timestamps in that base.
- PrismCoreInputBytes supplied by the **host** instead of by libavformat's own protocols.
- PrismCoreInputErrorEnumeration
- PrismCoreInputFactoryHow a host hands its bytes over: **one call per open**.
- ProbedSourceClass
- ProbeTimingA source that has been opened and read once, holding both the answer (`info`) and the **open context that produced it**.
- SourceInfoEverything Aether's engine routing needs to decide PrismCore vs Prism, and everything `MasterPlaylistBuilder` needs to sign the manifest — read in one libavformat open.
- SourceOpenHintsWhat a caller already knows about a source, handed to the open so it can read less.
- SourceOpenTuningHow much of a source libavformat may read before it has to answer what is in it — the setting that decides what "opening a file" costs over a network.
- SourcePrewarmOutcomeWhat a prewarm did, for the host's log line.
- SourcePrewarmUseWhat became of a prewarm when a reader opened the source, reported on `ProbedSource.prewarm`.
- SourceProbeOpens a URL with libavformat and reports it.
- SourceStructureWhat a probe can say about a container's **layout and index** — the half of an open that `SourceInfo` has never described.
- SourceStructureExportHow much of a structure export a caller is willing to pay for.
- StreamCopyabilityWhat the native (HLS-fMP4 + AVPlayer) path can do with a stream.
- SubtitleTrackInfoStructure
- SuppliedKeyframeMapA keyframe map that arrived from somewhere other than this machine's own read of the file.
- VideoTrackInfoStructure
Remux and audio
- AudioBridgeFailureEnumeration
- AudioBridgeProgressCounts describe the current bridge epoch (reset by seek), not the file's metadata.
- AudioDeliveryEnumeration
- AudioRenditionProductionWhen an audio rendition of the served master is produced — the answer to "what is this session spending CPU on" that `audioTrackDeliveries` (how a track is carried) does not give.
- AudioTrackDeliveryStructure
- DialogueBoostLevelHow hard a dialogue-boost rendition favours the centre channel.
- DialogueBoostRenditionOne produced dialogue-boost rendition, as the session reports it to the host: which level it carries and the exact `NAME` the master declares — which is the `displayName` of the matching `AVMediaSelectionOption`.
- FFmpegErrorA failed libav* call, carrying the FFmpeg error string.
- ObjectAudioFindingWhat the **bitstream** said about object audio on one stream-copied E-AC-3 track — as opposed to what the container's metadata claimed.
- SourceCacheIdentityThe host's own name for one version of one source, keying the keyframe sidecar (`keyframeIndexCacheDirectory`) instead of the address the engine was handed.
- TimestampRepairStatsWhat the timestamp sanitizer had to repair over a session's remux.
HLS playlists
- LanguageMatchTolerant matching of a host's preferred language against the language tags a container actually carries.
- MasterPlaylistBuilderBuilds the HLS **master** playlist that wraps the remux's media playlist.
- MasterRejectionRecognizes the failures that mean *"AVPlayer refused the master playlist"*, as opposed to the source being unplayable.
Subtitles and captions
- SubtitleCueHistoryHow much of the remux cue tap's past a session keeps for replay — what a handler registered late (`setTimedTextCueHandler`), or registered again to pick up a new subtitle delay, is handed before live delivery resumes.
- SubtitleCueHistoryStatsWhat the remux cue tap is holding right now, and what it let go of — so a bounded history's truncation is never silent.
- TextCuePlacementWhere a text cue asked to be drawn — when the source said so at all.
- TimedTextCueOne timed text cue of an embedded subtitle stream, handed to the host as the demux produces it — the host-facing twin of the internal `SubtitleCue`.
Previews and cached media
- CachedAudioClipAudio the session has already produced, decoded to mono PCM — what `PrismCoreSession.cachedAudio(from:duration:renditionName:)` returns.
- ResidentRangeA completed video segment's source-time interval.
- SeekPreviewServiceScrub-bar thumbnails for any source libavformat can open — the floating frame a player HUD shows while the user drags the seek bar.
Software playback
- SoftwareDecoderAvailabilityWhat the *linked* FFmpeg can decode on the software path.
- SoftwarePlaybackPipelineThe software decode path (roadmap phase 7): demux with libavformat, decode with libavcodec, render with `AVSampleBufferDisplayLayer` + `AVSampleBufferAudioRenderer` under an `AVSampleBufferRenderSynchronizer`.
Display
- DisplayCriteriaChoiceThe display mode a playback session wants the panel in *before* AVPlayer sees the playlist — and the refresh rate that should ride along with it.
- DisplayCriteriaControllerPrograms the HDMI dynamic-range / refresh-rate handshake for a session, via `AVDisplayManager` — the piece of the playback contract that has to run **before** the host hands `AVPlayer` the playlist URL.tvOS only
- DisplayCriteriaLogicThe pure decisions `DisplayCriteriaController` acts on, split out so they compile — and test — on every platform, while the controller itself only exists where `AVDisplayManager` does (tvOS).
Dolby Vision
Loopback server
- DirectorySegmentProviderServes one directory, whole files, from disk.
- LoopbackHTTPServerA minimal HTTP/1.1 server bound to `127.0.0.1` on an ephemeral port — the loopback half of the remux pipeline.
- PendingResultA `ProviderResult` that hasn't landed yet: an awaitable that eventually yields the terminal answer.
- ProviderResultWhat a provider can answer with for one request path.
- SegmentProviderThe server's payload seam.
- SessionAccessTokenThe unguessable per-session secret that gates a LAN-reachable server.
Diagnostics
- SessionDiagnosticReportEverything the engine knows about one playback, as one value a host can attach to a bug report: which build, what the source turned out to be, where it was routed and why, where startup spent its time, and what the running session ran into.
- SourceDescription`SourceInfo` as the report writes it.