Из Википедии, бесплатной энциклопедии
  (Перенаправлено из диспетчера сжатия звука )
Перейти к навигации Перейти к поиску

В этой статье описываются аудио API и компоненты в Microsoft Windows, которые в настоящее время устарели или устарели.

Мультимедийные расширения (MME) [ править ]

MME API или Windows Multimedia API (также известный как WinMM ) был первым универсальным и стандартизированным аудио API Windows. Звуковые события волны, воспроизводимые в Windows (до Windows XP ) и MIDI I / O, используют MME. Устройства, перечисленные в апплете панели управления Мультимедиа / Звуки и аудио, представляют MME API драйвера звуковой карты .

Осенью 1991 года были выпущены мультимедийные расширения (интерфейсы WaveIn / WaveOut) для поддержки звуковых карт , а также приводов CD-ROM , которые в то время становились все более доступными. Мультимедийные расширения были выпущены для производителей оригинального оборудования (OEM) , в основном для производителей приводов CD-ROM и звуковых карт, и добавили в Windows 3.0 базовую поддержку мультимедиа для ввода и вывода звука и приложение для проигрывателя компакт-дисков . Новые функции Multimedia Extensions не были доступны в реальном режиме Windows 3.0, только в стандартном и 386 расширенном режимах. Позднее Windows 3.1x будет включать многие из своих функций. Microsoft разработала звуковую систему Windows спецификация звуковой карты, дополняющая эти расширения.

В Windows 95 / ME в MME отсутствует микширование нескольких аудиопотоков во время воспроизведения и совместного использования устройства, поэтому одновременно может отображаться только один аудиопоток. Но некоторые драйверы звуковой карты могут эмулировать более одного устройства MME (или поддерживать более одного клиента потоковой передачи), поэтому они также могут работать с MME. Начиная с Windows 2000, MME поддерживает совместное использование воспроизводящего устройства (мультиклиентный доступ) и может смешивать потоки воспроизведения вместе. Начиная с Windows XP, MME начала поддерживать совместное использование записывающих устройств.

В более ранней версии Windows MME поддерживал до двух каналов записи, 16-битную битовую глубину звука и частоту дискретизации до 44100 отсчетов в секунду, при этом весь звук микшировался и дискретизировался до 44100 отсчетов в секунду. [ необходима цитата ] Начиная с Windows 2000, MME поддерживает до 384000 выборок в секунду, до 8 каналов и до 32 бит на выборку.

До Windows XP количество интерфейсов устройств MME / WinMM (waveIn, waveOut, midiIn, midiOut, Mixer и Aux) было ограничено до 10. Этот предел увеличен с 10 до 32 в Windows XP. [1] [2]

Длина имени устройства в MME ограничена 31 символом, поэтому длинные имена устройств могут отображаться только частично.

Проблемы [ править ]

Ошибка в эмуляции MME WaveIn / WaveOut была введена в Windows Vista: если требуется преобразование частоты дискретизации, иногда появляется слышимый шум, например, при воспроизведении звука в веб-браузере, который использует эти API. Это связано с тем, что внутренний ресэмплер, который больше не настраивается, по умолчанию использует быструю линейную интерполяцию на основе целых чисел (например, новая выборка принимается как точная копия [ сомнительно ] ближайшей выборки вместо изменяющейся части двух ближайших образцы), который был режимом преобразования самого низкого качества, который можно было установить в предыдущих версиях Windows. Ресамплер можно установить в режим высокого качества с помощью исправления только для Windows 7 и Windows Server 2008. [3][4]

Менеджер сжатия звука [ править ]

Audio Compression Manager (ACM) - это мультимедийная среда Windows, которая управляет аудиокодеками (компрессорами / декомпрессорами). [5] ACM также можно рассматривать как спецификацию API. Кодек должен соответствовать неявной спецификации ACM для работы с Windows Multimedia. Файлы ACM можно узнать по расширению имени файла .acm. Файлы ACM также используют RIFF- совместимые типы файлов, такие как WAV или AVI, в качестве «оболочки» для хранения аудиоданных, закодированных любым аудиокодеком, поддерживаемым ACM.

ACM считается устаревшим фреймворком / API, и теперь Microsoft поощряет использование хотя бы DirectShow . Однако, в отличие от ACM и связанного с ним диспетчера сжатия видео (VCM) , DirectShow не предоставляет средств для кодирования файлов для конечных пользователей, но требует от разработчиков построения сквозных графиков для кодирования контента. ACM также не поддерживает аудиопотоки VBR ; поэтому более новые кодеки, такие как MPEG-4 AAC , Ogg Vorbis , FLACи т. д. не могут поддерживаться через ACM при использовании переменных битрейтов. Хотя многие источники утверждают обратное, Ogg Vorbis хорошо работает с ACM, например, когда он встроен в файл, совместимый с RIFF (например, файл WAV или AVI, как упоминалось ранее), при условии, что поток Ogg Vorbis кодируется с постоянной скоростью передачи данных.

