Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Формат цифрового интерфейса Sony/Philips (S/PDIF) определяется главным образом для передачи звуковых данных PCM, но его можно легко адаптировать для передачи данных, отличных от PCM. Принцип сквозной передачи S/PDIF заключается в том, что поток данных, отличный от PCM, может проходить через канал S/PDIF, как будто это был поток PCM. Передача сквозной передачи не требует отправки и получения портов S/PDIF для понимания кодирования потока, отличного от PCM.
WMA Pro и AC-3 — это сжатые форматы, отличные от PCM, которые передают цифровые аудиопотоки в единицах, называемых кадрами синхронизации. Каждый кадр синхронизации содержит собственный заголовок и может быть декодирован независимо от других кадров синхронизации в потоке. Например, при частоте выборки 48 кГц кадр синхронизации WMA Pro содержит достаточно данных для воспроизведения в течение 2048 тиков тактового генератора (42,67 миллисекунды). На этой же частоте кадр синхронизации AC-3 содержит достаточно данных для 1536 тиков (32 миллисекунды).
При частоте выборки 48-кГц синхронизационный кадр WMA Pro для 5.1-канальной системы никогда не превышает 8192 байта, что соответствует числу байтов, занятых 2048 16-разрядными стерео PCM-образцами (двухканальными). Аналогично, кадр синхронизации AC-3 для 5.1 канала никогда не превышает 6144 байтов, что соответствует количеству байтов, занимаемых 1536 стерео, 16-битными PCM выборками. (Существуют исключения для этого правила, но эти типы кадров синхронизации AC-3 очень редки, не могут передаваться по протоколу S/PDIF и могут игнорироваться здесь.)
Если аудиопоток в формате 48-кГц WMA Pro или AC-3 проходит через канал S/PDIF в цифровой форме, не декодируемый, S/PDIF отправка и получение портов могут обрабатывать поток так же, как стерео, 16-разрядный, 48-кГц PCM-поток. При указании диапазона данных для пин-кода, который может передавать поток WMA Pro-over-S/PDIF или AC-3-over-S/PDIF, сам тег формата волны — это единственная вещь, которая отличается от диапазона данных для пин-кода, который передает поток PCM через порт S/PDIF. Пример см. в объявлениях диапазона данных в разделе "Указание диапазонов данных WMA Pro".
Чтобы избежать доставки сжатого потока WMA Pro через интерфейс S/PDIF быстрее, чем в режиме реального времени (т. е. для предотвращения доставки 43 миллисекунд звука менее чем в 43 миллисекундах), звуковое приложение должно дополнить кадр синхронизации WMA Pro нулями до тех пор, пока кадр синхронизации не займет то же количество байтов, что и 2048 стерео PCM образцов. Кадр синхронизации AC-3 должен быть дополнен до размера 1536 образцов стерео PCM.
Если вы пытаетесь отправить кадры синхронизации без выравнивания WMA Pro или AC-3 в драйвер адаптера PortCls, использующий WaveCyclic, имейте в виду, что если драйвер порта чувствует нехватку данных (так как поток данных содержит меньше байтов, чем двухканальный несжатый поток), он заполняет циклический буфер тишиной. Декодировщик потоков, отличный от PCM, будет иметь проблемы с интерпретацией этих периодов молчания, которые находятся в PCM, а не в формате, отличном от PCM.
На следующем рисунке показан пример приложения сквозной передачи S/PDIF.
На рисунке показан компьютер, подключенный к внешнему аудио/видео приемнику (A/V) через коаксиальный кабель. Кабель подключает выходной порт S/PDIF на звуковом устройстве КОМПЬЮТЕРА к порту ввода S/PDIF на приемнике A/V.
В левой части рисунка звуковое приложение вставляет кадр синхронизации из звукового потока WMA Pro в начало буфера 8192-байтов. (Этот размер буфера используется исключительно для простоты иллюстрации. На практике вместо этого можно использовать размер буфера размером 4096 байтов или 10240 байтов. Приложение заполняет любое оставшееся пространство в буфере нулями. Звуковой драйвер программирует выходной порт S/PDIF для передачи содержимого буфера, как будто они были 8192 байтами данных PCM.
Аналогичным образом порт ввода S/PDIF на приемнике A/V получает поток, как будто это было 8192 байта данных PCM. Он загружает данные в входной буфер, который в этом примере также имеет размер 8192 байта. Декодатор извлекает кадр синхронизации WMA Pro из входного буфера, декодирует кадр синхронизации в аудиопоток 5,1 канала и воспроизводит поток через окружные динамики на правом краю рисунка.
Чтобы разрешить декодировщику в другом конце подключения знать, что аудиопоток находится в формате, отличном от PCM, звуковой драйвер должен задать бит /AUDIO в транссивере S/PDIF. Декодатор считывает этот бит из блока состояния канала S/PDIF, чтобы определить, кодируется ли поток данных в формате, отличном от PCM. Установить этот бит — это единственное, что нужно сделать драйверу для поддержки потока, отличного от PCM. В любом другом случае драйвер обрабатывает поток, как будто он содержит данные PCM.
Ряд потребительских устройств поддерживает сквозную передачу S/PDIF, но другие цифровые интерфейсы, такие как USB и 1394, также могут быть адаптированы для цифровой передачи данных, отличных от PCM, во внешние декодеры звука.
Dolby Лаборатории представили сжатый аудиоформат AC-3 (Dolby Digital) в 1992 году. Первые потребительские A/V ресиверы, поддерживающие AC-3 через S/PDIF, появились примерно в 1997 году. Поддержка программного обеспечения для формата аудиопотока WMA Pro стала доступна с выпуском технологии Microsoft Windows Media 9 Series в 2003 году. Приемники A/V, поддерживающие WMA Pro-over-S/PDIF, появились в 2003 году.
В Windows XP и более поздних версиях api waveOut, DirectSound и DirectShow поддерживают форматы, отличные от PCM. API DirectSound и waveOut реализованы таким образом, чтобы любой формат PCM или не PCM, предоставляемый драйвером, автоматически доступен клиентам этих API.