onAudio
One block of decoded audio that plays at pts.
interleaved holds frames sample frames of AudioFormat.channels floats each, from index zero. It is the engine's own array and it is reused for the next block, so copy what you keep.
open fun onAudio(generation: Generation, pts: Pts, interleaved: FloatArray, frames: Int, format: AudioFormat)
A block with its continuous audio timeline identity, matching KitePlayer.audioClock.
The engine calls this overload. The default forwards to the original callback so existing taps keep working. Asynchronous consumers retain generation with their copied PCM and reject old work after a discontinuity, even when its timestamp equals the new position.