Главная > Програмное обеспечение > Мультимедийное >
Тестирование методов вывода звука в Windows XP/7

Тестирование методов вывода звука в Windows XP/7

Чем отличаются методы вывода звука и какой из них лучше использовать? Попытаемся разобраться:

Подопытные методы вывода звука:

  • DirectSound
  • WASAPI (Shared Mode)
  • WASAPI (Exclusive Mode)
  • ASIO (ASIO4ALL)
  • Kernel Streaming

«Настоящий» ASIO в тестах не участвовал, т.к. этот метод вывода тесно связан со звуковой картой. Результаты тестов будут зависеть от параметров звуковой карты и будут выбиваться из общей картины.

Конфигурация

  • Подопытный плеер: Foobar v1.1.11
    Он умеет выводить звук через все интересующие нас методы
  • ОС: Windows XP Pro SP3 Rus x86 / Windows 7 Ultimate SP1 Rus x86
    Windows XP добавлена к тестированию поскольку: KernelStreaming не работает на современных версиях ОС; Реализация DirectSound начиная с Windows Vista претерпела серьезные изменения
  • Звуковая карта: Virtual Audio Streaming
    Виртуальная звуковая карта позволяет исключить особенности железа и реализации драйверов к нему. В добавок к этому, нам будет проще списать с нее выходные данные
  • Настройки плеера и ОС: 44.1 кГц, 16 Бит/сэмпл, громкость 100%, эквалайзер и другие эффекты выключены

Методика тестирования

Для замеров я использовал RightMark Audio Analyzer (RMAA). В ней сгенерировал тестовый WAV-файл, со следующими характеристиками: 44.1 кГц, 16 Бит/сэмпл. Далее, воспроизводил этот файл в плеере, выбирая различные методы вывода звука, записывал выходной сигнал напрямую в файл и анализировал с помощью той же RMAA.

Тест1: В поисках побитово точного вывода

Первым делом решил протестировать так называемые «побитово точные» методы вывода - WASAPI Exclusive, Kernel Streaming и ASIO (посредством ASIO4ALL). Ходят мнения, поскольку эти методы обходят микшер Windows, то дают наиболее качественный, чуть ли не идеальный звук. Проверим!

Выходной поток будем сравнивать с входным с помощью RMAA, а так же побитово с помощью утилитки сравнения файлов. Поехали!


Частотная характеристика


Динамический диапазон


Нелинейные искажения + шум (при уровне -3 дБ)


Интермодуляционные искажения

Параметры одинаковые, графики совпали. Вроде можно говорить о побитово точном выводе. Но сравнивая входной и выходной файлы с помощью специальной утилитки - наткнулся на странный факт: для ASIO4ALL файлы абсолютно разные, хотя для WASAPI Exclusive и Kernel Streaming полное совпадение.

Причина оказалась в нелинейной фазочастотной характеристике (ФЧХ), а так же в присутствии фазовых задержек:


ASIO4ALL ФЧХ


ASIO4ALL Фазовая задержка

Выводы

WASAPI Exclusive и Kernel Streaming действительно дают побитово точный вывод звука, а вот при использовании ASIO4ALL, формально, ни о каком побитовом выводе речи быть не может. Да, системный микшер ASIO4ALL обходит, но вносит в сигнал собственные искажения в виде нелинейной ФЧХ и фазовых задержек. С другой стороны - фазовые искажения (если они одинаковы во всех каналах) никак не воспринимаются на слух.

Тест2: Оставшиеся методы вывода звука


Частотная характеристика


Динамический диапазон


Нелинейные искажения + шум (при уровне -3 дБ)


Интермодуляционные искажения

Выводы

Что же мы видим? DirectSound в Windows XP оказался очень крут. Побитовое сравнение входного и выходного файла это подтвердило: файлы одинаковые! Честно говоря, я сам не поверил измерениям, но но два повторных измерения дали тот же результат. DirestSound в Windows XP выдает побитово точный вывод звука! Разумеется, это верно, если микшер не работает (отсутствуют другие системные или программные звуки) и системная громкость установлена на 100%.
Если сравнить Direct Sound Windows 7 и WASAPI - первый немного лучше. Но в общем и целом, оба метода вносят совершенно незначительные искажения в исходный сигнал. Едва ли со среднестатистическим оборудованием эту разницу возможно услышать.

Резюме

Что же мы имеем? А имеем мы вот что: три побитово точных метода вывода звука: DirectSound в (Windows XP), WASAPI Exclusive, Kernel Streaming (последний поддерживается считанными Плеерами). Кроме этого мы имеем ASIO (тот, который настоящий, не ASIO4ALL), который мне протестировать не удалось, да и поддерживается он ограниченным количеством устройств. И ещё мы имеем два метода вывода, которые вносят небольшие искажения в исходный сигнал: DirectSound Windows 7 и WASAPI Shared. Но, подчёркиваю, искажения эти настолько незначительны, что на слух их распознать можно лишь имея отнюдь недешевое оборудование.

Какой же метод вывода включить в Плеере?

  • Windows XP: однозначно DirectSound - отлично работает, не вносит искажений
  • Windows 7: тут не всё однозначно. Для получения супер-качественного звука можно использовать WASAPI Exclusive или ASIO (при наличии поддержки). Но эти методы блокируют другие звуки в системе, что не всегда удобно. Гораздо удобнее использовать WASAPI или DirectSound.

Kernel Streaming советовать не буду. Пусть этот метод и крут, но его поддержку я встречал лишь у Foobar2000 на уровне «test», и этот метод не работает на ОС начиная с Vista.

Что касается ASIO4ALL: в Windows 7 мы действительно получим небольшое улучшение качества звука (если сравнивать с WASAPI или DirectSound), а вот в Windows XP выгода от использования минимальна: при отсутствии посторонних звуков, идущих на микшер, и 100% системной громкости - местный DirectSound выдает побитово точный звук.

Спасибо за внимание. Надеюсь кому-то данные исследования будут полезны.

Источник: www.aimp.ru, 28.III.2012


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2012