KiteFFmpegSource
Properties
Matroska attachments, read once from the container's attachment streams. FFmpeg keeps an attachment's bytes in that stream's codec extradata and its name and type in the stream's tags, so no packet is ever read for one. Fonts are what the subtitle typesetter loads.
The container's own claim, read once at open. Null when it declares none.
Where this source's decoders report a degradation they had to accept and carry on through.
The channels of a multiplex (#505), as they stand after the latest read, because a live transport stream can change them (#509). Only a programme the container numbers is one, which leaves out those FFmpeg makes for the variants of an HLS master playlist and for a DASH presentation, and a programme keeps only the streams streams lists.
FFmpeg's HLS reader downloads each rendition of a master playlist on its own, and a DASH presentation reaches it as one, so a sound nobody hears there costs its download (#455).
Read on every call rather than cached: the library fills this in as decoders produce their first output, so a value read at open would always be empty.
What the container lists, as it stands after the latest read: a live stream can add to it (#509).
The seek bar pictures an HLS stream, or a DASH one through its stand-in, names (#433).
MPEG-TS and friends declare that their timestamps may jump. The engine uses this to pick a 10 second rather than a 3600 second ceiling on a frame's duration, and to decide how large a jump is a discontinuity rather than drift. HLS joins segments that may each start a new timeline, and FFmpeg passes those jumps on.
Functions
KiteFFmpeg's pause (#441): RTSP's PAUSE once and then its keepalive whenever one is due, or RTMP's pause command. Every other input answers false.
KiteFFmpeg's resume, which asks the sender to play on only while a pause is in effect.
Finds the keyframes either side of target by reading the first picture after a forward seek and, for KeyframeChoice.Closest, after a backward one, then lands with a backward seek aimed at the chosen keyframe's own time, which KiteFFmpeg lands on exactly (#496). A source with no picture has nothing to choose between, because every sound packet is a keyframe.
The first call opens the reader. A later one, between reads, changes which streams it delivers without moving it, which is how the demux lane adds a stream that appeared after the open; the packets of it that FFmpeg read before then come first on the next read (#509).
Records every stream this source reads, except cover art, which is one picture the file would never show again, and a subtitle format Matroska cannot hold.
Video decoders for this source. The factory applies the caller's platform policy at open.