mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 14:35:41 +00:00
067ed00ae2
* fix(audio): fix Opus/Ogg seek crash by keeping random-access sources seekable through probe Scrubbing the seekbar on Opus/Ogg files (then pressing Stop) crashed the whole app. symphonia 0.6's Ogg demuxer records the physical stream's byte range only when the source is seekable during the probe, but ProbeSeekGate hid seekability there — so phys_byte_range_end stayed None and the first seek hit Option::unwrap() on None on the cpal audio thread. That poisoned the engine mutexes and aborted the process at the non-unwinding cpal FFI boundary (the "crash on Stop" was a downstream symptom). - Keep Ogg/Opus seekable through the probe on random-access sources (local files, in-memory) so the demuxer computes its seek bounds and seeking works for real. Progressive ranged-HTTP keeps the gate to avoid forcing a full download before playback starts. - Contain any demuxer unwind inside SizedDecoder::try_seek (catch_unwind) so a panic on the audio thread can no longer poison engine state — covers streamed Ogg (still gated) and any future demuxer panic. - Thread a random_access flag through PlayInput::SeekableMedia and new_streaming. * docs(changelog): add 1.48.1 entry for the Opus/Ogg seek crash fix Also note the Opus seek crash fix in WHATS_NEW.md (1.48.1). (cherry picked from commit 8bfde08199396924dc9602c58449b073ae7483a0)