PlaybackError
A failure that stopped playback.
The rule that keeps this honest: an error always stops playback and a warning never does. There is no third category and no silent degradation. If the engine can continue, it emits a PlaybackWarning and continues. A viewer must never lose playback because one subtitle track was malformed, and a developer must never discover a software-decode fallback by noticing the fan.
Inheritors
Types
The audio output device the player was bound to cannot be opened: it has gone away, or the platform does not let an application choose one. A bound device that disappears during playback fails the player with this error too. device is the id the player was given.
The player was asked to exist without something it cannot invent, or against a runtime it cannot use, or an item it was asked to open sets one option twice.
A decoder opened and then failed in a way that cannot be recovered from.
The engine hit a state it does not know how to leave. This is always a bug here.
The container was read and holds nothing this build can play.
The bytes were reached and are not media the demuxer recognises.
The renderer cannot show the frames the running video decoder makes, so the attach was refused and the renderer attached before stays. renderer names the refused one.
A shutdown did not complete inside its deadline, or stopped part way, so part of the pipeline may still be running or still hold resources.
The item's address has a scheme this build has no way to open, such as srt:// or rtmps://, or rtsp:// on the web, where the player has no sockets of its own. Nothing was sent over any network: the address was refused for its scheme alone.
The source stopped answering: a read waited stalledFor without a packet or a byte, which is at least BufferPolicy.stallTimeout. The engine interrupted the read and ended the session. The same media may play when the network recovers.
The bytes could not be reached at all: no such file, refused connection, permission denied.