Какие методы кодирования стерео информации используются в алгоритмах MPEG (и других)?
Существуют несколько методов кодирования стерео аудио информации в стандарте ISO11172-3 (MPEG-1 Layer 1,2,3).
Dual Channel. Этот режим предполагает кодирование стерео каналов, как абсолютно независимых. Иными словами, в этом режиме кодирование аудио информации происходит отдельно в каждом канале без использования корреляций между ними. Как и следует из названия, этот режим главным образом предназначен для кодирования двух параллельных но различных каналов (например, речь на английском и немецком языках), а не стерео (т.е. не два канала, несущих информацию о стерео картине). Этот режим не рекомендуется использовать для кодирования стерео сигнала, так как существуют проигрыватели (например, madplay), проигрывающие по умолчанию только один канал если поток помечен как Dual Channel.
Stereo. Этот режим отличается от предыдущего только тем, что в режиме Dual Stereo во время кодирования для каждого канала используется свой резервуар (об этом в обсуждении вопроса об отличиях ABR/VBR/CBR), а в этом режиме оба канала кодируются с использованием общего резервуара. Иных различий между режимами нет.
Joint Stereo — это общее определение методов кодирования стерео информации, основанных на использовании избыточности последней. Другими словами, все методы кодирования, основанные на использовании корреляций между двумя стерео каналами, подпадают под определение Joint Stereo.
При кодировании в MPEG-1 имеются две разновидности этого метода.
MS Stereo. В данном режиме кодируются не левый и правый канал, а их суммарная составляющая и разностная. При этом перед кодированием сигнал в каждом отдельном фрейме разбивается на частотные полосы (что, собственно, происходит всегда, то есть не только в Joint Stereo). Затем производится вычисление суммарной и разностной составляющей каналов, что математически выглядит так: Mi=(Li+Ri)/sqrt(2), Si=(Li-Ri)/sqrt(2), где i — номер частотной полосы на которые разбивается сигнал перед кодированием, M и S — Mid (сумма) и Side (разность) каналы соответственно, L и R — левый и правый каналы. При таком кодировании о какой-то деградации качества говорить не приходится, поскольку ничего кроме простейших арифметических операций здесь нет. Тяжело говорить про все MP3- кодеры, но именно так делается в Lame Encoder в режиме VBR. В кодерах от Fraunhofer и в Lame CBR (возможно и в других кодерах, так как этот метод описан в стандарте) в Joint Stereo применяется дополнительный механизм, называемый «Sparsing of side channel». Суть этого метода заключается в более жёстком кодировании side-канала, на который, в этом случае, как правило, выделяется меньшее количество бит, что приводит к деградации звучания в side канале, но улучшению качества кодирования в mid.
Intensity Stereo. В этом режиме в верхнем частотном диапазоне так же происходит кодирование общей составляющей обоих каналов, как и в случае MS Stereo, но вместо кодирования разностной составляющей в верхнем диапазоне частот происходит просто регистрация и запись мощностей сигналов в левом и правом каналах в каждой частотной полосе начиная с некоторой определенной. Иными словами весь сигнал разбивается на полосы, фактическому кодированию подвергается только нижний диапазон частот side-канала, а в верхнем частотном диапазоне начиная с определенной полосы происходит не кодирование сигнала в каждой полосе, а лишь регистрация мощностей сигнала в каждой полосе. Кодирование стерео сигнала в нижнем частотном диапазоне осуществляется в режиме MS Stereo или просто Stereo.
Таким образом, в режиме Intensity Stereo фактически происходит кодирование лишь общей составляющей каналов, а стерео на высоких частотах «воссоздается» (если такой термин здесь уместен, а лучше «синтезируется») в соответствующем канале путем умножения общего сигнала на известные (сохраненные при кодировании) значения мощностей частотных участков в соответствующем канале.
Parametric Stereo (PS). В этом режиме производится кодирование моно-сигнала, однако в выходной поток записывается не только моно информация, но и некоторая дополнительная параметричекая информация, используемая при воспроизведении с целью воссоздания (точнее, имитации) стерео картины из закодированных данных одного канала.
Можно предположить, что приблизительно аналогичные методы кодирования стерео аудио информации применяются и в других алгоритмах компрессии аудио.