Устаревшие аудиокомпоненты Windows

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

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

Содержание
  • 1 Мультимедийные расширения (MME)
    • 1.1 Проблемы
  • 2 Диспетчер сжатия звука
  • 3 Аудио библиотеки DirectX
  • 4 KMixer
    • 4.1 Проблемы
  • 5 Потоковая передача ядра
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
  • 9 Неработающие ссылки
Мультимедийные расширения (MME)

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

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

В 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.

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

Проблемы

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

Диспетчер сжатия звука

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

ACM считается устаревшей платформой / API, и теперь Microsoft поощряет использование как минимум DirectShow. Однако, в отличие от ACM и связанного с ним Video Compression Manager (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
KMixer

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

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

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

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

Проблемы

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

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

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

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

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

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

Kernel Streaming

Kernel Streaming или Direct Kernel streaming (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 потоковая передача ядра требует меньше времени CPU. Это происходит за счет обхода KMixer и регулятора громкости Windows. Потоковая передача ядра также не разрешает совместное использование устройства, если аудиодрайвер режима ядра не поддерживает несколько клиентов.

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

См. Также
Ссылки
Внешние ссылки
Неработающие ссылки
  • (задокументировано для повторной реализации в ReactOS )
Последняя правка сделана 2021-06-21 10:49:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте