Извлечение DSD-треков из образов Super Audio CD (SACD-R) с последующим сжатием в WavPack

Дата обновления: 19 Сентября 2017
Как извлекать DSD-треки из ISO образов SACD и сжимать их с помощью WavPack.
2017-09-19T14:06
Audiophile's Software

О формате DSD и дисках SACD уже написана целая статья, потому здесь я не буду лишний раз вдаваться в технические детали и сфокусируюсь на том, как сделать хранение/воспроизведение DSD более удобным и менее ресурсоёмким.

Первое, что бросается в глаза тем, кто только начал интересоваться SACD — громоздкость и неудобство SACD-R ISO образов. Это и большой объем, и проблемы с записью/редактированием тегов, и невозможность использовать только отдельные треки (чтобы, например, сбросить другому человеку или записать на диск/флешку). Решением этих проблем мы сейчас и займёмся.

Нарезка образа

Для извлечения DSD-треков как из образов SACD, так и из реальных SACD-дисков, можно воспользоваться программой SACD Ripper (sacd_extract.exe). Программа уникальная, но не слишком удобная, по причине чего, к сожалению, использовать её прямо из foobar2000 через Run Service не выйдет (использование утилиты подразумевает нахождение exe файла непосредственно в папке с образом, т. к. указание полного или относительного пути для целевой папки конвертирования невозможно). К счастью, для утилиты есть написанный на .NET Framework (необходима версия 2.0 или более новая) GUI-оболочка, вместе с которой я её здесь и выкладываю:

SACD Ripper (sacd_extract) 0.3.8 + GUI 1.5.0.1
[СКАЧАТЬ] (0,63 МиБ)

Программа выглядит следующим образом:

Программа SACD Ripper

Вверху нужно указать путь к консольной программе sacd_extract, затем перетащить (или добавить через Add files) в окно ISO-образ. Справа от образа настраиваются параметры извлечения:

-2 — экспорт двухканальных треков.

-m — экспорт многоканальных треков.

-e — экспорт в формате Philips DSDIFFF (DFF мастер-файл). На выходе получается один DSD-файл + CUE с разметкой. Непонятно: то ли здесь должна использоваться разметка аналогичная SACD-диску, то ли она должна включать скрытые в образе участке, но факты таковы, что DFF файл содержит в себе полностью всё аудио, а треки, согласно CUE, имеют продолжительность большую, чем у треков на SACD-диске, но меньшую, чем у потрекового рипа. Хуже того: DFF-файл всё же оказывается на несколько десятков семплов короче, чем сумма семплов для потрекового рипа. Вот такая ерунда — параноики и перфекционисты, привыкшие к побитово-точным CDDA-образам и CUETools, негодуют.

-p — экспорт в виде самостоятельных потрековых DFF файлов (при этом извлекается всё аудио, даже неразмеченные участки диска). Я рекомендую именно этот формат.

-s — экспорт в виде Sony DSF файлов (формат входит в стандарт DSD disc). Не поддерживает DST сжатие, поэтому в случае необходимости декомпрессия будет выполняться автоматически.

-c — декомпрессия DST потока в DSD.

-C — экспорт CUE-файла. Зачем — непонятно: для мультитрекового DFF CUE и так создаётся, а для потрекового программа создаёт точно такой же CUE, в итоге являющийся бесполезным.

После того как вы отметили нужные опции, можно нажать кнопку Run и запустить излечение. Если не включилась декомпрессия DST, преобразование обычно занимает всего несколько секунд.

В итоге мы получаем более удобное представление нашего DSD аудио в виде отдельных треков:

Треки DFF в foobar2000

(как видите, я не использовал декомпрессию в DST, т. к. иначе размер рипа увеличился бы более чем в 2 раза)

Теперь эти файлы полностью самостоятельны: их можно перемещать, отсылать, редактировать в них теги (обратите внимание: для этого нужно включить возможность изменения тегов в настройках декодера SACD).

Сжатие DSD с помощью WavPack 5

Но не всегда DSD-поток на SACD-дисках сжат в DST — большая часть образов содержит именно несжатое аудио, при этом DST является проприетарным алгоритмом, с закрытым исходным кодом, и в свободном доступе его кодера нет. Кроме того, даже если аудио сжато, DST требует значительное количество процессорного времени для декодирования и может усложнить и без того трудную задачу преобразования DSD->PCM (для устройств без поддержки DSD), что часто приводит к торможению воспроизведения, искажениям, щелчкам, да и просто к невозможности работать на компьютере во время проигрывания музыки.

Альтернативой DST на сегодняшний день может выступить сжатие кодеком WavPack, которое доступно, начиная с 5-й версии. Чтобы перепаковать файлы из DST в WV, нужно извлечь их с декомпрессией (см. выше).

