An ambience change read and decoded the whole bed on the main thread, about 40 ms a swap. 1.12.1 opens the bed as a looping FMOD stream that reads the archive through its file callbacks (`0x460b54` → `0x7a54d0`, `FSOUND_Stream_Open` at `0x7a5525`). Now: - MPQ files open for in-place reads, one sector at a time. - The bed streams from the archive, opened on the IO pool. A newer swap drops an open still in flight. - kira moves to 0.12.4 on symphonia 0.6. 0.5 sized PCM frames from `nBlockAlign`, which 98 stereo WAVs store as 2, so a streamed bed fell silent halfway. - A fork patch stops a stream at its last packet instead of spinning. - A sector that inflates short is refused. Tests cover a bed's true length, a seamless loop, an off-thread open, the stop at the last packet and the refusal. Fixes #700 Fixes #8 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
193 lines
3.2 KiB
TOML
193 lines
3.2 KiB
TOML
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
|
|
#
|
|
# When uploading crates to the registry Cargo will automatically
|
|
# "normalize" Cargo.toml files for maximal compatibility
|
|
# with all versions of Cargo and also rewrite `path` dependencies
|
|
# to registry (e.g., crates.io) dependencies.
|
|
#
|
|
# If you are reading this file be aware that the original Cargo.toml
|
|
# will likely look very different (and much more reasonable).
|
|
# See Cargo.toml.orig for the original contents.
|
|
|
|
[package]
|
|
edition = "2024"
|
|
name = "kira"
|
|
version = "0.12.4"
|
|
authors = ["Andrew Minnich <aminnich3@gmail.com>"]
|
|
build = false
|
|
autolib = false
|
|
autobins = false
|
|
autoexamples = false
|
|
autotests = false
|
|
autobenches = false
|
|
description = "Expressive audio library for games"
|
|
readme = "README.md"
|
|
keywords = [
|
|
"gamedev",
|
|
"audio",
|
|
"music",
|
|
]
|
|
categories = [
|
|
"game-development",
|
|
"multimedia::audio",
|
|
]
|
|
license = "MIT OR Apache-2.0"
|
|
repository = "https://github.com/tesselode/kira"
|
|
resolver = "2"
|
|
|
|
[package.metadata.docs.rs]
|
|
all-features = true
|
|
rustdoc-args = [
|
|
"--cfg",
|
|
"docsrs",
|
|
]
|
|
|
|
[features]
|
|
aac = [
|
|
"symphonia",
|
|
"symphonia/aac",
|
|
]
|
|
adpcm = [
|
|
"symphonia",
|
|
"symphonia/adpcm",
|
|
]
|
|
aiff = [
|
|
"symphonia",
|
|
"symphonia/aiff",
|
|
]
|
|
alac = [
|
|
"symphonia",
|
|
"symphonia/alac",
|
|
]
|
|
caf = [
|
|
"symphonia",
|
|
"symphonia/caf",
|
|
]
|
|
cpal-realtime = [
|
|
"cpal",
|
|
"cpal/realtime",
|
|
]
|
|
cpal-realtime-dbus = [
|
|
"cpal",
|
|
"cpal/realtime-dbus",
|
|
]
|
|
default = [
|
|
"cpal",
|
|
"cpal-realtime",
|
|
"cpal-realtime-dbus",
|
|
"mp3",
|
|
"ogg",
|
|
"vorbis",
|
|
"flac",
|
|
"wav",
|
|
"pcm",
|
|
]
|
|
flac = [
|
|
"symphonia",
|
|
"symphonia/flac",
|
|
]
|
|
isomp4 = [
|
|
"symphonia",
|
|
"symphonia/isomp4",
|
|
]
|
|
mkv = [
|
|
"symphonia",
|
|
"symphonia/mkv",
|
|
]
|
|
mp1 = [
|
|
"symphonia",
|
|
"symphonia/mp1",
|
|
]
|
|
mp2 = [
|
|
"symphonia",
|
|
"symphonia/mp2",
|
|
]
|
|
mp3 = [
|
|
"symphonia",
|
|
"symphonia/mp3",
|
|
]
|
|
mpa = [
|
|
"symphonia",
|
|
"symphonia/mpa",
|
|
]
|
|
ogg = [
|
|
"symphonia",
|
|
"symphonia/ogg",
|
|
]
|
|
pcm = [
|
|
"symphonia",
|
|
"symphonia/pcm",
|
|
]
|
|
vorbis = [
|
|
"symphonia",
|
|
"symphonia/vorbis",
|
|
]
|
|
wav = [
|
|
"symphonia",
|
|
"symphonia/wav",
|
|
]
|
|
|
|
[lib]
|
|
name = "kira"
|
|
path = "src/lib.rs"
|
|
|
|
[[test]]
|
|
name = "change_sample_rate"
|
|
path = "tests/change_sample_rate.rs"
|
|
|
|
[[test]]
|
|
name = "streaming_sound_stops_on_error"
|
|
path = "tests/streaming_sound_stops_on_error.rs"
|
|
|
|
[[test]]
|
|
name = "sync_send"
|
|
path = "tests/sync_send.rs"
|
|
|
|
[dependencies.assert_no_alloc]
|
|
version = "1.1.2"
|
|
optional = true
|
|
|
|
[dependencies.atomic-arena]
|
|
version = "0.1.2"
|
|
|
|
[dependencies.glam]
|
|
version = "0.33.0"
|
|
features = ["mint"]
|
|
|
|
[dependencies.mint]
|
|
version = "0.5.9"
|
|
|
|
[dependencies.pastey]
|
|
version = "0.2.1"
|
|
|
|
[dependencies.rtrb]
|
|
version = "0.3.2"
|
|
|
|
[dependencies.serde]
|
|
version = "1.0.219"
|
|
features = ["derive"]
|
|
optional = true
|
|
|
|
[dependencies.symphonia]
|
|
version = "0.6.0"
|
|
optional = true
|
|
default-features = false
|
|
|
|
[dependencies.triple_buffer]
|
|
version = "9.0.0"
|
|
|
|
[dev-dependencies.approx]
|
|
version = "0.5.1"
|
|
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.cpal]
|
|
version = "0.18.1"
|
|
optional = true
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies.cpal]
|
|
version = "0.18.1"
|
|
features = ["wasm-bindgen"]
|
|
optional = true
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies.send_wrapper]
|
|
version = "0.6.0"
|