Package-level declarations
Types
Decoded PCM, ready for the engine's filter chain.
Creates audio decoders. The engine tries the factories in order and uses the first one that answers.
The shape of PCM: sampleRate sample frames a second, each holding channels samples of sampleFormat.
Called by the audio device on its own real-time thread.
Converts interleaved float audio from one sample rate to another.
Makes an AudioResampler for one pair of rates. Set it in AudioConfig.resampler.
An audio output device.
The device's own buffer, to be written in place.
What a sink reports about its device, on AudioSink.events.
Creates the audio sink of a session. An OutputBackend carries one.
One opened media item: the cursor over its packets, and the decoders that can consume them.
Which speaker each channel drives.
Where a subsampled chroma sample sits relative to the luma samples it covers.
How Y, Cb and Cr derive from R, G and B, with the matrices ITU-T H.273 names.
The red, green and blue the picture was mastered with, as ITU-T H.273 names them.
The colour metadata a renderer must honour to produce a correct picture.
How coded values map to light, with the transfer characteristics ITU-T H.273 names.
How a video stream's fields are ordered, in display order.
What a decoder's frames will be, known before the first frame exists.
The static HDR metadata of a stream or a frame: the display it was graded on, as SMPTE ST 2086 describes it, and how bright the content gets, as CTA-861.3 describes it. A tone mapper reads the content's real peak from it instead of assuming one. Every field is null when the source did not say.
What kind of hardware surface a frame holds, so a renderer can say whether it can draw it.
One file attached to a container, as the container wrote it. See PlayerMediaSource.attachments.
Everything needed to read and decode one media item, from one place.
Registration seam for optional modules on targets without classpath service discovery. Applications normally only add the module dependency. Registration is thread-safe and creates no clients. Registering distinct providers under the same identifier refuses with an error.
An optional transport module's lightweight discovery entry. Construction must not perform I/O. A provider creates one process-lived resolver on first automatic resolution. That resolver must support concurrent opens, keep player state out of the registry, and give each returned reader ownership of its resources. An unsupported URI returns null so the next provider may handle it.
Opens media and produces a packet cursor over it.
The address of a kprt_ring the sink owns, as an opaque number.
A sink that owns its device callback in C, and therefore owns the ring that callback reads.
What NativeRingAudioSink.openWithRing hands back: the format the device accepted, and the C ring its callback reads.
The output half of a platform: one clock, one audio sink factory, and optionally a subtitle rasterizer. It supplies no video renderer: a renderer needs a surface that only the application owns, so the application builds one and passes it to KitePlayer.attachRenderer.
A packet cursor over one opened item. The engine closes it with its session.
One compressed packet.
A pixel layout the engine models.
What the container declares about one stream.
The seek bar pictures of a source (#433). at reads an image only when it is asked for, through the source's own transport, and keeps a few recent ones, so a finger that scrubs back and forth over one image downloads it once. Safe to call from any coroutine while the source is read.
Marks the native ring handoff that exposes the real-time core's raw C pointer.
A PlayerMediaSource that can copy the packets it reads into a file while it plays.
What a renderer reports about itself on VideoRenderer.events.
A frame whose pixels can be read, for the cases that genuinely need them: a screenshot, a software renderer of last resort, a video thumbnail strip.
One field where a container's declaration and its decoder disagree.
Turns subtitle packets into cues. The engine drains it on the actor between packets and flushes it on every seek; see SubtitleDecoderFactory.
Creates subtitle decoders.
Parses one subtitle file's whole text into timed cues. See MediaBackend.subtitleFileParser.
What SubtitleFileParser.parseOther read from a subtitle file.
What to draw above the video, in output pixels.
Thrown by SubtitleRasterizer.rasterize when the images of the next cue would take the overlay past SubtitleRasterizer.overlayPixelBudget. The engine shows drawn and warns once with io.github.yuroyami.kiteplayer.PlaybackWarning.SubtitlesNotDrawn.
Turns active text cues into the positioned images a renderer composites.
A typesetting engine for ASS and SSA subtitles, libass in practice.
An optional typesetting module's discovery entry. Construction must do no work: providers are instantiated on every player that meets an ASS track, and only create may load a library or scan fonts. Returning null from create means this build cannot typeset here, for example a desktop JVM with no native library for its operating system; the engine then keeps the Kotlin tier and says so once through a warning.
Registration seam for optional typesetting modules on targets without classpath service discovery. Applications normally only add kiteplayer-libass and never call this. Thread-safe. Registering two different providers under one identifier refuses with an error.
The geometry one SubtitleTypesetter.render call draws into.
The send and receive shape below mirrors what libavcodec actually does, including the cases a simpler interface cannot express: one packet producing zero frames, one packet producing several, and a decoder that must be drained before it will accept more input.
A decoded video frame.
Draws frames.
Creates a VideoRenderer for an application to pass to KitePlayer.attachRenderer.
Bits per sample.
The chroma subsampling. code names it with the usual digits, such as 420.
The VP9 profile, level, bit depth and chroma subsampling the container declares. A null field was not declared.
A VP9 profile. number is its number in the VP9 bitstream specification.
Properties
The codec of the subtitle track the engine makes of the closed captions inside a video stream (#236): see VideoFrame.closedCaptions. Named after FFmpeg's A53_CC frame data.
The content peak a tone mapper rolls this frame off from, in nits: the scene's brightest level when the frame carries one between 100 and 10000 nits, held at most at the title's own peak, else the title's peak from VideoFrame.hdr, else null for the 1000 nits a PQ master is assumed to have.
The size of the picture this frame shows: VideoFrame.size with VideoFrame.crop's edges taken away, before the turn, which still swaps width and height for a renderer.