Backend-agnostic audio output contracts for Kagura (AudioOutputHooks injection point over mizchi/audio; extracted from kagura_engine)
Dependencies
mizchi/kagura_audio does not have a README file
pub trait AudioContext {
fn create_player(Self, clip : AudioClip) -> PlayerId raise
fn play(Self, id : PlayerId) -> Unit raise
fn pause(Self, id : PlayerId) -> Unit raise
fn stop(Self, id : PlayerId) -> Unit raise
fn state(Self, id : PlayerId) -> PlayerState
fn set_volume(Self, id : PlayerId, volume : Double) -> Unit
fn current_position(Self, id : PlayerId) -> Double
fn seek(Self, id : PlayerId, position : Double) -> Unit raise
fn set_pan(Self, id : PlayerId, pan : Double) -> Unit
fn dispose(Self, id : PlayerId) -> Unit
}pub trait AudioStream {
fn read(Self, buf : FixedArray[Byte], length : Int) -> Int
fn content_length(Self) -> Int
}impl AudioStream for AudioClipStreampub struct AudioOutputHooks {
try_initialize : (AudioFormat) -> Bool
write_frames : (FixedArray[Float], Int) -> Int
suspend : () -> Unit
resume_playback : () -> Unit
close : () -> Unit
output_latency : () -> Double
}pub struct AudioOutputStats {
initialized : Bool
frames_written : Int
suspended : Bool
} derive(Debug)pub struct BufferedAudioStream {
chunks : Array[Bytes]
total_bytes : Int
read_chunk_idx : Int
read_byte_idx : Int
finalized : Bool
final_length : Int
}impl AudioStream for BufferedAudioStreamfn BufferedAudioStream::read(self : BufferedAudioStream, buf : FixedArray[Byte], length : Int) -> Intimpl Show for CuePlaybackimpl AudioContext for MixerAudioContextfn MixerAudioContext::crossfade_bgm(self : MixerAudioContext, clip : AudioClip, duration_seconds : Double, volume? : Double) -> Unitfn MixerAudioContext::fade_bgm(self : MixerAudioContext, target_volume : Double, duration_seconds : Double) -> Unitfn MixerAudioContext::play_bgm(self : MixerAudioContext, clip : AudioClip, volume? : Double) -> Unitfn MixerAudioContext::render(self : MixerAudioContext, frames : Int, output : FixedArray[Float]) -> Unitfn MixerAudioContext::seek(self : MixerAudioContext, id : PlayerId, position : Double) -> Unit raisepub struct SimpleAudioContext {
players : Array[SimpleAudioPlayer]
next_id : Int
format : AudioFormat
}impl AudioContext for SimpleAudioContextfn SimpleAudioContext::seek(self : SimpleAudioContext, id : PlayerId, position : Double) -> Unit raisefn SimpleAudioContext::set_volume(self : SimpleAudioContext, id : PlayerId, volume : Double) -> Unitpub struct SimpleAudioPlayer {
id : PlayerId
clip : AudioClip
state : PlayerState
volume : Double
position_samples : Int
}pub struct SoundBank[Key] {
// private fields
}fn[Key : Eq] SoundBank::play(self : SoundBank[Key], cue : Key, restart? : Bool) -> CuePlayback raisefn detect_audio_format(data : Bytes) -> Stringfn new_audio_output_hooks(try_initialize : (AudioFormat) -> Bool, write_frames : (FixedArray[Float], Int) -> Int, suspend : () -> Unit, resume_playback : () -> Unit, close : () -> Unit) -> AudioOutputHooksfn new_audio_output_hooks_full(try_initialize : (AudioFormat) -> Bool, write_frames : (FixedArray[Float], Int) -> Int, suspend : () -> Unit, resume_playback : () -> Unit, close : () -> Unit, output_latency : () -> Double) -> AudioOutputHooksfn new_tracked_audio_output_hooks(inner : AudioOutputHooks, stats : Ref[AudioOutputStats]) -> AudioOutputHooksInstall
Download zipBackend-agnostic audio output contracts for Kagura (AudioOutputHooks injection point over mizchi/audio; extracted from kagura_engine)
Dependencies