mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 22:45:41 +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>
20 lines
777 B
TOML
20 lines
777 B
TOML
[package]
|
|
name = "symphonia-format-isomp4"
|
|
version = "0.5.5"
|
|
description = "Pure Rust ISO/MP4 demuxer (a part of project Symphonia)."
|
|
homepage = "https://github.com/pdeljanov/Symphonia"
|
|
repository = "https://github.com/pdeljanov/Symphonia"
|
|
authors = ["Philip Deljanov <philip.deljanov@gmail.com>"]
|
|
license = "MPL-2.0"
|
|
readme = "README.md"
|
|
categories = ["multimedia", "multimedia::audio", "multimedia::encoding"]
|
|
keywords = ["audio", "media", "demuxer", "mp4", "iso"]
|
|
edition = "2018"
|
|
rust-version = "1.53"
|
|
|
|
[dependencies]
|
|
encoding_rs = "0.8.17"
|
|
log = "0.4"
|
|
symphonia-core = { version = "0.5.5", path = "../symphonia-core" }
|
|
symphonia-metadata = { version = "0.5.5", path = "../symphonia-metadata" }
|
|
symphonia-utils-xiph = { version = "0.5.5", path = "../symphonia-utils-xiph" } |