Windows direct sound что это

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

Читайте также:  Как изменить интерфейс линукс

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

  • 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

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

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

DirectSound — DirectSound

DirectSound — это устаревший программный компонент библиотеки Microsoft DirectX для операционной системы Windows , замененный XAudio2 . Он обеспечивает интерфейс с малой задержкой для драйверов звуковых карт, написанных для Windows 95 через Windows XP, и может обрабатывать микширование и запись нескольких аудиопотоков. DirectSound был первоначально написан для Microsoft Джоном Майлзом .

Помимо предоставления основной услуги передачи аудиоданных на звуковую карту, DirectSound предоставляет другие важные возможности, такие как запись и микширование звука, добавление эффектов к звуку (например, реверберация , эхо или флэнджер ) с использованием буферов с аппаратным ускорением в Windows 95 — XP. и размещение звуков в трехмерном пространстве . DirectSound также предоставляет средства для захвата звуков с микрофона или другого входа и управления эффектами захвата во время захвата звука.

После многих лет разработки DirectSound сегодня представляет собой зрелый API , предоставляющий множество других полезных возможностей, таких как возможность воспроизводить многоканальные звуки с высоким разрешением. Хотя DirectSound был разработан для использования в играх, сегодня он используется для воспроизведения звука во многих аудиоприложениях. DirectShow использует возможности аппаратного ускорения звука DirectSound, если возможности аппаратного ускорения звука звуковой карты существуют и предоставляются аудиодрайвером.

Читайте также:  Изменить разрешения для файла windows 10

СОДЕРЖАНИЕ

Функции

DirectSound — это API пользовательского режима, который обеспечивает интерфейс между приложениями и драйвером звуковой карты , позволяя приложениям создавать звуки и воспроизводить музыку.

DirectSound считался революционным, когда он был представлен в 1995 году, поскольку он позволял использовать несколько одновременных аудиопотоков и позволял нескольким приложениям одновременно обращаться к звуковой карте. До этого от разработчиков игр требовалось реализовать собственный движок звукового рендеринга в программном обеспечении.

DirectSound обеспечивает преобразование частоты дискретизации и микширование звука ( громкость и панорамирование ) для неограниченного количества источников звука; однако практические ограничения заключаются в количестве аппаратных источников звука и производительности программных микшеров.

В архитектуре DirectSound реализована концепция «кольцевого буфера», который будет непрерывно воспроизводиться в цикле. Прикладной программист создает звуковой буфер, затем непрерывно запрашивает его состояние с помощью «курсора чтения» и обновляет его с помощью «курсора записи». Есть два типа буферов — «потоковый» буфер, в котором хранятся непрерывные звуки, например фоновая музыка, и «статический» буфер, содержащий короткие звуки.

На поддерживаемых звуковых картах DirectSound будет пытаться использовать буферы с «аппаратным ускорением», то есть буферы, которые могут быть помещены в локальную память звуковой карты или доступны звуковой карте из системной памяти. Если аппаратное ускорение недоступно, DirectSound создаст звуковые буферы в системной памяти и будет использовать чисто программное микширование.

Некоторая поздня DOS-эпоха « табличные » звуковые карты , такие как Sound Blaster AWE32 и Gravis Ultrasound признаков посвященных ЦСП , которые были заимствованы из цифровых музыкальных инструментов . Эти карты имели локальную память, которую можно было использовать для буферизации нескольких аудиопотоков и микширования их на плате, тем самым разгружая процессор и значительно улучшая качество звука. Однако это было возможно только в DOS путем прямого программирования оборудования, а полнофункциональное «аппаратное ускорение» из локальной памяти никогда не было реализовано на этих картах из-за сложности двойной буферизации . Более поздние карты, такие как Sound Blaster Live! , Audigy и X-Fi могут напрямую обращаться к буферам системной памяти.

DirectSound3D

DirectSound3D (DS3D) — это расширение DirectSound, представленное с DirectX 3 в 1996 году с целью стандартизации 3D-звука в Windows. DirectSound3D позволяет разработчикам программного обеспечения использовать звук, записывая один раз для одного аудио API, вместо того, чтобы многократно переписывать код, чтобы работать для каждого поставщика звуковых карт.

В DirectX 5 DirectSound3D получил поддержку звуковых карт, которые используют сторонние алгоритмы 3D-звука для правильного ускорения DirectSound3D с помощью методов, одобренных Microsoft.

В DirectX 8 DirectSound и DirectSound3D (DS3D) были официально объединены и получили название DirectX Audio , однако API по-прежнему обычно называют DirectSound.

EAX — это расширение DirectSound и DirectSound3D, которое обеспечивает обработку звуковых эффектов для буферов с аппаратным ускорением.

Поддержка ОС

Windows 95

В Windows 95, 98 и Me компонент микшера DirectSound и драйверы звуковой карты были реализованы в виде драйвера VxD режима ядра (Dsound.vxd), что позволяло прямой доступ к первичному буферу, используемому аудиооборудованием, и, таким образом, предоставляя минимально возможная задержка между API пользовательского режима и базовым оборудованием, но в некоторых случаях вызывает нестабильность и ошибки синего экрана .

Windows 98 представила WDM Audio и драйвер Kernel Audio Mixer ( KMixer ), который обеспечивает цифровое микширование, маршрутизацию и обработку одновременных аудиопотоков с более высоким качеством преобразования частоты дискретизации, а также потоковую передачу ядра. В WDM DirectSound отправляет данные в программный KMixer. Windows 98 Second Edition улучшила поддержку звука WDM, добавив аппаратную буферизацию DirectSound, аппаратную абстракцию DirectSound3D, преобразование частоты дискретизации (SRC) KMixer для захвата потоков, поддержку многоканального звука и введение DirectMusic . Если аудиооборудование поддерживает аппаратное микширование (также известное как аппаратная буферизация или аппаратное ускорение DirectSound), DirectSound выполняет буферизацию непосредственно в устройстве рендеринга. Если потоки DirectSound используют аппаратное микширование, KMixer и его задержка задержки игнорируются. В Windows 98 и Windows Me звуковые драйверы WDM были предпочтительнее, но совместимость с моделью драйвера VxD была сохранена.

Читайте также:  При загрузке windows просит ввести пароль

Хотя модель драйвера Windows (WDM) была доступна начиная с Windows 98, немногие производители звуковых карт использовали ее. Из-за внутренней буферизации KMixer представил значительную задержку обработки (30 мс в современных системах). Windows 98 также включает драйвер класса потоковой передачи WDM (Stream.sys) для удовлетворения этих требований к обработке потоков мультимедийных данных в реальном времени. Когда звуковая карта использует специальный драйвер для использования с поставляемым системой драйвером класса порта PortCls.sys или реализует мини-драйвер для использования с драйвером класса потоковой передачи, приложения могут полностью обходить KMixer и вместо этого использовать потоковые интерфейсы ядра для уменьшения задержки. .

Windows 2000 / XP

В Windows 2000 Microsoft также реализовала тот же звуковой стек на основе WDM в Windows NT , представив звуковые драйверы WDM и компонент микшера ядра ( KMixer ). В Windows XP Microsoft представила еще один улучшенный драйвер класса потоковой передачи ядра, AVStream . Начиная с Windows XP, аппаратное ускорение было также добавлено для обработки эффектов захвата DirectSound, таких как подавление акустического эха для USB-микрофонов, подавление шума и поддержка массивных микрофонов.

Windows Vista / Windows 7

Windows Vista имеет полностью переписанный звуковой стек, основанный на универсальной звуковой архитектуре . Из-за архитектурных изменений в переработанном звуковом стеке прямой путь от DirectSound к звуковым драйверам не существует. DirectSound, DirectMusic и другие API, такие как MME , эмулируются как экземпляры сеанса WASAPI . DirectSound работает в режиме эмуляции на программном микшере Microsoft. Эмулятор не имеет аппаратной абстракции, поэтому нет аппаратного ускорения DirectSound, а это означает, что аппаратное и программное обеспечение, полагающееся на ускорение DirectSound, могло снизить производительность. Вероятно, предполагаемое снижение производительности может быть незаметным, в зависимости от приложения и реального оборудования системы. В случае аппаратных 3D-звуковых эффектов, воспроизводимых с использованием DirectSound3D, они не будут воспроизводиться; это также нарушает совместимость с расширениями EAX.

Сторонние API, такие как ASIO и OpenAL , не подвержены этим архитектурным изменениям в Windows Vista, поскольку они используют IOCtl для непосредственного взаимодействия с аудиодрайвером. Решением для приложений, которые хотят воспользоваться преимуществами аппаратного ускорения высококачественного трехмерного позиционного звука, является использование OpenAL. Однако это работает, только если производитель предоставляет драйвер OpenAL для своего оборудования.

Windows 8

Аудиостек WASAPI в Windows 8 представляет поддержку «аппаратной разгрузки» нескольких аудиопотоков на звуковую карту для микширования и обработки эффектов, в дополнение к программной обработке, представленной в Vista, однако эта функциональность доступна только для приложений среды выполнения Windows . Аппаратные интерфейсы DirectSound и DirectMusic для драйверов звуковой карты не реализованы.

Windows CE

Хотя поддержка DirectSound была доступна в версиях Windows CE до 4.2, она была удалена, начиная с 5.0. Windows CE 6.0 также не поддерживает DirectSound, вместо этого предпочитая переписывать приложения для использования API Waveform Audio.

Реализации замены

После удаления DirectSound в Windows Vista появилось несколько заменяющих его реализаций.

Creative ALchemy (2007) от Sound Blaster обеспечивает аппаратное ускорение DirectSound3D и звуковых эффектов, таких как EAX. Creative ALchemy перехватывает вызовы DirectSound3D и преобразует их в вызовы OpenAL для обработки поддерживаемым оборудованием, таким как Sound Blaster X-Fi и Sound Blaster Audigy . Для программных аудиорешений Creative ALchemy использует встроенный 3D-движок без использования OpenAL.

Realtek , производитель интегрированных аудиокодеков HD , имеет продукт, похожий на ALchemy, под названием 3D SoundBack. Компания C-Media , производитель наборов микросхем звуковых карт для ПК , также имеет решение под названием Xear3D EX, хотя вместо этого оно работает путем прозрачного перехвата вызовов DirectSound3D в фоновом режиме без какого-либо вмешательства пользователя.

IndirectSound — это бесплатная библиотека, которая эмулирует DirectSound 3D с помощью XAudio2 без использования аппаратного ускорения.

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