Files
benilla-octo/third_party/kira/Cargo.toml
T
Sam SungandClaude Opus 5.5 4c18c23c94 Ambience beds stream from the archive, opened off the main thread (#725)
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>
2026-09-30 17:22:42 +07:00

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"