Windows поставляется с несколькими предустановленными кодеками ACM. Список этих кодеков можно найти в файле WAV § Сравнение схем кодирования .

Кодеки ACM идентифицируются двухбайтовым кодом (TwoCC), выделенным Microsoft.

Аудио библиотеки DirectX [ править ]

  • DirectSound
  • DirectMusic
  • Плагин DirectX

KMixer [ править ]

KMixer - это драйвер микшера звука ядра , часть WDM Audio в Windows 98 - Windows XP, который обрабатывает микширование нескольких звуковых буферов в выходной сигнал.

Задачи, выполняемые KMixer.sys:

  • Смешивание нескольких аудиопотоков PCM
  • Формат, битовая глубина (также известная как длина слова) и преобразование частоты дискретизации
  • Конфигурация динамиков и отображение каналов

В Windows 98, Windows 2000 и Windows Me максимальная частота дискретизации KMixer составляет 100 кГц. В Windows XP SP1 и более поздних версиях частота дискретизации звука KMixer поддерживает максимум 200 кГц. [6] [7] [8]

Проблемы [ править ]

KMixer был разработан, чтобы помочь приложениям, избавив их от необходимости выполнять микширование аудиопотоков, особенно на недорогих звуковых картах, которые не поддерживали несколько звуковых потоков. Однако при этом возникли некоторые серьезные проблемы.

Во-первых, задержка KMixer составляет около 30 мс [9], и ее нельзя уменьшить, потому что этот компонент находится прямо над аудиодрайвером класса порта, поэтому каждый аудиопоток, включая потоки, создаваемые DirectSound (за исключением случаев аппаратного микширования ) и WinMM через микшер ядра. [10] Если аудиооборудование поддерживает аппаратное микширование (также известное как аппаратная буферизация или аппаратное ускорение DirectSound), DirectSound выполняет буферизацию непосредственно в устройстве рендеринга. [11] Таким образом, если потоки DirectSound используют аппаратное микширование , KMixer игнорируется. [12]

В более ранних выпусках, таких как исходный выпуск Windows 98, KMixer пытался смешивать все форматы данных, которые проходили через него, даже те, которые он не поддерживал. Это вызывало различные проблемы с медиаплеерами, которые пытались передать потоки окружающего звука в кодировке AC3 через выход S / PDIF звуковой карты на внешний ресивер домашнего кинотеатра . Это было исправлено в Windows Me и предоставлено как исправление для Windows 98 Second Edition и Windows 2000 SP2. [13] Начиная с Windows Me, API waveOut, DirectSound и DirectShow поддерживают форматы, отличные от PCM, такие как AC-3 или WMA через S / PDIF, и данные, не относящиеся к PCM, поступают непосредственно в драйвер класса, а не через KMixer.

Новый API режима ядра, Direct Kernel Streaming , также был представлен в Windows 98, чтобы обойти KMixer и избежать связанных с ним проблем.

KMixer в большинстве случаев не меняет звук. [6] Также существует множество способов обойти KMixer без необходимости в дополнительном плагине для доступа к DirectSound, ASIO , Direct Kernel Streaming или WASAPI . В Windows XP, например, использование DirectSound (которое Winamp использует по умолчанию) с аппаратным микшером - это способ обойти KMixer. [9]

KMixer был удален из Windows Vista . Он заменен звуковым движком WASAPI (Windows Audio Session API) пользовательского режима, который является частью обновленной аудиоархитектуры . Аудиосистема может работать в режиме общего доступа или эксклюзивном режиме . В общем режиме микширование все еще происходит. Предварительно микшированный звук PCM отправляется драйверу в едином формате (с точки зрения частоты дискретизации, битовой глубины и количества каналов), который можно настроить с панели управления звуками. Эксклюзивный режим WASAPI обходит микшер, как и использование сторонних аудио API, таких как OpenAL или ASIO , которые по-прежнему имеют прямой доступ к оборудованию. [14]

Потоковая передача ядра [ править ]

Потоковая передача ядра или прямая потоковая передача ядра (Direct KS) - это метод, который поддерживает обработку потоковых данных в режиме ядра . Он обеспечивает эффективную потоковую передачу в реальном времени для мультимедийных устройств, таких как звуковые карты и карты ТВ-тюнера . Потоковая передача ядра позволяет драйверу устройства создавать фильтры и выводы, подобные DirectShow, в режиме ядра , обеспечивая доступ к оборудованию, связь с меньшей задержкой и по-прежнему использоваться в графе фильтров DirectShow .

Потоковая передача ядра была представлена ​​в Windows 98. Когда звуковая карта использует настраиваемый драйвер для использования с поставляемым системой драйвером класса порта PortCls.sys или реализует мини-драйвер для использования с драйвером класса потоковой передачи, приложения могут полностью обойти KMixer и использовать вместо этого потоковые интерфейсы ядра позволяют напрямую взаимодействовать с аудиодрайвером и уменьшать задержку. Windows 98 включает первый драйвер потоковой передачи ядра, Stream.sys. В Windows XP Microsoft представила еще один улучшенный драйвер класса потоковой передачи ядра, AVStream.

Музыкальные плееры, такие как JRiver Media Center , JPLAY, foobar2000 и Winamp, поддерживают потоковую передачу ядра . По сравнению с обычным «методом WaveOut» в Microsoft Windows , потоковая передача ядра требует меньше процессорного времени. Это происходит за счет обхода регуляторов громкости KMixer и Windows. Потоковая передача ядра также не допускает совместного использования устройства, если аудиодрайвер режима ядра не поддерживает несколько клиентов.

До Windows Vista Kernel Streaming предлагал только один протокол связи между клиентом и драйвером с цепочкой буферов, как в MME. Начиная с Vista, представлен новый протокол Real-Time Audio ( RT Audio , не путать с кодеком RTAudio ), основанный на одном кольцевом буфере . Протокол RT Audio реализуется драйвером порта WaveRT в portcls.sys. В Vista и более поздних версиях Audio Subsystem поддерживает оба протокола, поэтому может взаимодействовать как с устаревшими, так и с новыми звуковыми драйверами. Но большинство аудиоприложений, использующих KS, поддерживают только один протокол (в большинстве случаев устаревший), поэтому они могут взаимодействовать только с одним типом аудиодрайверов.

См. Также [ править ]

  • Аудио WDM в Windows 98
  • Аудио архитектура Windows Vista
  • DirectX
  • Универсальная аудиоархитектура (UAA)

Ссылки [ править ]

  1. ^ Основы API аудиодрайвера Windows
  2. ^ Ограничения интерфейса устройства Windows 2000
  3. ^ «Политика преобразования частоты дискретизации аудиопотоков (драйверы Windows)» . Центр разработки - Оборудование . Microsoft . Проверено 17 января 2012 . CS1 maint: обескураженный параметр ( ссылка )
  4. ^ «Артефакты в Windows 7 из-за преобразования частоты дискретизации» . Обсуждение на форумах по разработке рабочих столов Windows . Проверено 17 января 2012 . CS1 maint: обескураженный параметр ( ссылка )
  5. ^ «Менеджер сжатия звука» . Microsoft . 30 мая 2018.
  6. ^ a b «Политика микширования аудиопотоков и установка выходной частоты дискретизации» . MSDN . Проверено 23 ноября 2010 . CS1 maint: обескураженный параметр ( ссылка )
  7. ^ "Windows Kmixer" . Проверено 23 ноября 2010 . CS1 maint: обескураженный параметр ( ссылка )
  8. ^ "Что такое" bitperfect "и что мне нужно сделать для воспроизведения bitperfect?" . Проверено 23 ноября 2010 . CS1 maint: обескураженный параметр ( ссылка )
  9. ^ a b «Задержка KMixer» . MSDN . Проверено 23 ноября 2010 . CS1 maint: обескураженный параметр ( ссылка )
  10. ^ CakeWalk - Круглый стол Windows Pro Audio
  11. ^ Модели драйверов DirectSound
  12. ^ Обзор аппаратного ускорения DirectSound
  13. ^ Волновые форматы без PCM и аудиодрайверы WDM
  14. ^ "Плагин вывода Winamp OpenAL" . Проверено 23 ноября 2010 . CS1 maint: обескураженный параметр ( ссылка )

Внешние ссылки [ править ]

  • Информация о Kmixer на сайте Microsoft
  • Задержка KMixer на сайте Microsoft
  • Сведения о драйверах (кодеках) MS ACM
  • Как написать кодек Microsoft Audio Compression Manager (устанавливаемый драйвер)
  • Плагин foobar2000 - плагин Kernel Streaming для foobar2000
  • Плагин Winamp Kernel Streaming

Неработающие ссылки [ править ]

  • Компоненты потоковой передачи ядра
  • MME API (WinMM)
  • Компоненты Kernel Streaming (задокументированы для повторной реализации в ReactOS )