Так как кодеру WV нужен непосредственный доступ к исходному DFF/DSF файлу, использование конвертера foobar2000 в данном случае невозможно, и кодировать мы будем через консоль. Чтобы упростить вам жизнь, выкладываю простенькие bat-файлы вместе с кодерами WavPack 5.1.0 x86/x64, сжимающие файлы в режимах Normal и High (пока поддерживаются только эти режимы):

encode_dsd_files_to_wavpack.7z
[СКАЧАТЬ] (0.24 МиБ)

Всё что нужно — перетащить DFF/DSF файлы в этот BAT и дождаться окончания конвертации, после чего исходные файлы можно удалить (хотя, для начала всё же убедитесь в работоспособности WV).

Трюк: если хотите ускорить кодирование на многопроцессорном компьютере, можете сначала перетащить в BAT одну половину треков, потом, не дожидаясь завершения — вторую. Конвертирование будет происходить параллельно, в два потока. Если у вас больше логических процессоров — можете разделить треки на большее количество групп.

Конвертирование DSD в WV

Теперь мы получаем DSD-аудио, сжатое почти в два раза кодеком WavPack:

Треки WavPack DSD в foobar2000

Как видите, теги были скопированы в WV файл (хотя для их редактирования по-прежнему нужно держать включённой соответствующую опцию SACD-декодера).

Примечание: нужно понимать, что далеко не все плееры, поддерживающие WavPack, смогут проигрывать такие файлы. Насколько мне известно, пока их проигрывание доступно только для foobar2000.

Анализ производительности

Данный способ хранения имеет преимущество по сравнению с DST — а именно, скорость декодирования. Я провёл сравнительное тестирование DSD64, DST64, WavPack Normal и WavPack High на первом треке альбома (продолжительностью 4 минуты), который вы видите в примерах (я использовал извлечённые стерео и 5.1 DFF-треки). Оценивалась нагрузка на ЦП во время проигрывания DSD в режиме native и в режиме PCM (преобразование в DXD формат с фильтрацией ультразвуковых частот). Для лучшей оценки ресурсоёмкости я провёл сравнение также в однопроцессорном режиме (процессу foobar2000 разрешено использование только одного ядра, оценивается загруженность выбранного ядра).

Система

Процессор: Intel Core i3 530, 2933 MHz (x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2)
Мат. плата: Asus P7H55-V
RAM: 4x2Gb DDR3-1333

ПО

ОС: Windows 10 Pro 64-bit

foobar2000:
Core (2017-07-10 05:24:08 UTC)

foobar2000 core 1.3.16

foo_benchmark.dll (2017-09-04 20:26:52 UTC)
Decoding Speed Test 1.2.3
foo_input_sacd.dll (2017-09-01 14:11:19 UTC)
Super Audio CD Decoder 1.0.10

Таблица с результатами

Сравнительная таблица скорости декодирования DSD
table.zip
[СКАЧАТЬ] (18 КиБ)

Как видите, WavPack High сжимает аудио на 10% хуже, чем DST, а normal — на 20%. Оправданно ли это? Если смотреть на результаты WV Normal и сравнивать их с результатами несжатого DSD, то по всем пунктам видно, что ресурсоёмкость декодирования практически не увеличилась — это действительно отличный результат, который говорит о том, что WV Normal подойдёт для сжатия DSD даже для не высокопроизводительных компьютеров. DST этим похвастать не может, т. к. увеличивает нагрузку на ЦП примерно в два раза, а многоканальное аудио, сжатое в DST, может просто не воспроизводиться (без задержек и искажений) на мобильных процессорах ноутбуков или планшетов (с чем я, в общем-то, не раз сталкивался) — об этом говорит скорость декодирования меньше 1x для одного процессора.

WavPack High даёт дополнительные 10% сжатия, причем нагрузка продолжает быть довольно невысокой (а в многоядерном режиме — и вовсе незначительной), так что при использовании нескольких процессоров можно спокойно выводить многоканальный WV High в PCM с максимальным качеством.

Итоги

Использование потрековых рипов DSD однозначно намного удобнее и практичнее, чем работа с SACD-R ISO образами. На данный момент уже работает поддержка ID3v2 тегов для DSF/DFF файлов. Также, если аудио на диске не сжато, можно сжать его новым кодеком WavPack 5, сэкономив около 50% места на диске. Для более слабых компьютеров вполне подойдёт сжатие в WV Normal (кроме того, для снижения нагрузки во время воспроизведения, в него можно пережать исходный DST-поток), для более современных и высокопроизводительных компьютеров можно воспользоваться WV High или даже оставить аудио в DST.

Обсудить на форуме
 
   
Категория: Авторские статьи | Автор: | Добавил: Audiophile
Просмотров: 44691| Рейтинг: 5.0/5, голосов: 3
Комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]