Direct sound или windows audio

Блог проекта AIMP

Анонсы / Планы / Заметки

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

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

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

  • 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. Но, подчёркиваю, искажения эти настолько незначительны, что на слух их распознать можно лишь имея отнюдь недешевое оборудование.

Читайте также:  Esd или oem windows 10 что это

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

  • 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

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

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

MME, Windows DirectSound или Wasapi

Так im с помощью Audacity и было интересно, какое устройство записи / системы я должен использовать для лучшего качества звука? Есть MME, Windows DirectSound и Wasapi.Im на ноутбуке Windows 7, и я попробовал их все, и я не вижу большой разницы между three.By по умолчанию настройки были на MME.

2 ответов

MME часто является выбором по умолчанию, так как он поддерживается большинством ОС Windows (MME был выпущен в 1991). Между DirectSound и WASAPI нет большой разницы, так как DirectSound-это в основном просто интерфейс, связанный с DirectX, для интерфейса Windows Audio Session API (WASAPI). WASAPI имеет самую низкую задержку из всех (по дизайну) и поэтому должен быть предпочтительным для записи (особенно когда дело доходит до многодорожечного).

«MME: это Audacity по умолчанию и наиболее совместим со всеми аудио устройств.

Windows DirectSound: это более свежее, чем MME с потенциально меньшей задержкой.

Windows WASAPI: этот хост является самым последним интерфейсом Windows, который поддерживает Audacity, между приложениями (например, Audacity) и драйвером звуковой карты. WASAPI был впервые официально выпущен в 2007 году в Windows Vista. WASAPI особенно полезен для «loopback» устройства для записи воспроизведения на компьютере. Поддерживает 24-разрядные устройства записи. Воспроизведение эмулируется с помощью этого хоста. В результате ползунок воспроизведения на панели инструментов Mixer будет масштабировать только текущий уровень ползунка воспроизведения системы вверх или вниз, а не непосредственно манипулировать этим системным ползунком.»

все между кавычками произошло непосредственно от Audacity. Похоже, им было много, чтобы сказать о WASAPI.

Зачем нужно WASAPI и как правильно выводить звук в Windows

Windows Audio Session API (WASAPI) позволяет клиентским устройствам управлять потоком аудиоданных между приложением и конечным аудиоустройством. Делает комфортным прослушивание музыкальных композиций и микширование без нежелательных задержек и без потери качества. Удобно wasapi скачать на нашем сайте и установить.

Что такое WASAPI

Каждый аудиопоток, воспроизводимый на устройстве, является участником audio сеанса. С помощью абстракции сеанса клиент WASAPI может идентифицировать аудиопоток как член группы связанных аудиопотоков. Система может управлять всеми потоками в session как единым целым.

Читайте также:  Windows unzip all files in folder

Аудиодвижок – это аудиокомпонент пользовательского режима, через который приложения совместно используют доступ к конечному аудиоустройству. Звуковая машина передает аудиоданные между буфером конечной точки и конечным устройством. Для воспроизведения аудиопотока через устройство конечной точки рендеринга приложение периодически записывает аудиоданные в буфер конечной точки рендеринга. Звуковой движок микширует потоки из различных приложений. Чтобы записать аудиопоток с устройства конечной точки захвата, приложение периодически считывает аудиоданные из буфера конечной точки захвата.

WASAPI состоит из нескольких интерфейсов. Первый из них – это интерфейс IAudioClient. Чтобы получить доступ к интерфейсам WASAPI, клиент сначала получает ссылку на интерфейс IAudioClient конечного аудиоустройства, вызывая метод IMMDevice :: Activate с параметром iid, установленным на REFIID IID_IAudioClient. Клиент вызывает метод IAudioClient :: Initialize для инициализации потока на устройстве конечной точки. После инициализации потока клиент может получить ссылки на другие интерфейсы WASAPI, вызвав метод IAudioClient :: GetService.

Многие методы в WASAPI возвращают код ошибки AUDCLNT_E_DEVICE_INVALIDATED, если конечное аудиоустройство, используемое клиентским приложением, становится недействительным. Часто приложение может исправить эту ошибку.

