DirectSound

редактировать

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

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

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

Содержание

  • 1 Функции
  • 2 DirectSound3D
  • 3 EAX
  • 4 Поддержка ОС
    • 4.1 Windows 95
    • 4.2 Windows 2000 / XP
    • 4.3 Windows Vista / Windows 7
    • 4.4 Windows 8
    • 4.5 Windows CE
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки

Возможности

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

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

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

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

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

Некоторые звуковые карты "wavetable " эпохи поздней DOS, такие как 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

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 (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 для своего оборудования.

В 2007 году было запущено решение для повторного включения аппаратного ускорения DirectSound3D и звуковых эффектов, таких как EAX, под названием Creative ALchemy. 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 в фоновом режиме без какого-либо вмешательства пользователя.

Windows 8

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

Windows CE

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

См. Также

Ссылки

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

Последняя правка сделана 2021-05-17 08:13:57
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте