FilmstripError

sealed interface FilmstripError(source)

Every way a Filmstrip operation can fail, as branchable values.

Planning and running an export, probing a source, reading capabilities, encoding a still and drawing a frame or a thumbnail all report one of these. A player reports a PlaybackError instead, and where its preview is planned or read through the same lowering an export uses, the failure that lowering gives is mapped onto a PlaybackError arm.

Nothing in filmstrip's public API throws one of these. Every entry point returns a sealed result carrying the error instead. Cancellation is not an arm: cancelling the collecting scope cancels the export and propagates a CancellationException.

This hierarchy is open: a backend filmstrip has not shipped yet will fail in ways this list does not name, so arms arrive in minor versions and an exhaustive when over them will break.

Inheritors

Types

Link copied to clipboard
class BackendMissing(val artifact: String, val message: String) : FilmstripError

A backend that this operation needs was not registered.

Link copied to clipboard
class DecoderRejectedInput(val codec: String, val message: String) : FilmstripError

A decoder rejected the source while being configured, before any transcoding started.

Link copied to clipboard
class InsufficientStorage(val requiredBytes: Long?, val message: String) : FilmstripError

Not enough free space to write the output.

Link copied to clipboard

Apple only: hardware codec access was revoked because the app was suspended.

Link copied to clipboard

The composition does not describe a valid graph: instructions that do not tile the timeline, a clip with no readable track, a crop with no area.

Link copied to clipboard
class NoEncoder(val codec: VideoCodec, val message: String) : FilmstripError

The device has no encoder for the requested codec.

Link copied to clipboard
class PlatformEffectAsymmetry(val specId: String, val message: String) : FilmstripError

A caller-supplied effect is implemented on one platform and not the other.

Link copied to clipboard
class SinkUnwritable(val sink: String, val message: String) : FilmstripError

The destination could not be opened or written.

Link copied to clipboard

The source is DRM-protected or otherwise not exportable.

Link copied to clipboard
class SourceUnreadable(val source: String, val message: String) : FilmstripError

The source could not be opened or read.

Link copied to clipboard
class TimedOut(val operation: String, val deadline: Duration, val message: String) : FilmstripError

A probe or platform read was still running at its deadline and was stopped.

Link copied to clipboard
class ToolchainMissing(val tool: String, val foundVersion: String?, val message: String) : FilmstripError

An external program this backend drives was not found, or is too old to use.

Link copied to clipboard
class Underlying(val platformCode: Int, val message: String) : FilmstripError

A platform failure filmstrip could not classify, with whatever code the platform gave.

Link copied to clipboard
class UnpreviewableEffect(val specId: String, val message: String) : FilmstripError

An effect renders on one path but not the other, so it is refused rather than classified.

Link copied to clipboard
class UnsupportedEffect(val specId: String, val message: String) : FilmstripError

No resolver claimed an effect on this platform.

Link copied to clipboard
class UnsupportedResolution(val requested: Size, val max: Size, val message: String) : FilmstripError

The requested resolution exceeds what the encoder publishes.

Link copied to clipboard
class UnsupportedStillFormat(val format: StillFormat, val message: String) : FilmstripError

This target cannot write the still image format that was asked for.

Properties

Link copied to clipboard
abstract val message: String

A human-readable description, safe to log and unsuitable for parsing.