WASAPI реализует следующие интерфейсы в foobar.

  • AudioCaptureClient. Позволяет клиенту читать входные данные из буфера конечной точки захвата и передавать в браузер.
  • AudioClient. Создавать, настроить и инициализировать аудиопоток между аудиоприложением и аудиосистемой или аппаратным буфером конечного аудиоустройства.
  • AudioClock. Отслеживать скорость передачи данных потока и текущую позицию в потоке.
  • AudioRenderClient. Записывать выходные данные в буфер конечной точки рендеринга.
  • AudioSessionControl. Настраивать параметры управления для аудиосеанса и отслеживать события в сеансе, в том числе default.
  • AudioSessionManager. Включить доступ к элементам управления сеансом и элементам управления громкостью как для межпроцессных, так и для конкретных аудиосеансов.
  • AudioStreamVolume. Контролировать и отслеживать уровни громкости для всех каналов в аудиопотоке.
  • ChannelAudioVolume. Управлять уровнями громкости для всех каналов в аудиосеансе, которому принадлежит поток.
  • SimpleAudioVolume. Управлять общим уровнем громкости аудиосеанса.
  • AudioSessionEvents. Предоставляет уведомления о событиях, связанных с сеансом, таких как изменения уровня громкости, отображаемого имени и состояния сеанса. Открывает доступ пользователю данной программы в mode и support.

В чем отличие Wasapi Exclusive (Event) от Wasapi Exclusive (Push)

Если вы решили скачать wasapi exclusive , то есть два варианта на 32 и 64 bite. Есть два основных способа связи с помощью:

  • Wasapi Exclusive (Event).
  • Wasapi Exclusive (Push).

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

Обратите внимание: начиная с версии «MC 18.0.183», WASAPI теперь используется, как программа по умолчанию. Если ваше аудиоустройство не поддерживает этот режим, его можно отключить в диалоговом окне настроек устройства.

Версии до 18.0.183. В режиме вывода WASAPI данные из Media Center передаются на звуковое устройство. Он работает практически со всем оборудованием.

WASAPI Event Style позволяет звуковому устройству извлекать данные из Media Center. Этот метод поддерживается не всем оборудованием, но рекомендуется, если он поддерживается. Это дает несколько преимуществ:

Это позволяет аудиоподсистеме извлекать данные вместо того, чтобы отправлять данные в систему.

Оборудование (или интерфейс WASAPI) никогда не видит вызовов паузы или сброса. Вместо этого при паузе или сбросе тишина доставляется в цикле pull. Это устраняет необходимость во взломах карт, которые окружают свои буферы при паузе, сбросе и т. Д. (ATI HDMI и т. д.). Это обеспечивает более прямой путь данных к driver/оборудованию. В основном «цикле извлечения» используется круговой буфер без блокировки (система, которую Дж. Ривер построил для ASIO), поэтому выполнение запроса на извлечение выполняется как можно быстрее.

В чем разница между Directsound и Wasapi Shared

Windows – наиболее широко используемая операционная система в мире. люди используют ее для решения повседневных задач, и прослушивание звука – одна из них. Microsoft Windows 7 и выше может воспроизводить звук двумя способами. используя прямую поддержку звука Directx и поддержку WASAPI. большинство приложений Windows используют подход Direct Sound. Windows может воспроизводить несколько потоков из разных приложений при использовании прямого звука. Directsound работает как промежуточный уровень между программным обеспечением и звуковыми драйверами. Он берет звук из другого программного обеспечения, затем передискретизирует весь звуковой поток в один поток, а затем отправляет его в аудиодрайверы. Обратной стороной этого подхода является то, что мы никогда не получаем то, что на самом деле играем. например, если кто-то воспроизводит звуковой файл на 192 кГц, 24 бит. тогда окна, вероятно, преобразуют его в 44 кГц, 16 бит с другим звуком. Прямой звук автоматически передискретизирует звуковой поток до соответствующей частоты дискретизации, которая может поддерживаться аудиооборудованием.

Читайте также:  Microsoft windows 10 home 64 bit box

WASAPI предоставляет два режима работы. общий режим и эксклюзивный режим. Общий режим работает так же, как прямой звук, а микшер Win выполняет повторную выборку и микширование. В эксклюзивном режиме WASAPI обходит звуковой микшер Windows, и приложение может напрямую отправлять данные на звуковую карту. в этом режиме приложение может декодировать такие форматы, как DTS, DTS master audio, DOLBY True HD, Dolby digital, Flac и т. д., и отправлять неизмененный поток на звуковую карту.

Кроме различных режимов, важно также, как WASAPI управляет данными между буферами. WASAPI использует подход пуш и PULL для запроса данных, которые необходимо обработать. При использовании метода push приложение помещает данные в буферы и постоянно отслеживает их, и как только видит, что они опустошены, оно заполняет их снова. В подходе PULL, который является современной разработкой, приложение использует два буфера. Аудиодрайверы вызывают приложение, как только оно видит пустой буфер, и начинает использовать данные из другого буфера. тем временем приложения заполняют пустой буфер.

Что лучше ASIO или WASAPI

ASIO был разработан для обхода исходной некорректной аудиоподсистемы Windows, которая заставляла все работать с фиксированной скоростью, смешивала системные звуки и аудиопотоки и имела серьезные проблемы с задержкой. ASIO был разработан для обеспечения интерфейса с малой задержкой для профессиональных аудио вычислений. Wasapi – это разработка Microsoft, устраняющая недостатки на более ранней стадии, и она работает стабильно. Но она меньше поддерживает нестандартные скорости воспроизведения и может не поддерживать dop dsd или более высокие скорости dsd.

ASIO изначально поддерживает все частоты дискретизации, которые может обрабатывать подключенный ЦАП, и не имеет проблем с dsd. Длина буфера в основном зависит от общей загрузки системы, поскольку компьютеру приходится прерывать другие операции для загрузки следующего фрагмента выборок в выходной буфер, поэтому в системах с низким энергопотреблением или более загруженных системах очень короткий или очень длинный буфер может увеличить нагрузку на процессор. Это может спровоцировать нежелательную задержку при воспроизведении музыкальных композиций.

ASIO – это модель аудиоинтерфейса Steinberg, используемая практически во всех профессиональных аудиоприложениях, и обычно это лучший способ работы с очень низкими задержками. Производители профессиональных звуковых карт предоставляют драйверы ASIO. Его единственная слабость заключается в том, что вы можете использовать только один драйвер ASIO за раз, что может вызвать проблемы в будущем, поскольку все больше и больше студийного оборудования, такого как микрофоны, звуковые модули и мониторы (именно так называются динамики в мире профессионального обучения). audio) поставляются с интерфейсами USB, а не с более старой моделью, объединяющей все ваши входы и выходы в единый аудиоинтерфейс.

Многие компании, производящие потребительское аудио, в наши дни производят asio-драйверы для своих ЦАП, поскольку они исключают из уравнения любые вычисления в Windows и обеспечивают более высокие шансы на получение хороших результатов от их продукта.

Какие операционные системы поддерживают Wasapi

Wasapi разработан для операционного семейства Windows и стабильно работает с ОС, начиная от Windows 7 и XP. Wasapi в Windows 10, по мнению большинства пользователей, является наиболее удобной.

Где скачать драйвер Wasapi

Скачать драйвер для Wasapi, а также сопутствующее программное обеспечение можно тут.

Вывод

WASAPI предоставляет два варианта рендеринга звука – общий режим и эксклюзивный режим. В монопольном режиме вы – единственное приложение, которое обращается к рассматриваемой аудио конечной точке – все остальные приложения не могут издавать никакого шума. Это дает наилучшую возможную производительность, как и все профессиональные аудио-приложения, такие как Cubase, SONAR, REAPER, Pro Tools и т. д. Но они не используют WASAPI. Они используют aimp ASIO или Kernel Streaming.

Радиоинженер (по первому высшему образованию). С раннего детства слушаю разнообразную музыку. Всегда интересовался звуковоспроизводящей аппаратурой, которую обновлял множество раз. Я увлеченный любитель и музыка по жизни всегда со мной. Увлекаюсь HI-Fi уже более 20 лет.

Оцените статью
Adblock
detector