Меню Рубрики

Kernel streaming windows 7

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

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

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

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

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

  • Подопытный плеер: 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 Фазовая задержка

Выводы
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 выдает побитово точный звук.

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

Тестирование методов вывода звука : 14 комментариев

А Windows Default это что?

Это вообще не метод вывода, а устройство (наушники или динамики — то, которое вы назначили по умолчанию для вывода звука)

Windows Default — устройство по умолчанию, согласно настройкам ОС. В AIMP-е, для каждого из методов вывода звука (за исключением ASIO), есть свой «Windows Default»

Ну у меня есть выбор или Realtek Hd или DirectSound: Windows Default вот так 🙂 а еще в другом плеере есть DirectSound8 audio slink или это одно и тоже Direct ? 🙂

Покажите лучше скриншоты

А чем можно сделать скриншоты?

Считаю необходимым сделать в AIMP вывод через WSAPI Exclusive. Сейчас для прослушивания lossless использую foobar2000, но один плеер лучше, чем два. Кстати, буду благодарен на ссылку с описанием тракта AIMP3, если таковая информация имеется.

> буду благодарен на ссылку с описанием тракта AIMP3, если таковая информация имеется.
вот http://www.aimp.ru/blogs/?p=88

Попробовал в наушниках послушать FLAC через WSAPI Shared — звук отчётливо чище, особено высокие частоты, но загрузка процессора при этом на уровне 33%, причём 3-е из трёх ядер загружено «в потолок», через DirectSound нагрузка CPU 1-2%. WSAPI Exclusive — к сожалению протестировать не удалось, AIMP виснет, видимо дрова моего SB Audigy для 7-ки не тянут.

Direct Sound однозначно 🙂

Неплохая статья, которая развенчивает многие мифы по поводу суперкачества ASIO

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

foobar2000: Kernel Streaming против DirectSound

Многие задаются вопросом выбора программного аудиоплеера. А определившись с плеером, начинают терзаться сомнениями, какому интерфейсу отдать предпочтение для прослушивания музыки — DirectSound, Kernel Streaming, ASIO, а может быть, WASAPI? Сегодня я попробую сравнить вывод звука в популярном плеере foobar2000 через интерфейсы DirectSound и Kernel Streaming.

Идей для написания статьи послужило высказывание участника форума 3DNews Dimmka в ветке Некоторые вопросы качества воспроизведения программных плееров:

«Народ, задался вопросом, через какой интерфейс Фубаром лучше выводить звук для прослушиваня музыки: Direct Sound, Kernel Streaming, ASIO, WASAPI? На просторох инета встречал только общие фразы (может плохо искал) вроде: Kernel Streaming — это супер, ASIO — ещё лучше, kmixer — отстой и т.д. Какой либо сравнительный тест этих плагинов к Фубару мне найти не удалось, может кто сталкивался?»

Для начала ограничимся только интерфейсами Kernel Streaming и DirectSound и проверим.

Измерения выполнялись с помощью тестового пакета RightMark Audio Analyzer 6.2.3 PRO. Запись в RMAA производилась через интерфейс ASIO, 32 bit 44,1 kHz.

Воспроизведение осуществлялось проигрывателем foobar2000 версии 0.9.6.3 с подключенным дополнительно плагином Kernel Streaming Output 1.2.2.

Проигрывателем воспроизводился cгенерированный в RMAA WAV-файл 16 bit 44,1 kHz. Выбор только этой битности и частоты дискретизации обусловлен предположением, что пока именно в таком виде находится большинство хранимых на компьютерах музыкальных материалов.

С воспроизведением возникла одна заминка. В тестировании участвовала звуковая карта ESI Juli@ с драйвером версии 1.23 (Windows XP). Драйвер звуковой карты ESI Juli@ создаёт в системе три виртуальных устройства вывода: Juli@ Ch12, Ch34 и Ch1234. Каналы 3 и 4 соответствуют цифровому выходу, 1 и 2 — аналоговому, а устройство Juli@ Ch1234 предназначено для вывода сигнала одновременно через аналоговые и цифровые выходы.

Так вот, изначально предполагалось воспроизводить тестовый файл через виртуальное устройство Juli@ Ch12, соответствующее аналоговому выходу, а влияние аналоговой части звуковой карты исключить с помощью реализованной в драйвере ESI функции DirectWIRE. Но при попытке воспроизведения через интерфейс Kernel Streaming и устройство Ch12 проигрыватель foobar выдавал ошибку:

Поэтому для Kernel Streaming тестовый файл пришлось воспроизводить через устройство Juli@ Ch1234.

Direct Sound в foobar подобной проблемы не вызывал, но в DirectWIRE для Ch12 и Ch1234 необходимо было соединять разные интерфейсы драйвера.

Проведённый дополнительный тест показал полное отсутствие какой бы то ни было разницы, но тем не менее для всех тестов решено было выбрать в проигрывателе foobar2000 для вывода виртуальное устройство Juli@ Ch1234.

Громкость в проигрывателе была выставлена на максимум, ползунок Wave в системном микшере в крайнем верхнем положении.

Почему нет теста для Kernel Streaming 24-bit? Во-первых, потому что Kernel Streaming со включенным 24-bit Output у меня не заработал (хотя заработал с 32-bit), вместо нормального звука из колонок раздавался скрежет. А во-вторых, не было цели детально выяснить разницу между 16 и 24-bit, а только выяснить, есть ли в принципе эффект от повышения разрешения в проигрывателе при воспроизведении 16-битного материала.

В процессе тестирования моральную поддержку оказывал кот Зухель.

Такие показатели, как амплитудно-частотная характеристика и взаимопроникновение каналов в данном тесте не показательны. Интересны только динамический диапазон, нелинейные и интермодуляционные искажения. Вот на них и посмотрим.

Тест первый. DirectSound 16-bit output vs Kernel Streaming 16-bit output .

Тест DirectSound 16 Kernel Streaming 16
Динамический диапазон, дБ (А): 97.8 97.8
Гармонические искажения, %: 0.0004 0.0004
Интермодуляционные искажения + шум, %: 0.0035 0.0035

Цифры и графики абсолютно идентичны. Kernel Streaming никаких преимуществ перед DirectSound не показал.

Тест второй. DirectSound 16-bit output vs DirectSound 16-bit output + Dither .

Тест DirectSound 16 DirectSound 16 Dither
Динамический диапазон, дБ (А): 97.8 83.4
Гармонические искажения, %: 0.0004 0.0038
Интермодуляционные искажения + шум, %: 0.0035 0.040

На самом деле функция Dither в проигрывателе foobar2000 это не дизеринг (dithering), а нойз шейпинг (noise shaping), алгоритм более продвинутый. Теоретически нойз шейпинг призван улучшить звучание, уводя искажения из средних частот в высокочастотную область. Эффект основан на том, что, во-первых, часто акустика невысокого класса может иметь значительный завал на краях слышимого диапазона, во-вторых, чувствительность слуха в зависимости от частоты неравномерна, максимум приходится на средние частоты, а в-третьих, субъективно искажения на средних частотах воспринимаются намного острее, чем искажения на высоких. Но в данном тесте видно, что функция применена не к месту и картину, скорее, только ухудшает.

Тест третий. DirectSound 16-bit output vs DirectSound 24-bit output .

Тест DirectSound 16 DirectSound 24
Динамический диапазон, дБ (А): 97.8 97.8
Гармонические искажения, %: 0.0004 0.0004
Интермодуляционные искажения + шум, %: 0.0035 0.0035

Никакой разницы. Если к сигналу не применяются никакие программные обработки, и в том числе регулировка громкости, включение в foobar2000 24-битного вывода на изначально 16-битном источнике никакого выигрыша не даёт.

По первой серии тестов можно сказать, что смена в программном плеере foobar2000 интерфейса вывода с Direct Sound на Kernel Streaming и включение 24 bit вывода на 16-битном источнике никаких преимуществ не демонстрирует. А задействование функции Dither вообще скорее вредит.

Тогда откуда столько откликов об улучшении звука от вывода через Kernel Streaming, включения 24 bit output или задействования функций дизеринга и нойз шейпинга? Обратите внимание, для серии тестов выше уровень громкости в проигрывателе и в системном микшере был установлен на максимум, т. е. в 0 Дб. Оставим громкость в проигрывателе пока в стороне (этому вопросу посвящена отдельная статья, Winamp и foobar2000, влияние программной регулировки громкости), и обратим внимание на системный микшер.

Для драйвера звуковой карты ESI Juli@, принимавшей участие в данном тестировании, максимальное положение ползунка Wave в системном микшере соответствует нулевому изменению уровня сигнала. Но практика показывает, что так происходит с драйверами не всех звуковых карт. Сымитируем подобную ситуацию, сдвинув ползунок так, чтобы уровень сигнала изменился приблизительно на -2 Дб (по показаниям RMAA) и повторим серию тестов.

Дополнительно для сравнения на графиках будет присутствовать результат DirectSound 16 bit из первой части тестирования.

Тест четвёртый. DirectSound 16-bit output vs Kernel Streaming 16-bit output , -2dB.

Тест DirectSound 16 Kernel Streaming 16
Динамический диапазон, дБ (А): 95.8 97.8
Гармонические искажения, %: 0.0008 0.0004
Интермодуляционные искажения + шум, %: 0.0044 0.0035

Зелёный и голубой графики полностью совпали. Изменение громкости в микшере на результат Kernel Streaming никак не влияет, так как Kernel Streaming обходит системный микшер, а вот DirectSound нет. Поэтому результат с DirectSound стал несколько хуже, однако сравнивать их теперь стало не совсем корректно, поскольку уровень громкости изменился только для DirectSound.

Тест пятый. DirectSound 16-bit output vs DirectSound 16-bit output + Dither , -2dB.

Тест DirectSound 16 DirectSound 16 Dither
Динамический диапазон, дБ (А): 95.8 83.3
Гармонические искажения, %: 0.0008 0.0040
Интермодуляционные искажения + шум, %: 0.0044 0.040

Здесь нойз шейпинг делает то, для чего и предназначен. С одной стороны, по абсолютным цифрам искажения возросли, и значительно. Но с другой стороны, по графикам видно, что включение функции Dither увело искажения в высокочастотную область за 15 кГц. Поэтому включать или не включать — вопрос неоднозначный, включение этой функции может принести как положительные, так и отрицательные результаты при разных сочетаниях в цепочке звукового тракта, включая уши слушателя.

Тест шестой. DirectSound 16-bit output vs DirectSound 24-bit output , -2dB.

Тест DirectSound 16 DirectSound 24
Динамический диапазон, дБ (А): 95.8 97.8
Гармонические искажения, %: 0.0008 0.0004
Интермодуляционные искажения + шум, %: 0.0044 0.0035

Включение 24 bit output для DirectSound вплотную приближает результат к DirectSound 16 bit из первой серии тестов (напомню, полностью совпавший с результатом Kernel Streaming). Обнаружить различия между зелёным и голубым графиками можно только в нескольких местах при большом увеличении.

Вспоминается старый анекдот. Ехали как-то по Шотландии на поезде в одном купе четверо ученых: астроном, физик, математик и логик. И увидели в окно черную овцу.

Астроном: «Посмотрите, в Шотландии овцы черные!».

Физик: «Нет, мы можем утверждать только, что в Шотландии некоторые овцы черные.».

Математик: «Нет, мы знаем только, что в Шотландии есть как минимум одна черная овца.».

Логик: «Нет, в Шотландии есть как минимум одна овца, черная как минимум с одной стороны!».

Из результатов тестирования можно сделать вывод, что при наличии качественной звуковой карты с качественным же драйвером, воспроизведение музыкального материала через интерфейс Kernel Streaming не дает преимуществ перед DirectSound, при выполнении одного условия: соответствующие ползунки системного микшера должны быть установлены в 0 Дб — как правило, это максимальное положение. Про отключенные системные звуки и отсутствие другого запущенного воспроизводяще-записывающего софта, думаю, и так понятно.

Если же это условие трудновыполнимо, например, из-за проблемы с драйвером, проявляющейся тем, что верхнее положение ползунков системного микшера не соответствует нулевому изменению уровня, или используются какие-либо программы, регулирующие громкость изменением уровней в микшере (к примеру, софт для ТВ-тюнера), тогда для прослушивания музыки целесообразно использовать Kernel Streaming.

Если использование Kernel Streaming показано, но по каким-либо причинам задействовать его не удаётся (например, проигрыватель выдаёт ошибку или система теряет стабильность), то в плеере foobar2000 можно добиться близких результатов, включив Output data format 24 бита для DirectSound.

Если не повезло, не работает Kernel Streaming и нельзя включить 24 bit для DirectSound, то в некоторых случаях положительный эффект может дать включение в foobar2000 функции «Dither».

И напоследок цитата с сайта foobar2000, что думают сами авторы проигрывателя о качестве воспроизведения:

Q: Does foobar2000 sound better than other players?

A: No. Most of «sound quality differences» people «hear» are placebo effect (at least with real music), as actual differences in produced sound data are below their noise floor (1 or 2 last bits in 16bit samples). foobar2000 has sound processing features such as software resampling or 24bit output on new high-end soundcards, but most of the other mainstream players are capable of doing the same by now.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Kernel stack inpage error windows xp
  • Kernel power windows 7 64 bit
  • Kernel power 41 error on windows 10
  • Kernel power 41 63 windows 10 fix
  • Kernel debugging windows xp