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 и 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, которое обеспечивает обработку звуковых эффектов в буферах с аппаратным ускорением.
Поддержка ОС
[ редактировать ]Windows 95
[ редактировать ]В Windows 95, 98 и Me компонент микшера DirectSound и драйверы звуковой карты были реализованы в виде режима ядра драйвера VxD (Dsound.vxd), что обеспечивало прямой доступ к основному буферу, используемому аудиооборудованием, и, таким образом, обеспечивало минимально возможная задержка между API пользовательского режима и базовым оборудованием, но в некоторых случаях приводит к нестабильности и синего экрана ошибкам .
В Windows 98 были представлены WDM Audio и драйвер Kernel Audio Mixer ( KMixer ), которые позволяли осуществлять цифровое микширование, маршрутизацию и обработку одновременных аудиопотоков с более высоким качеством преобразования частоты дискретизации, а также потоковую передачу ядра. В рамках WDM DirectSound отправляет данные в программный KMixer. Во втором выпуске Windows 98 улучшена поддержка звука 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/ХР
[ редактировать ]В 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 для прямого взаимодействия с аудиодрайвером. Решением для приложений, которые хотят использовать преимущества высококачественного 3D-позиционного звука с аппаратным ускорением, является использование 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 появилось несколько реализаций замены.
(2007) от Sound Blaster Creative ALchemy обеспечивает аппаратное ускорение 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 ]
См. также
[ редактировать ]- DirectMusic
- ОпенАЛ
- Продвинутая звуковая архитектура Linux
- Звуковая архитектура Windows Vista
- Устаревшие аудиокомпоненты Windows
- Плагин DirectX
- Кроссплатформенный инструмент для создания аудио
- XAudio2
Ссылки
[ редактировать ]- ^ «Эволюция DirectX» . Максимум ПК . 3 (9): Б8. Октябрь 1998 года . Проверено 21 июля 2019 г.
- ^ Эффекты захвата DirectSound: MSDN
- ^ Часто задаваемые вопросы по DirectShow
- ^ Модели драйверов DirectSound
- ^ Обзор аппаратного ускорения DirectSound
- ^ CakeWalk - Круглый стол Windows Pro Audio
- ^ Демонстрация эффектов захвата с аппаратным ускорением
- ^ «Статья Techreport о звуковых картах с поддержкой Vista» . 15 января 2008 года . Проверено 23 декабря 2008 г.
- ^ Creative Technology - Поддержка - Аудио в Windows Vista
- ^ «OpenAL и Windows Vista» . Архивировано из оригинала 02 января 2008 г. Проверено 10 января 2008 г.
- ^ Разгрузка звука: раскрытие аппаратной обработки звука в Windows
- ^ Комплект драйверов Windows — предварительная версия Windows для разработчиков — новинка для аудиодрайверов
- ^ «Обзор реализации — драйверы Windows | Microsoft Docs» .
- ^ В Windows CE 5.0 удалена функциональность.
- ^ «Сайт Креативной АЛхимии» . Архивировано из оригинала 17 декабря 2008 г. Проверено 23 декабря 2008 г.
- ^ IndirectSound
- ^ «DSOAL: замена DirectSound DLL, обеспечивающая объемный звук, поддержку HRTF и EAX через OpenAL Soft» . Гитхаб . 20 апреля 2023 г.
Внешние ссылки
[ редактировать ]- MSDN DirectSound
- Как обстоят дела с 3D-звуком под DirectX
- Звук в Windows Vista
- Творческая АЛхимия {в Интернет-архиве}
- Глоссарий: Звуковая карта на PC Gaming Wiki с примечаниями по замене DirectSound.