AC3Filter home :: Donate :: Download :: Support forum
SPDIF (Sony/Philips Digital Interconnect Format) - это цифровой аудио-интерфейс. Изначально SPDIF использовался только для передачи стерео 16-битных PCM данных (CD проигрыватель был единственным источником цифрового звука). Он очень прямолинеен: отсчеты передаются с фиксированной частотой, одно за другим (и бит за битом) в блоках по 32 бита, где 8 бит используются для синхронизации и служебной информации, а 24 бита могут использоваться для сэмпла. В большинстве случаев возможна передача только 16-битного сэмпла (CD содержит только 16-битный звук), а младшие 8 бит всегда равны нулю. Этот интерфейс очень прост и дешев и поэтому стал широко распространен.
Поэтому, когда многоканальная эра дошла до домашних кинотеатров, SPDIF стал идеальным кандидатом для передачи многоканальных данных. Однако, появилась проблема: текущая реализация интерфейса могла работать только со стерео звуком, тогда как сейчас потребовалось передавать до 6 каналов (а потом - и до 8 каналов). Было решено не менять интерфейс, а передавать сжатый многоканальный звук вместо PCM данных (для цифрового интерфейса безразлично, что передавать). Поэтому ресивер должен распознавать сжатые данные и декодировать их. Для этих целей был разработан новый стандарт (IEC 61937), который описывает, как сжатые данные должны передаваться и как ресивер может отличить PCM от сжатых данных.
Так как сжатые данные передаются вместо PCM данных, битрейт сжатого потока должен в точности совпадать с битрейтом несжатого 16-битного PCM потока. Обычно сжатый поток (даже многоканальный) имеет меньший битрейт. Поэтому сжатый поток должен быть дополнен нулями до совпадения с битрейтом PCM потока.
Требуемый битрейт зависит от частоты дискретизации:
| частота | битрейт |
| 48000Гц | 1.536mbps |
| 44100Гц | 1.411mbps |
| 32000Гц | 1.024mbps |
Невозможно передать поток с битрейтом выше указанного. Например, через SPDIF невозможно передать DTS с битрейтом 2mbps.
Итак, интерфейс SPDIF имеет два режима: режим передачи PCM данных и режим передачи сжатых данных. Далее мы будем использовать термины "SPDIF-передача "режим вывода SPDIF"и "SPDIF-поток"только для режима сжатой передачи.
Сжатые данные могут передаваться по SPDIF вместо PCM данных. Поэтому, мы можем подготовить CD-диск и поместить сжатые AC3 или DTS данные вместо обычных PCM дорожек. При проигрывании такого диска на CD-проигрывателе, подключенном к ресиверу мы получим настоящий многоканальный звук!
Но этот трюк не сработает при аналоговом подключении или на портативных CD-проигрывателях: мы получим ужасно громкий шум вместо прекрасной музыки. Именно поэтому диски с AC3/DTS дорожками сравнительно редки.
Как было сказано, данные SPDIF передаются вместо PCM данных. Поэтому они могут быть случайно восприняты как PCM и проиграны с ужасным громким треском. Для того, чтобы сделать этот звук менее неприятным, DTS поток может быть преобразован из 16 в 14-битный формат, что уменьшает громкость возможного шума. Это преобразование без потерь и не влияет ни на качество, ни на громкость нормального воспроизведения.
14-битный формат обычно используется на многоканальных CD дисках с DTS дорожкой (AC3 не позволяет подобное преобразование). Поэтому, когда обычный CD-проигрыватель проигрывает такой диск, он создает меньше шума.
Существует два метода передачи потока DTS по SPDIF:
Заметим, что преобразование padded-формата во wrapped-формат может быть невозможно, тогда как обратное преобразование возможно всегда.
Многоканальные CD диски обычно используют padded-формат. Поэтому, их воспроизведение может быть невозможно на ресиверах, которые поддерживают только wrapped-формат.
Как мы помним, SPDIF может передавать только два несжатых канала. Но что если какое-либо приложение начнет проигрывать многоканальный звук? Звуковая карта микширует многоканальный звук в два канала до передачи его по SPDIF.
Некоторые звуковые карты имеют несколько SPDIF-выходов, которые могут передавать многоканальный звук (3 SPDIF-выхода могут передавать до 6 каналов). Но большинство ресиверов не поддерживают эту функцию (даже ресиверы с несколькими SPDIF-входами). Поэтому далее мы не будем рассматривать этот случай.
Некоторые звуковые карты умеют кодировать многоканальный звук до передачи по SPDIF. Но, опять же, такая возможность редка и мы не будем ее рассматривать.
Интерфейс SPDIF поддерживает три стандартных частоты дискретизации: 48кГц, 44.1кГц и 32кГц. Все прочие частоты запрещены к передаче. Несмотря на это многие звуковые карты поддерживают только 48кГц (используется на DVD). Поэтому звук с широко используемый частотой 44100Гц может иметь проблемы с передачей по SPDIF.
Звуковые карты поддерживают воспроизведение многих звуков одновременно. Как это работает? Все звуки от всех приложений микшируются в один поток, звуки с разной частотой дискретизации приводятся к одной частоте и результат отправляется на один физический выход. Поэтому, Windows работает так, как будто возможно воспроизведение любого звука в любое время. Но SPDIF-передача требует монополии, так как SPDIF-поток кодирован и не может быть преобразован и микширован с другими звуками. Поэтому одновременно возможна только одна SPDIF-передача. Также, проигрывание всего несжатого звука должна быть приостановлено на это время.
Когда какое-либо приложение начинает SPDIF передачу, звуковая карта должна сделать следующее:
Когда SPDIF передача завершается, звуковая карта должна сделать следующее:
Например, представим, что Winamp играет музыку в фоне. Вы начинаете смотреть фильм с AC3-звуком в режиме SPDIF. Когда начинается проигрывание фильма, звуковая карта заглушает звук от Winamp’а и дает исключительное право воспроизведения медиа-проигрывателю. Медиа-проигрыватель начинает воспроизведение. Когда ресивер получает данные, он распознает SPDIF-передачу сжатого звука и переключает индикатор с "PCM"на "Dolby Digital".
Когда вы ставите проигрывание фильма на паузу, звуковая карта закрывает SPDIF-передачу и восстанавливает звук от Winamp’а. Ресивер, больше не видит сжатых данных и переключает индикацию обратно с "Dolby Digital"на "PCM".
Но эксклюзивные права на SPDIF-передачу остаются у проигрывателя, так как проигрывание не остановлено, а приостановлено. Поэтому, если вы попробуете открыть еще один фильм в SPDIF-режиме (не закрыв текущий), то проигрыватель не сможет начать новую SPDIF-передачу и начнет проигрывание в режиме PCM (стерео!). Когда же проигрывание первого фильма будет остановлено, проигрыватель закроет SPDIF-канал и освободит право его использования, т.о. любое приложение снова сможет работать с SPDIF.
Т.о. звуковая карта обрабатывает переключения между режимами PCM и SPDIF. Но не все звуковые карты могут делать это правильно. Когда воспроизведение SPDIF ставится на паузу, звуковая карта переключается в режим PCM и может не восстановит режим SPDIF, когда воспроизведение продолжается. В некоторых случаях звуковая карта может выключить режим PCM и не включить режим SPDIF. В таком случае звук пропадает вообще!
Режим SPDIF передачи включается опцией “Use SPDIF”. Это будет подразумеваться далее.
Существует три режима SPDIF вывода:
AC3Filter поддерживает оба режима передачи DTS (wrapped и padded). Можно задавать желаемый режим с помощью опции “SPDIF/DTS output”. Auto указывает фильтру по возможности использовать wrapped-режим, переключаясь в padded только по необходимости.
Может быть невозможно преобразовать padded-DTS во wrapped-DTS. Поэтому, если фильтр установлен использовать только wrapped-формат, то режим пропуска (SPDIF passthrough) может не включиться для некоторых треков (например, DTS с многоканальных AudioCD) и будет использован режим кодирования в AC3.
Для уменьшения громкости возможного шума можно установить фильтр преобразовывать DTS в 14-битный формат при помощи опции “Convert to 14bit”. Это преобразование увеличивает битрейт потока, и преобразованный поток может не соответствовать требованиям SPDIF. Поэтому преобразование используется только если это возможно.
Некоторые ресиверы/декодеры могут не поддерживать некоторые комбинации wrapped/padded 16bit/14bit форматов.
Как фильтр решает, какой режим использовать для конкретного трека? Посмотрим на внутреннее устройство фильтра:

