stringtranslate.com

DirectSound

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

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

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

Функции

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

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

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

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

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

Некоторые звуковые карты поздней эры DOS " wavetable ", такие как Sound Blaster AWE32 и Gravis Ultrasound, имели выделенные DSP , которые были заимствованы из цифровых музыкальных инструментов . Эти карты имели локальную память, которую можно было использовать для буферизации нескольких аудиопотоков и их микширования на плате, тем самым разгружая ЦП и значительно улучшая качество звука. Однако это было возможно только в 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, которое обеспечивает обработку звуковых эффектов в аппаратно-ускоренных буферах.

Поддержка ОС

Виндовс 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, преобразование частоты дискретизации KMixer (SRC) для потоков захвата, поддержку многоканального звука и введение DirectMusic . Если аудиооборудование поддерживает аппаратное микширование (также известное как аппаратная буферизация или аппаратное ускорение DirectSound), DirectSound буферизуется непосредственно на устройстве рендеринга. [4] Если потоки DirectSound используют аппаратное микширование, KMixer и его задержка обходят стороной. [5] В Windows 98 и Windows Me предпочтительными были драйверы звука WDM, но совместимость с моделью драйвера VxD была сохранена.

Хотя модель драйверов 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 ). [6] В Windows XP Microsoft представила еще один улучшенный драйвер класса потоковой передачи ядра, AVStream . Начиная с Windows XP, аппаратное ускорение было также добавлено для обработки эффектов захвата DirectSound [7], таких как подавление акустического эха для USB-микрофонов, подавление шума и поддержка массива микрофонов.

Windows Vista/Windows 7

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

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

Виндовс 8

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

Windows CE

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

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

После удаления DirectSound в Windows Vista появилось несколько его замен.

Creative ALchemy (2007) от Sound Blaster обеспечивает аппаратное ускорение DirectSound3D и аудиоэффектов, таких как EAX. [15] 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, без использования аппаратного ускорения. [16]

DSOAL — это библиотека с открытым исходным кодом, которая эмулирует DirectSound 3D и EAX с помощью OpenAL. Можно использовать либо аппаратно-ускоренную реализацию OpenAL, либо OpenAL Soft (которая предоставляет HRTF). [17]

Смотрите также

Ссылки

  1. ^ "Эволюция DirectX". Maximum PC . 3 (9): B8. Октябрь 1998. Получено 21 июля 2019 .
  2. ^ Эффекты захвата DirectSound: MSDN
  3. ^ Часто задаваемые вопросы о DirectShow
  4. ^ Модели драйверов DirectSound
  5. ^ Обзор аппаратного ускорения DirectSound
  6. ^ CakeWalk - Круглый стол Windows Pro Audio
  7. ^ Демонстрация аппаратно-ускоренных эффектов захвата
  8. ^ "Статья Techreport о звуковых картах, совместимых с Vista". 15 января 2008 г. Получено 23 декабря 2008 г.
  9. ^ Creative Technology - Поддержка - Аудио в Windows Vista
  10. ^ "OpenAL и Windows Vista". Архивировано из оригинала 2008-01-02 . Получено 2008-01-10 .
  11. ^ Разгрузка звука: раскрытие аппаратной разгрузки обработки звука в Windows
  12. ^ Комплект драйверов Windows — предварительная версия для разработчиков Windows — Новое для аудиодрайверов
  13. ^ «Обзор реализации — драйверы Windows | Microsoft Docs».
  14. ^ Windows CE 5.0 удалила функциональность
  15. ^ "Creative ALchemy website". Архивировано из оригинала 2008-12-17 . Получено 2008-12-23 .
  16. ^ Непрямой Звук
  17. ^ "DSOAL: заменитель DirectSound DLL, который обеспечивает поддержку объемного звука, HRTF и EAX через OpenAL Soft". GitHub . 20 апреля 2023 г.

Внешние ссылки