Dear Maxim,
Would it be possible to add two features to foo_input_sacd?
ISO DST64@48k playback — The plugin currently doesn't support DST64@48K-compressed SACD ISOs. Would be great if the DSD decoder path could handle DST frames from ISO just like it does from DSF/DFF.
48k base rate — DSD64@48k (3.072MHz) and corresponding frame size (640 samples) isn't supported. The get_samplerate() in udsd_reader_sacd.cpp returns hardcoded 2,822,400 regardless of sample_frequency in Area TOC, and adjust_output() uses fixed / 44100 for PCM conversion.
These two would make the plugin work with modern SACD releases that use 48k mastering and DST compression.
Thanks for your work on this plugin!
Anonymous
Yes, sure. We just need to agree on area->area_toc->sample_frequency encoding. In SACD spec it has fixed value 4. In attached ISO this value is 14. Is there any consistent schema for other sample frequencies?
Dear Maxim,
sample_frequencyin the Area TOC is defined by the Scarlet Book standard. The only defined value is4(44.1kHz base / DSD64). There is no official value for 48kHz base rates.In the attached ISO, the value is
14. I've seen this same value used by several different SACD releases mastered at 48kHz (both DSD64 and DST-compressed variants), which suggests it has become an informal convention among authoring tools.My suggestion: adopt a simple linear scheme that keeps
4and14as-is, and extends cleanly to higher rates:4= DSD64 (44.1kHz base, 2,822,400 Hz) — Scarlet Book standard14= DSD64 (48kHz base, 3,072,000 Hz) — observed convention5/15= DSD128 (44.1k / 48k base)6/16= DSD256 (44.1k / 48k base)Alternatively, if you prefer a bitfield approach:
0= 1×/DSD64,1= 2×/DSD128,2= 4×/DSD256)0= 44.1kHz,1= 48kHz)But I think the simple enumeration is cleaner and matches what the existing files already use.
We'd implement the same mapping on our end, so it'll be fully compatible.
Tks, Good Luck for U.
Ok, let's start with 4/14 scheme. v2.0.25.