Есть два места принятия решений:
Если все проверки пройдены, фильтр включает режим SPDIF-пропуска.
Если все проверки пройдены, фильтр включает режим кодирования в AC3.
Когда фильтр пытается открыть SPDIF канал, он сначала спрашивает: "Уважаемая звуковая карта, не соизволите ли вы проиграть SPDIF с частотой дискретизации X?". Если звуковая карта разрешает это, фильтр начинает SPDIF-передачу. Если звуковая карта отказывается, фильтр отключает SPDIF.
Причины провала этого диалога могут быть:
Фильтр не может знать, почему звуковая карта отказывается от SPDIF-передачи. Он может лишь зафиксировать факт. Можно отключить этот диалог опцией “Check output format support” на странице System. Но в большинстве случаев это приведет к пропаданию звука вообще, вместо корректного перехода в PCM режим (что лучше, чем ничего). Поэтому категорически не рекомендуется отключать эту опцию.
Обман звуковой карты может решить проблемы 3 и 4. Так как данные SPDIF передается вместо PCM данных, мы можем обмануть звуковую карту, сказав, что мы будем делать PCM передачу, но на самом деле отсылать сжатые данные. Это управляется опцией “Output SPDIF as PCM”.
Однако этот трюк будет работать, только если звуковая карта не будет изменять наши данные и будет передавать их бит-в-бит прямо на SPDIF выход:
Фильтр не может управлять первыми двумя условиями, поэтому необходимо вручную установить громкость звука и выключить все фоновые звуки. Но фильтр может проверять частоту дискретизации и запретить SPDIF передачу с некорректными частотами дискретизации (предотвращая громкий треск испорченного сжатого потока и избавляя от необходимости каждый раз включать/выключать SPDIF для фильмов с разными частотами дискретизации).
Проверка частоты дискретизации SPDIF управляется опцией “Restrict sample rates”. При включенной опции SPDIF-передача будет включена только для потоков с разрешенными частотами дискретизации. В общем случае, эта опция необходима только при обмане звуковой карты (при передаче SPDIF как PCM).
Предположим, что звуковая карта поддерживает только 48кГц. При обмане звуковой карты мы передаем сжатые данные вместо несжатых. Звуковая карта соглашается проигрывать звук с любой частотой дискретизации, но делает преобразование для "неправильных"частот дискретизации. Поэтому фильмы с 48кГц-треками будут проиграны правильно, а 44.1кГц треки будут производить жуткий треск. Чтобы этого не происходило, мы должны включать SPDIF-передачу только для "хороших"частот дискретизации и передавать несжатый звук во всех остальных случаях.
Эта опция полезна в любом случае. Без обмана звуковой карты она заставляет фильтр сообщать о неверной частоте дискретизации вместо простого утверждения, что фильтр не может начать SPDIF-передачу.
При кодировании в AC3 происходит потеря качества (что справедливо для любых форматов кодирования с потерями: mp3, ac3, ogg, aac и т.д.). Это единственная возможность передать 6 каналов через SPDIF с минимальными потерями. Но если у нас есть только стерео трек, то зачем его кодировать и терять в качестве? Как было сказано, SPDIF изначально предназначался для передачи стерео звука. Поэтому если у нас есть стерео трек, то лучше его не кодировать, а передавать его как есть, без потери качества.
Кодирование стерео звука управляется опцией “Do not encode stereo PCM”. При включенной опции стерео вывод кодироваться не будет. Обратите внимание, что статус SPDIF будет установлен в ’Disabled’ (’Выключено’), даже если SPDIF включен и разрешен. Иногда может быть неясно почему. Однако выключать эту опцию не рекомендуется.
Эта опция влияет только на стерео выход. Многоканальный вывод кодироваться все равно будет (при включенной опции “Use AC3 encoder”).
В поле “Decoder info” фильтр отображает информацию обработки. Если опция “Use SPDIF” включена, то там также отображается текущее состояние SPDIF. Например:
Input format: DTS - 44100
User format: PCM16 - 0 Output format: PCM16 3/2.1 (5.1) 44100 Use SPDIF SPDIF status: Disabled (Disallowed sample rate) SPDIF passthrough for: AC3 DTS Use AC3 encoder (do not encode stereo PCM) Check SPDIF sample rate (allow: 48kHz) Query for SPDIF output support |
Это означает, что у нас на входе 44.1кГц DTS трек. Текущий выходной формат - PCM 5.1 (6 каналов) 44.1кГц. “Use SPDIF” включен, но передача не ведется потому, что частота дискретизации запрещена для SPDIF передачи. Ниже мы можем видеть, что проверка частоты дискретизации включена и единственная разрешенная частота - 48кГц.
Подведем итоги, почему в SPDIF передаче может быть отказано:
Как было сказано, некоторые звуковые карты имеют ошибку с паузой SPDIF передачи. После паузы звуковая карта переключается в режим PCM и потом не восстанавливает SPDIF передачу. В этом случае звуковая карта требует полной переинициализации (т.е. мы должны закрыть текущее проигрывание, и открыть его заново) после каждой паузы или перемотки. Это управляется опцией “Force sound card to reinit after seek/pause”. Эту опцию следует включать только если звуковая карта имеет эту ошибку т.к. она нарушает нC