DirectSound - 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 "таблица волн "звуковые карты, такие как Sound Blaster AWE32 и Гравис Ультразвук показал посвященный 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

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

Поддержка ОС

Windows 95

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

Windows 98 представила WDM Audio и Аудио микшер ядра Водитель (KMixer ), что позволило осуществлять цифровое микширование, маршрутизацию и обработку одновременных аудиопотоков с более высоким качеством преобразования частоты дискретизации, а также потоковую передачу ядра. В WDM DirectSound отправляет данные в программный KMixer. Windows 98 Second Edition улучшила поддержку звука WDM, добавив аппаратную буферизацию DirectSound, аппаратную абстракцию DirectSound3D, преобразование частоты дискретизации (SRC) KMixer для захвата потоков, поддержку многоканального звука и введение 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 имеет полностью переписанный звуковой стек, основанный на Универсальная аудио архитектура. Из-за архитектурных изменений в переработанном звуковом стеке прямой путь от DirectSound к звуковым драйверам не существует.[8] DirectSound, DirectMusic и другие API, такие как MME эмулируются как WASAPI Экземпляры сеанса. DirectSound работает в режиме эмуляции на программном микшере Microsoft. Эмулятор не имеет аппаратной абстракции, поэтому нет аппаратного ускорения DirectSound, а это означает, что аппаратное и программное обеспечение, полагающееся на ускорение DirectSound, могло снизить производительность. Вероятно, предполагаемое снижение производительности может быть незаметным, в зависимости от приложения и реального оборудования системы. В случае оборудования 3D-звуковые эффекты воспроизводятся с использованием DirectSound3D, они не будут воспроизводиться; это также нарушает совместимость с расширениями EAX.[9]

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

Windows 8

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

Windows CE

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

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

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

Sound Blaster's Creative ALchemy (2007) обеспечивает аппаратное ускорение 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]

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

использованная литература

  1. ^ «Эволюция DirectX». Максимальный ПК. 3 (9): B8. Октябрь 1998. Получено 21 июля, 2019.
  2. ^ Эффекты захвата DirectSound: MSDN
  3. ^ DirectShow FAQ
  4. ^ Модели драйверов DirectSound
  5. ^ Обзор аппаратного ускорения DirectSound
  6. ^ CakeWalk - Круглый стол по Windows Pro Audio
  7. ^ Выявление эффектов захвата с аппаратным ускорением
  8. ^ "Статья в техническом отчете о звуковых картах, совместимых с Vista". Получено 2008-12-23.
  9. ^ Creative Technology - Поддержка - Аудио в Windows Vista
  10. ^ «OpenAL и Windows Vista». Архивировано из оригинал на 2008-01-02. Получено 2008-01-10.
  11. ^ Разгрузка звука: демонстрация обработки звука с аппаратной выгрузкой в ​​Windows
  12. ^ Комплект драйверов Windows - предварительная версия для разработчиков Windows - новинка для аудиодрайверов
  13. ^ http://msdn.microsoft.com/en-us/library/windows/hardware/dn265105(v=vs.85).aspx
  14. ^ В Windows CE 5.0 удалена функциональность
  15. ^ "Сайт Creative ALchemy". Архивировано из оригинал на 2008-12-17. Получено 2008-12-23.
  16. ^ IndirectSound

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