Устаревшие аудиокомпоненты Windows - Windows legacy audio components
Эта статья включает в себя список общих использованная литература, но он остается в основном непроверенным, потому что ему не хватает соответствующих встроенные цитаты.Сентябрь 2009 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В этой статье описываются аудио API и компоненты в Майкрософт Виндоус которые сейчас устарели или устарели.
Мультимедийные расширения (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 и звуковых карт, а также добавлены основные мультимедиа поддержка аудиовхода и вывода, а также компакт диск приложение аудиоплеера для 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]
Менеджер сжатия звука
Менеджер сжатия звука (ACM) это Windows мультимедийная структура который управляет аудиокодеками (компрессорами / декомпрессорами).[5] ACM также можно рассматривать как спецификацию API. Кодек должен соответствовать неявной спецификации ACM для работы с Windows Multimedia. Файлы ACM можно узнать по расширению имени файла. .acm
. Файлы ACM также используют РИФФ -совместимые типы файлов, такие как 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
KMixer
KMixer это Аудио микшер ядра водитель, часть WDM Аудио вход 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 режима ядра, Прямая потоковая передача ядра, также был представлен в Windows 98, чтобы обойти KMixer и избежать проблем, связанных с ним.
KMixer в большинстве случаев не меняет звук.[6] Кроме того, есть много способов обойти KMixer без необходимости в дополнительном плагине для доступа к DirectSound, ASIO, Прямая потоковая передача ядра или WASAPI. В Windows XP, например, использование DirectSound (который Winamp использует по умолчанию) с аппаратным микшером - это способ обойти KMixer.[9]
KMixer был удален в Виндоус виста. Он заменен звуковым движком 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" в Майкрософт Виндоус, потоковая передача ядра требует меньше ЦПУ время. Это происходит за счет обхода KMixer и регулятор громкости Windows. Потоковая передача ядра также не разрешает совместное использование устройства, если аудиодрайвер режима ядра не поддерживает несколько клиентов.
До Windows Vista Kernel Streaming предлагал только один клиент-драйвер. протокол связи с буферной цепочкой, как используется в MME. Начиная с Vista, новый звук в реальном времени (RT Audio, не путайте с Кодек RTAudio ) вводится протокол, основанный на единственном кольцевой буфер. Протокол RT Audio реализован Драйвер порта WaveRT в portcls.sys. В Vista и более поздних версиях Audio Subsystem поддерживает оба протокола, поэтому может взаимодействовать как с устаревшими, так и с новыми аудиодрайверами. Но большинство аудиоприложений, использующих KS, поддерживают только один протокол (в большинстве случаев устаревший), поэтому они могут взаимодействовать только с одним типом аудиодрайверов.
Смотрите также
использованная литература
- ^ Основы API аудиодрайвера Windows
- ^ Ограничения интерфейса устройства Windows 2000
- ^ «Политика преобразования частоты дискретизации аудиопотоков (драйверы Windows)». Центр разработки - Оборудование. Microsoft. Получено 2012-01-17.
- ^ «Артефакты в Windows 7 из-за преобразования частоты дискретизации». Обсуждение на форумах по разработке для настольных систем Windows. Получено 2012-01-17.
- ^ «Менеджер сжатия звука». Microsoft. 30 мая 2018 года.
- ^ а б «Политика микширования аудиопотоков и установка частоты дискретизации вывода». MSDN. Получено 2010-11-23.
- ^ "Windows Kmixer". Получено 2010-11-23.
- ^ «Что такое« побитовое совершенство »и что мне нужно сделать для побитового идеального воспроизведения?». Получено 2010-11-23.
- ^ а б "Задержка KMixer". MSDN. Получено 2010-11-23.
- ^ CakeWalk - Круглый стол по Windows Pro Audio
- ^ Модели драйверов DirectSound
- ^ Обзор аппаратного ускорения DirectSound
- ^ Волновые форматы без PCM и аудиодрайверы WDM
- ^ "Плагин вывода Winamp OpenAL". Получено 2010-11-23.
внешние ссылки
- Информация о Kmixer на сайте Microsoft
- Задержка KMixer на сайте Microsoft
- Сведения о драйверах (кодеках) MS ACM
- Как написать кодек Microsoft Audio Compression Manager (устанавливаемый драйвер)
- плагин foobar2000 - Плагин Kernel Streaming для foobar2000
- Плагин Winamp Kernel Streaming
Битые ссылки
- Компоненты Kernel Streaming
- MME API (WinMM)
- Компоненты Kernel Streaming (задокументировано для повторной реализации в ReactOS )