mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 15:25:46 +00:00
a4c400cc69
M4A files store the iTunSMPB value behind a 16-byte binary 'data' atom header. The previous parser took bytes directly after the ASCII key, landing in the binary header and producing a corrupted parts array (total_valid=348 instead of ~13M samples), which caused take_duration to exhaust the source in ~8ms — silent no-playback. Fix: search for the " 00000000 " sentinel within 128 bytes of the key to locate the actual value string, falling back to the old offset for ID3v2/MP3 files where no binary header exists. Also patches symphonia-format-isomp4 (local crate under patches/) to: - Tolerate SL descriptor predefined=0x01 (older iTunes M4A) - Convert descriptor.unwrap() panic to a proper decode error - Gracefully skip malformed trak atoms (e.g. MJPEG cover-art streams) instead of failing the entire probe Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
95 lines
2.4 KiB
TOML
95 lines
2.4 KiB
TOML
# This file is automatically @generated by Cargo.
|
|
# It is not intended for manual editing.
|
|
version = 3
|
|
|
|
[[package]]
|
|
name = "arrayvec"
|
|
version = "0.7.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
|
|
|
|
[[package]]
|
|
name = "bitflags"
|
|
version = "1.3.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
|
|
[[package]]
|
|
name = "bytemuck"
|
|
version = "1.23.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677"
|
|
|
|
[[package]]
|
|
name = "cfg-if"
|
|
version = "1.0.3"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
|
|
|
|
[[package]]
|
|
name = "encoding_rs"
|
|
version = "0.8.35"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
|
|
dependencies = [
|
|
"cfg-if",
|
|
]
|
|
|
|
[[package]]
|
|
name = "lazy_static"
|
|
version = "1.5.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
|
|
|
[[package]]
|
|
name = "log"
|
|
version = "0.4.28"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
|
|
|
|
[[package]]
|
|
name = "symphonia-core"
|
|
version = "0.5.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ea00cc4f79b7f6bb7ff87eddc065a1066f3a43fe1875979056672c9ef948c2af"
|
|
dependencies = [
|
|
"arrayvec",
|
|
"bitflags",
|
|
"bytemuck",
|
|
"lazy_static",
|
|
"log",
|
|
]
|
|
|
|
[[package]]
|
|
name = "symphonia-format-isomp4"
|
|
version = "0.5.5"
|
|
dependencies = [
|
|
"encoding_rs",
|
|
"log",
|
|
"symphonia-core",
|
|
"symphonia-metadata",
|
|
"symphonia-utils-xiph",
|
|
]
|
|
|
|
[[package]]
|
|
name = "symphonia-metadata"
|
|
version = "0.5.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "36306ff42b9ffe6e5afc99d49e121e0bd62fe79b9db7b9681d48e29fa19e6b16"
|
|
dependencies = [
|
|
"encoding_rs",
|
|
"lazy_static",
|
|
"log",
|
|
"symphonia-core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "symphonia-utils-xiph"
|
|
version = "0.5.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ee27c85ab799a338446b68eec77abf42e1a6f1bb490656e121c6e27bfbab9f16"
|
|
dependencies = [
|
|
"symphonia-core",
|
|
"symphonia-metadata",
|
|
]
|