КАНАЛЬНОЕ КОДИРОВАНИЕ НА ОСНОВЕ КОМПЛЕКСНОГО ПРЕОБРАЗОВАНИЯ С ЧАСТОТНЫМ КОДИРОВАНИЕМ С РАСШИРЕННОЙ ПОЛОСОЙ
COMPLEX-TRANSFORM CHANNEL CODING WITH EXTENDED-BAND FREQUENCY CODING

Предшествующий уровень техники
Инженеры используют множество способов для эффективной обработки оцифрованного звука с одновременной поддержкой качества оцифрованного звука. Для понимания этих способов полезно понимать, как представляется и обрабатывается в компьютере звуковая информация.
I. Представление звуковой информации в компьютере
Компьютер обрабатывает звуковую информацию как последовательность чисел, представляющую звуковую информацию. Например, одно число может представлять звуковой сэмпл, который является значением амплитуды в конкретное время. На качество звуковой информации влияют несколько факторов, включающих в себя глубину сэмпла, частоту дискретизации и режим канала.
Глубина (или точность) сэмпла указывает на диапазон чисел, используемых для представления сэмпла. Чем больше значений, возможных для сэмпла, тем выше качество, потому что число может фиксировать меньшие изменения амплитуды. Например, для 8-битового сэмпла существует 256 возможных значений, в то время как для 16-битового сэмпла существует 65536 возможных значений. На качество также влияет частота дискретизации (обычно измеряемая количеством сэмплов в секунду). Чем выше частота дискретизации, тем выше качество, потому что может быть представлено больше частот звука. Некоторыми общепринятыми частотами дискретизации являются 8000, 11025, 22050, 32000, 44100, 48000 и 96000 сэмплов/секунда.
Моно и стерео являются двумя общепринятыми режимами канала для звука. В режиме моно, звуковая информация присутствует в одном канале. В режиме стерео, звуковая информация присутствует в двух каналах, обычно обозначается как левый и правый каналы. Также возможны другие режимы с большим количеством каналов, например, объемный 5.1-канальный, 7.1-канальный или 9.1-канальный звук канала ("1" указывает на сабвуфер или канал с низкочастотными эффектами). В таблице 1 представлены несколько форматов звука с различными уровнями качества и соответствующими затратами по общему расходу битов (битрейту).
Таблица 1
Битрейты для звуковой информации различного качества
Глубина сэмпла(биты/сэмпл)
Частота дискретизации(сэмплы/секунда)
Режим
Общий битрейт(биты/секунда)
Интернет-телефония
8
8 000
моно
64 000
Телефон
8
11 025
моно
88 200
CD звук
16
44 100
стерео
1 411 200
У объемного звука, как правило, еще более высокий общий битрейт.
Как видно из таблицы 1, ценой высококачественной звуковой информации является высокий битрейт. На высококачественную звуковую информацию расходуется большая часть запоминающего устройства компьютера и пропускной способности. Однако компании и потребители все больше и больше зависят от компьютеров при создании, распространении и воспроизведении высококачественного звукового контента.
II. Обработка звуковой информации в компьютере
Многие компьютеры и компьютерные сети испытывают недостаток в ресурсах для обработки необработанного оцифрованного звука. При сжатии (также называемом кодированием) затраты на хранение и передачу звуковой информации уменьшаются за счет преобразования информации в представление с меньшим битрейтом. При распаковке (также называемой декодированием) из сжатого представления извлекается восстановленная версия исходной информации. Системы кодера и декодера включают в себя определенные версии кодера и декодера звуковых файлов Windows ("WMA") и кодера и декодера WMA Pro корпорации "Майкрософт".
Сжатие может быть без потерь (при котором качество не страдает) или с потерями (при котором страдает качество, но уменьшение битрейта от последующего сжатия без потерь является более существенным). Например, сжатие с потерями используется для аппроксимации исходной звуковой информации, и затем эту аппроксимацию сжимают без потерь. Способы сжатия без потерь включают в себя неравномерное кодирование, кодирование run-level, кодирование переменной длины и арифметическое кодирование. Соответствующие способы распаковки (также называемые методиками энтропийного декодирования) включают в себя неравномерное декодирование, декодирование run-level, декодирование переменной длины и арифметическое декодирование.
Одна цель звукового сжатия состоит в том, чтобы в цифровой форме представить звуковые сигналы, чтобы обеспечить максимальное воспринимаемое качество сигнала наименее возможным количеством битов. С этой целью различные современные системы кодирования звука используют множество различных способов сжатия с потерями. Эти способы сжатия с потерями, как правило, включают в себя перцепционное моделирование/взвешивание и квантование после частотного преобразования. Соответствующая распаковка включает в себя обратное квантование, обратное взвешивание и обратное частотное преобразование.
Посредством методик частотного преобразования данные преобразуются в представление, облегчающее отделение важной, с точки зрения восприятия, информации от незначительной, с точки зрения восприятия, информации. Менее важная информация может далее быть подвергнута сжатию с большими потерями, в то время как более важную информацию сохраняют для обеспечения лучшего воспринимаемого качества заданного битрейта. При частотном преобразовании, как правило, принимаются звуковые сэмплы, которые преобразуются из временной области в данные частотной области, иногда называемые частотными коэффициентами или спектральными коэффициентами.
Перцепционное моделирование включает в себя обработку звуковых данных согласно модели слуховой системы человека для улучшения воспринимаемого качества восстановленного звукового сигнала для заданного битрейта. Например, в слуховой модели, как правило, учитывают диапазон частот, слышимый человеком, и критические полосы частот. С использованием результатов перцепционного моделирования кодер придает форму искажению (например, шум квантования) в звуковых данных с целью минимизации слышимости искажения в заданном битрейте.
Посредством квантования диапазоны входных значений отображаются в одиночные значения, что привносит необратимую потерю информации, но также обеспечивает возможность кодеру отрегулировать качество и битрейт выходных данных. Иногда кодер выполняет квантование вместе с контроллером скорости, который иффектирует квантование для регулировки битрейта и/или качества. Существуют различные виды квантования, включая адаптивное и неадаптивное, скалярное и векторное, равномерное и неравномерное. Перцепционное взвешивание можно рассматривать как вид неравномерного квантования. Посредством обратного квантования, и обратного взвешивания данных восстанавливают аппроксимацию данных исходных частотных коэффициентов из данных взвешенных, квантованных частотных коэффициентов. Далее посредством обратного частотного преобразования данные восстановленных частотных коэффициентов преобразуют в восстановленные звуковые сэмплы временной области.
Совместное кодирование звуковых каналов включает в себя кодирование объединенной информации из нескольких каналов для уменьшения битрейта. Например, кодирование с выделением суммарного и разностного каналов (также называемое M/S-кодированием или суммарно-разностным кодированием) включает в себя выполнение в кодере матричной операции над левым и правым стереоканалами и отправки результирующих каналов "суммарного" и "разностного" (нормированных каналов суммы и разности) в декодер. Декодер восстанавливает фактические физические каналы из суммарного и разностного каналов. M/S-кодирование является кодированием без потерь, обеспечивающим возможность полного восстановления, если в процессе кодирования не используются никакие другие способы с потерями (например, квантование).
Стереоинтенсивное кодирование является примером способа совместного кодирования с потерями, который может использоваться при низких битрейтах. Стереоинтенсивное кодирование включает в себя суммирование в кодере левого и правого каналов и последующее масштабирование информации в декодере, исходя из канала суммы, во время восстановления левого и правого каналов. Как правило, стереоинтенсивное кодирование выполняется на верхних частотах, где искажения, привнесенные этим способом с потерями, менее заметны.
Учитывая важность сжатия и распаковки для мультимедийной обработки, неудивительно, что сжатие и распаковка являются вполне разработанными областями. Каковы бы ни были преимущества предшествующих способов и систем, однако у них нет разнообразных преимуществ способов и систем, описанных в этом документе.
Сущность изобретения
В этом кратком изложении сущности изобретения в упрощенном виде представлен выбор концепций, которые описаны ниже в подробном описании. Нет намерения в этом кратком изложении сущности изобретения идентифицировать основные или существенные признаки заявленного изобретения, и при этом нет намерения ограничивать объем заявленного изобретения.
Вкратце, подробное описание нацелено на принципы кодирования и декодирования многоканального звука. Например, аудиокодер использует несколько способов для улучшения качества и/или битрейта многоканального звука. Это улучшает общую практику прослушивания и делает компьютерные системы более привлекательной платформой для создания, распространения и воспроизведения высококачественного многоканального звука. Принципы кодирования и декодирования, описанные в этом документе, включают в себя разнообразные способы и инструментальные средства, которые могут быть использованы в комбинации или независимо.
Например, аудиокодер принимает данные многоканального звука, причем данные многоканального звука содержат группу из множества исходных каналов. Кодер выполняет кодирование с канальным расширением в отношении данных многоканального звука. Кодирование с канальным расширением содержит кодирование комбинированного канала для упомянутой группы и определение множества параметров для представления отдельных исходных каналов данной группы в качестве модифицированных версий закодированного комбинированного канала. Кодер также выполняет кодирование с частотным расширением в отношении данных многоканального звука. Кодирование с частотным расширением может содержать, например, разбиение полос частот в данных многоканального звука на группу основной полосы частот и группу расширенной полосы частот и кодирование звуковых коэффициентов в группе расширенной полосы частот на основе звуковых коэффициентов в группе основной полосы частот.
В качестве другого примера, аудиодекодер принимает закодированные данные многоканального звука, содержащие данные кодирования с канальным расширением и данные кодирования с частотным расширением, декодер восстанавливает множество звуковых каналов с использованием данных кодирования с канальным расширением и данных кодирования с частотным расширением. Данные кодирования с канальным расширением содержат комбинированный канал для упомянутого множества звуковых каналов и множество параметров для представления отдельных каналов упомянутого множества звуковых каналов в качестве модифицированных версий комбинированного канала.
В качестве другого примера, аудиодекодер принимает данные многоканального звука и выполняет обратное многоканальное преобразование, обратное основное преобразование частотной области во временную область, обработку с частотным расширением и обработку с канальным расширением в отношении принятых данных многоканального звука. Декодер может выполнять декодирование, которое соответствует кодированию, выполненному в кодере, и/или дополнительные этапы, такие как прямое комплексное преобразование принятых данных, и может выполнять эти этапы в разном порядке.
Для нескольких из аспектов, описанных в этом документе для аудиокодера, аудиодекодер выполняет соответствующую обработку и декодирование.
Предыдущие и другие объекты, признаки и преимущества станут более очевидны из следующего подробного описания, которое дается согласно прилагаемым чертежам.
Перечень фигур чертежей
Фиг.1 - блок-схема обобщенного рабочего округления, с которым могут быть реализованы разнообразные описанные варианты осуществления.
Фиг.2, фиг.3, фиг.4 и фиг.5 - блок-схемы обобщенных кодеров и/или декодеров, с которыми могут быть реализованы разнообразные описанные варианты осуществления.
Фиг.6 - схема, на которой изображена иллюстративная конфигурация сегментов.
Фиг.7 - блок-схема последовательности операций, иллюстрирующая обобщенный способ многоканальной предварительной обработки (предобработки).
Фиг.8 - блок-схема последовательности операций, иллюстрирующая обобщенный способ многоканальной постобработки.
Фиг.9 - блок-схема последовательности операций, иллюстрирующая способ получения комплексных масштабных множителей для комбинированных каналов при кодировании с канальным расширением.
Фиг.10 - блок-схема последовательности операций, иллюстрирующая способ использования комплексных масштабных множителей при декодировании с канальным расширением.
Фиг.11 - схема, иллюстрирующая масштабирование коэффициентов комбинированного канала при восстановлении канала.
Фиг.12 - график, иллюстрирующий графическое сравнение фактических отношений мощностей и отношений мощностей, интерполированных из отношений мощностей в опорных точках.
Фиг.13-фиг.33 - уравнения и связанные компоновки матриц, детали тонкости обработки с канальным расширением в некоторых реализациях.
Фиг.34 - блок-схема аспектов кодера, который выполняет кодирование с частотным расширением.
Фиг.35 - блок-схема последовательности операций, представляющая иллюстративный способ кодирования подполос расширенной полосы.
Фиг.36 - блок-схема аспектов декодера, который выполняет декодирование с частотным расширением.
Фиг.37 - блок-схема аспектов кодера, который выполняет кодирование с канальным расширением и кодирование с частотным расширением.
Фиг.38, фиг.39 и фиг.40 - блок-схемы аспектов декодера, который выполняет декодирование с канальным расширением и декодирование с частотным расширением.
Фиг.41 - схема, на которой изображены представления векторов смещения для двух звуковых блоков.
Фиг.42 - схема, на которой изображена конфигурация звуковых блоков, имеющих опорные точки для интерполяции масштабных параметров.
Подробное описание
Описаны разнообразные способы и инструментальные средства для представления, кодирования и декодирования звуковой информации. Эти способы и инструментальные средства способствуют созданию, распространению и воспроизведению высококачественного звукового контента, даже при очень низких скоростях передачи битов.
Разнообразные способы и инструментальные средства, описанные в этом документе, можно использовать независимо. Некоторые из способов и инструментальных средств могут быть использованы в комбинации (например, на разных фазах процесса комбинированного кодирования и/или декодирования).
Ниже описаны разные способы согласно блок-схемам действий по обработке. Разные действия по обработке, представленные в блок-схемах, могут быть объединены в меньшее количество действий или разделены на большее количество действий. Для простоты отношение между действиями, представленными в конкретной блок-схеме, и действиями, описанными в другом месте, часто не показывается. Во многих случаях действия в блок-схеме могут быть переупорядочены.
Большая часть подробного описания относится к представлению, кодированию и декодированию звуковой информации. Многие способы и инструментальные средства, описанные в этом документе, для представления кодирования и декодирования звуковой информации также могут быть применены к видеоинформации, информации неподвижного изображения или другой мультимедийной информации, отправляемой по одному или нескольким каналам.
I. Вычислительное окружение
На фиг.1 изображен обобщенный пример подходящего вычислительного окружения 100 вычислений, в котором могут быть реализованы описанные варианты осуществления. Вычислительное окружение 100 не подразумевает каких-либо ограничений относительно объема использования или функциональных возможностей, так как описанные варианты осуществления могут быть реализованы в разнообразных универсальных или специализированных вычислительных окружениях.
Согласно фиг.1, вычислительное окружение 100 включает в себя, по меньшей мере, один процессор 110 и память 120. На фиг.1 эта самая базовая конфигурации 130 обведена пунктирной линией. Процессор 110 исполняет машиноисполнимые инструкции и может быть реальным или виртуальным процессором. В многопроцессорной системе машиноисполняемые инструкции исполняют несколько процессоров для увеличения вычислительной мощности. Память 120 может быть энергозависимой памятью (например, регистры, кэш, RAM), энергонезависимой памятью (например, ROM, EEPROM, флэш-память) или некоторой комбинацией их обоих. В памяти 120 хранится программное обеспечение 180, реализующее один или несколько способов и/или систем обработки звука согласно одному или нескольким описанным вариантам осуществления.
У вычислительного окружения могут быть дополнительные признаки. Например, вычислительное окружение 100 включает в себя запоминающее устройство 140, одно или несколько устройств 150 ввода, одно или несколько устройств 160 вывода и одно или несколько соединений 170 связи. Механизм межкомпонентного соединения (не изображен), например, шина, контроллер или сеть, соединяет компоненты среды 100 вычислений. Как правило, программное обеспечение операционной системы (не изображено) обеспечивает рабочую среду для программного обеспечения, выполняющегося в среде 100 вычислений, и координирует действия компонентов среды 100 вычислений.
Запоминающее устройство 140 может быть сменным или несъемным и включает в себя магнитные диски, магнитные ленты или кассеты, компакт-диски (CD), универсальные цифровые диски (DVD) или любой другой носитель информации, который может быть использован для хранения информации, и к которому можно осуществить доступ в вычислительном окружении 100. В запоминающем устройстве 140 хранятся инструкции для программного обеспечения 180.
Устройство(а) 150 ввода может быть сенсорным устройством ввода, например, клавиатурой, мышью, пером, сенсорным экраном или трекболом, голосовым устройством ввода, устройством сканирования или другим устройством, которое обеспечивает ввод в вычислительное окружение 100. Для звука или видео устройством(ами) 150 ввода может быть микрофон, звуковой адаптер, видеоадаптер, адаптер ТВ-тюнера или сходное устройство, которое принимает ввод видеоданных или звуковой информации в аналоговом или цифровом представлении, либо CD или DVD, с которого считываются видео или звуковые сэмплы в вычислительное окружение. Устройство(а) 160 вывода может быть дисплеем, принтером, динамиком, устройством записи на CD/DVD, сетевым адаптером или другим устройством, которое обеспечивает вывод из вычислительного окружения 100.
Соединение(я) 170 связи обеспечивает возможность связи через среду связи с одним или несколькими другими вычислительными объектами. Среда связи передает информацию, например, машиноисполнимые инструкции, звуковую или видеоинформацию или другие данные в сигнале данных. Модулированный сигнал данных является сигналом, одна или несколько характеристик которого установлена или изменяется таким образом, чтобы закодировать в этом сигнале информацию. Например, среды связи включают в себя проводные или беспроводные методики, реализованные с помощью электрической, оптической, радиочастотной, инфракрасной, акустической или другой среды.
Варианты осуществления могут быть описаны в общем контексте машиночитаемых носителей информации. Машиночитаемыми носителями информации являются любые доступные носители информации, к которым можно осуществить доступ в вычислительном окружении. Например, в случае вычислительного окружения 100, машиночитаемые носители информации включают в себя память 120, запоминающее устройство 140, среды связи и комбинации любых вышеупомянутых сред и носителей.
Варианты осуществления могут быть описаны в общем контексте машиноисполняемых инструкций, например, включенных в программные модули, исполняемые в вычислительном окружении на целевом реальном или виртуальном процессоре. В общем, программные модули включают в себя процедуры, программы, библиотеки, объектные файлы, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные типы данных. Функциональные возможности программных модулей могут быть объединены или распределены между программными модулями, как требуется в разнообразных вариантах осуществления. Исполнимые компьютером инструкции для программных модулей могут исполняться в локальном или распределенном вычислительном окружении.
Для представления, в подробном описании термины типа "определять", "принимать" и "выполнять" используются для описания компьютерных операций в вычислительном окружении. Эти термины являются обобщениями высокого уровня для операций, выполняемых компьютером, и их не следует путать с действиями, совершаемыми человеком. Фактические компьютерные операции, соответствующие этим терминам, меняются в зависимости от реализации.
II. Иллюстративные кодеры и декодеры
На фиг.2 изображен первый кодер 200 звука, в котором могут быть реализованы один или несколько описанных вариантов осуществления. Кодер 200 является основанным на преобразовании, перцепционным аудиокодером 200. На фиг.3 изображен соответствующий аудиодекодер 300.
На фиг.4 изображен второй аудиокодер 400, в котором могут быть реализованы один или несколько описанных вариантов осуществления. Кодер 400 также является основанным на преобразовании, перцепционным аудиокодером, но кодер 400 включает в себя дополнительные модули, например, модули для обработки многоканального звука. На фиг.5 изображен соответствующий аудиодекодер 500.
Хотя системы, изображенные на фиг.2 - фиг.5, являются обобщенными, у каждой существуют характеристики, имеющиеся в реальных системах. В любом случае, отношения, представленные между модулями кодеров и декодеров, указывают на потоки информации в кодерах и декодерах; для простоты другие отношения не изображены. В зависимости от реализации и типа заданного сжатия, модули кодера или декодера могут быть добавлены, не включены, разделены на несколько модулей, комбинированы с другими модулями и/или заменены подобными модулями. В альтернативных вариантах осуществления кодеры или декодеры с различными модулями и/или другими конфигурациями обрабатывают звуковые данные или некоторые другие типы данных согласно одному или нескольким описанным вариантам осуществления.
A. Первый аудиокодер
Кодер 200 принимает временную последовательность входных звуковых сэмплов 205 с некоторой скоростью и глубиной дискретизации. Входные звуковые сэмплы 205 являются сэмплами для многоканального звука (например, стерео) или монозвука. Кодер 200 сжимает звуковые сэмплы 205 и мультиплексирует информацию, сгенерированную разнообразными модулями кодера 200, для вывода битового потока 295 в формате сжатия, например, формате WMA, контейнерном формате, например, расширенном потоковом формате ("ASF"), или другом формате сжатия, или контейнерном формате.
Частотный преобразователь 210 принимает звуковые сэмплы 205 и преобразует их в данные частотной (или спектральной) области. Например, частотный преобразователь 210 разбивает звуковые сэмплы 205 кадров на блоки подкадров, которые могут быть переменной длины, для обеспечения переменного разрешения по времени. Блоки могут перекрываться для уменьшения воспринимаемых нарушений непрерывности между блоками, которые иначе могут быть привнесены последующим квантованием. Частотный преобразователь 210 применяет к блокам меняющееся во времени модулированное преобразование с перекрытием ("MLT"), модулированное дискретное компусное преобразование (DCT) ("MDCT"), некоторые другие разнообразные MLT или DCT или некоторые другие виды модулированного или немодулированного, с перекрытием или без перекрытия частотного преобразования, или использует подполосное кодирование или вейвлет-кодирование. Частотный преобразователь 210 выводит блоки данных спектральных коэффициентов и выводит дополнительную информацию, например, размеры блоков, в мультиплексор ("MUX") 280.
Для данных многоканального звука средство многоканального преобразования 220 может преобразовывать несколько исходных, независимо закодированных каналов в совместно закодированные каналы. Или, многоканальный преобразователь 220 может передавать левый и правый каналы как независимо закодированные каналы. Устройство многоканального преобразования 220 генерирует дополнительную информацию для MUX 280 с указанием используемого режима канала. Кодер 200 может применять многоканальную повторную матричную обработку к блоку звуковых данных после многоканального преобразования.
Средство 230 перцепционного моделирования моделирует свойства слуховой системы человека для улучшения воспринимаемого качества восстановленного звукового сигнала для заданного битрейта. Средство 230 перцепционного моделирования использует любую из разнообразных слуховых моделей и передает информацию об образце возбуждения или другую информацию в средство 240 взвешивания. Например, в слуховой модели, как правило, учитывают диапазон частот, слышимый человеком, и критические полосы частот (например, Bark-диапазоны). Кроме диапазона частот и критических полос частот, на восприятие может существенно влиять взаимодействие между звуковыми сигналами. Кроме того, слуховая модель может учитывать множество других факторов, касающихся физических или нервных аспектов восприятия человеком звука.
Средство 230 перцепционного моделирования выводит информацию, которую средство 240 взвешивания использует для придания формы шуму в звуковых данных, которая уменьшает слышимость шума. Например, с использованием любой из разнообразных методик средство 240 взвешивания формирует весовые коэффициенты для матриц квантования (иногда называемых масками) на основе принятой информации. Весовые коэффициенты для матрицы квантования включают в себя вес для каждой из нескольких полос квантования в матрице, где полосы квантования являются диапазонами частот частотных коэффициентов. Соответственно, весовые коэффициенты указывают пропорции, при которых ошибка шум/квантование распространяется по полосам квантования, тем самым контролируя спектральное/временное распространение ошибки шум/квантование, с целью минимизации слышимости шума, помещая большее количество шума в полосы частот, где он менее слышим, и наоборот.
Средство 240 взвешивания далее применяет весовые коэффициенты к данным, принятым из средства 220 многоканального преобразования.
Квантователь 250 квантует выходные данные средства 240 взвешивания с генерацией квантованных данных коэффициентов для энтропийного кодера 260 и дополнительной информации, включающей в себя размер шага квантования, для MUX 280. На фиг.2 квантователь 250 является адаптивным, равномерным, скалярным квантователем. Квантователь 250 применяет идентичный размер шага квантования к каждому спектральному коэффициенту, но размер шага самого квантования может изменяться от одной итерации цикла квантования к другой для влияния на битрейт выходных данных энтропийного кодера 260. Другими видами квантования являются неравномерное, векторное квантование и/или неадаптивное квантование.
Энтропийный кодер 260 сжимает без потерь квантованные данные коэффициентов, принятых из квантователя 250, например, посредством выполнения кодирования run-level и векторного кодирования переменной длины. Энтропийный кодер 260 может вычислять количество битов, затраченных на кодирование звуковой информации, и передавать эту информацию в контроллер 270 скорости/качества.
Контроллер 270 работает с квантователем 250 для регулирования битрейта и/или качества выходных данных кодера 200. Контроллер 270 выводит размер шага квантования в квантователь 250 с целью удовлетворения ограничениям по битрейту и качеству.
Кроме того, кодер 200 может применять замену на шум и/или усечение полосы частот к блоку звуковых данных.
MUX 280 мультиплексирует дополнительную информацию, принятую из других модулей аудиокодера 200 вместе с данными, закодированными энтропийным кодированием, которые приняты из энтропийного кодера 260. MUX 280 может включать в себя виртуальный буфер, который хранит битовый поток 295 для вывода его кодером 200.
B. Первый аудиодекодер
Декодер 300 принимает битовый поток 305 сжатой звуковой информации, в том числе данные, закодированные энтропийным кодированием, а также дополнительную информацию, исходя из чего декодер 300 восстанавливает звуковые сэмплы 395.
Демультиплексор ("DEMUX") 310 анализирует информацию в битовом потоке 305 и отправляет информацию в модули декодера 300. DEMUX 310 включает в себя один или несколько буферов для компенсации краткосрочных изменений в битрейте из-за флуктуаций в сложности звука, сетевого дрожания и/или других факторов.
Энтропийный декодер 320 без потерь распаковывает энтропийные коды, принятые из DEMUX 310, с генерацией квантованных данных спектральных коэффициентов. Энтропийный декодер 320, как правило, применяет способы, обратные способам энтропийного кодирования, используемым в кодере.
Обратный квантователь 330 принимает размер шага квантования из DEMUX 310 и принимает квантованные данные спектральных коэффициентов из энтропийного декодера 320. Обратный квантователь 330 применяет размер шага квантования к квантованным данным частотных коэффициентов для частичного восстановления данных частотных коэффициентов или иным образом выполняет обратное квантование.
Из DEMUX 310 генератор 340 шума принимает информацию, указывающую, какие полосы частот в блоке данных заменены на шум, а также любые параметры для формы шума. Генератор 340 шума формирует образцы для указанных полос частот и передает информацию в средство 350 обратного взвешивания.
Средство 350 обратного взвешивания принимает весовые коэффициенты из DEMUX 310, образцы для любых замененных на шум полос частот из генератора 340 шума и частично восстановленные данные частотных коэффициентов из обратного квантователя 330. По мере необходимости, средство 350 обратного взвешивания распаковывает весовые коэффициенты. Средство 350 обратного взвешивания применяет весовые коэффициенты к частично восстановленным данным частотных коэффициентов для полос частот, которые не были заменены на шум. Средство 350 обратного взвешивания далее добавляет в шум образцы, принятые из генератора 340 шума для замененных на шум полос частот.
Средство 360 обратного многоканального преобразования принимает данные восстановленных спектральных коэффициентов из средства 350 обратного взвешивания и информацию о режиме канала из DEMUX 310. Если многоканальный звук находится в независимо закодированных каналах, то средство 360 обратного многоканального преобразования пропускает эти каналы дальше. Если многоканальные данные находятся в совместно закодированных каналах, то средство 360 обратного многоканального преобразования преобразует данные в независимо закодированные каналы.
Средство 370 обратного частотного преобразования принимает данные спектральных коэффициентов, выведенные средством 360 обратного многоканального преобразования, а также дополнительную информацию, например, размеры блока, из DEMUX 310. Средство 370 обратного частотного преобразования применяет преобразование, обратное частотному преобразованию, используемому в кодере, и выводит блоки восстановленных звуковых сэмплов 395.
C. Второй аудиокодер
Согласно фиг.4, кодер 400 принимает временную последовательность входных звуковых сэмплов 405 с некоторой скоростью и глубиной дискретизации. Входные звуковые сэмплы 405 являются сэмплами для многоканального звука (например, стерео, объемного) или монозвука. Кодер 400 сжимает звуковые сэмплы 405 и мультиплексирует информацию, сгенерированную разнообразными модулями кодера 400, для вывода битового потока 495 в формате сжатия, например, формате WMA Pro, контейнерном формате, например, ASF или другом формате сжатия или контейнерном формате.
Кодер 400 выбирает между несколькими способами кодирования для звуковых сэмплов 405. На фиг.4, кодер 400 переключается между смешанным/чистым способом кодирования без потерь и способом кодирования с потерями. Способ кодирования без потерь включает в себя смешанный/чистый кодер 472 без потерь и, как правило, используется для сжатия с высоким качеством (и высоким битрейтом). Способ кодирования с потерями включает в себя компоненты, такие как средство 442 взвешивания и квантователь 460 и, как правило, используется для сжатия с регулируемым качеством (и регулируемым битрейтом). Выбор зависит от ввода пользователя или других критериев.
Для кодирования с потерями данных многоканального звука, многоканальный препроцессор 410, в необязательном порядке, повторно выполняет матричную обработку звуковых сэмплов 405 временной области. Например, многоканальный препроцессор 410, в необязательном порядке, повторно выполняет матричную обработку звуковых сэмплов 405 для исключения одного или нескольких закодированных каналов или увеличивает межканальную корреляцию в кодере 400, в то же время обеспечивая возможность восстановления (в некотором представлении) в декодере 500. Многоканальный препроцессор 410 может отправлять в MUX 490 дополнительную информацию, например инструкции для многоканальной постобработки.
Модуль 420 разделения на окна разделяет кадр входных звуковых сэмплов 405 на блоки подкадров (окна). Окна могут иметь меняющийся во времени размер и функции придания формы окна. Когда кодер 400 использует кодирование с потерями, окна переменного размера обеспечивают возможность переменного разрешения по времени. Модуль 420 разделения на окна выводит блоки разделенных данных, а также выводит дополнительную информацию, например размеры блоков, в MUX 490.
На фиг.4, средство 422 конфигурирования сегментов разделяет кадры многоканального звука на поканальной основе. Средство 422 конфигурирования сегментов независимо разделяет каждый канал в кадре, если позволяет качество/битрейт. Это обеспечивает возможность, например, средству 422 конфигурирования сегментов изолировать переходы, которые появляются в конкретном канале, в меньших окнах, но использовать большие окна для разрешения по частоте или эффективности сжатия в других каналах. Изоляция переходов на поканальной основе может повысить эффективность сжатия, но во многих случаях требуется дополнительная информация, указывающая на разделения в отдельных каналах. Окна идентичного размера, которые совмещены во времени, могут определяться для дальнейшего устранения избыточности при многоканальном преобразовании. Соответственно, средство 422 конфигурирования сегментов группирует окна идентичного размера, которые совмещены во времени, в виде сегмента.
На фиг.6 изображена иллюстративная конфигурация 600 сегментов для кадра звука 5.1-канального. Конфигурация 600 сегментов включает в себя семь сегментов, пронумерованных от 0 до 6. Сегмент 0 включает в себя сэмплы из каналов 0, 2, 3 и 4 и покрывает первую четверть кадра. Сегмент 1 включает в себя сэмплы из канала 1 и покрывает первую половину кадра. Сегмент 2 включает в себя сэмплы из канала 5 и покрывает весь кадр. Сегмент 3 подобен сегменту 0, но покрывает вторую четверть кадра. Сегменты 4 и 6 включают в себя сэмплы в каналах 0, 2 и 3 и покрывают третью и четвертую четверти кадра соответственно. Наконец, сегмент 5 включает в себя сэмплы из каналов 1 и 4 и покрывает последнюю половину кадра. Как показано, конкретный сегмент размещения может включать в себя окна в несмежных каналах.
Частотный преобразователь 430 принимает звуковые сэмплы и преобразует их в данные в частотной области с применением такого преобразования, как описано выше для частотного преобразователя 210 согласно фиг.2. Частотный преобразователь 430 выводит блоки данных спектральных коэффициентов в средство 442 взвешивания и выводит дополнительную информацию, например, размеры блоков, в MUX 490. Частотный преобразователь 430 выводит и частотные коэффициенты, и дополнительную информацию в средство 440 перцепционного моделирования.
Средство 440 перцепционного моделирования моделирует свойства слуховой системы человека с обработкой звуковых данных согласно слуховой модели, в целом так, как описано выше в отношении средства 230 перцепционного моделирования согласно фиг.2.
Средство 442 взвешивания формирует весовые коэффициенты для матриц квантования на основе информации, принятой из средства 440 перцепционного моделирования, в целом, как описано выше в отношении средства взвешивания 240 согласно фиг.2. Средство 442 взвешивания применяет весовые коэффициенты к данным, принятым из частотного преобразователя 430. Средство весовой обработки 442 взвешивания выводит дополнительную информацию, например, матрицы квантования и весовые коэффициенты канала, в MUX 490. Матрицы квантования могут быть сжаты.
Для данных многоканального звука средство 450 многоканального преобразования может применять многоканальное преобразование для использования преимуществ межканальной корреляции. Например, средство 450 многоканального преобразования выборочно и гибко применяет многоканальное преобразование к некоторым, но не ко всем каналам и/или полосам квантования в мозаичном размещении. Средство 450 многоканального преобразования выборочно использует предопределенные матрицы или пользовательские матрицы и применяет эффективное сжатие к пользовательским матрицам. Средство 450 многоканального преобразования генерирует дополнительную информацию для MUX 490 с указанием, например, используемых многоканальных преобразований и частей сегментов, в отношении которых выполнено многоканальное преобразование элементов.
Квантователь 460 квантует выходные данные средства 450 многоканального преобразования с генерацией квантованных данных коэффициентов для энтропийного кодера 470 и дополнительной информации, включающей в себя размеры шагов квантования, для MUX 490. На фиг.4, квантователь 460 является адаптивным, равномерным, скалярным квантователем, который вычисляет коэффициент квантования для каждого сегмента, но квантователь 460 может вместо этого выполнять некоторый другой вид квантования.
Энтропийный кодер 470 без потерь сжимает квантованные данные коэффициентов, принятые из квантователя 460, в целом, как описано выше в отношении кодера 260 непредсказуемой части сигнала согласно фиг.2.
Контроллер 480 работает с квантователем 460 для регулирования битрейта и/или качества выходных данных кодера 400. Контроллер 480 выводит коэффициенты квантования в квантователь 460 с целью удовлетворения ограничениям по битрейту и/или качеству.
Смешанный/чистый кодер 472 без потерь и ассоциированный энтропийный кодер 474 сжимает звуковые данные для смешанного/чистого способа кодирования без потерь. Кодер 400 использует смешанный/чистый способ кодирования без потерь для всей последовательности или переключается между способами кодирования на покадровой, поблочной, посегментной или другой основе.
MUX 490 мультиплексирует дополнительную информацию, принятую из других модулей аудиокодера 400, вместе с данными, закодированными энтропийным кодированием, которые приняты из энтропийных кодеров 470, 474. MUX 490 включает в себя один или несколько буферов для регулирования скорости или для других целей.
D. Второй аудиодекодер
Согласно фиг.5, второй декодер 500 принимает битовый поток 505 сжатой звуковой информации. Битовый поток 505 включает в себя данные, закодированные энтропийным кодированием, а также дополнительную информацию, исходя из которой декодер 500 восстанавливает звуковые сэмплы 595.
DEMUX 510 выполняет разбор информации в битовом потоке 505 и отправляет информацию в модули декодера 500. DEMUX 510 включает в себя один или несколько буферов для компенсации краткосрочных изменений в битрейте из-за флуктуаций в сложности звука, сетевого дрожания и/или других факторов.
Энтропийный декодер 520 без потерь распаковывает энтропийные коды, принятые из DEMUX 510, как правило, с применением способов, обратных способам энтропийного кодирования, используемым в кодере 400. При декодировании данных, сжатых способом кодирования с потерями, энтропийный декодер 520 генерирует квантованные данные спектральных коэффициентов.
Смешанный/чистый декодер 522 без потерь и ассоциированный энтропийный декодер(ы) 520 распаковывают закодированные без потерь звуковые данные для смешанного/чистого способа кодирования без потерь.
Декодер 530 конфигурации сегментов принимает и, в случае необходимости, декодирует информацию, указывающую комбинации сегментов для кадров из DEMUX 590. Информация о комбинациях сегментов может быть энтропийно закодированной или иным образом параметризованной. Декодер 530 конфигурации сегментов далее передает информацию о комбинациях сегментов в разнообразные другие модули декодера 500.
Средство 540 обратного многоканального преобразования принимает квантованные данные спектральных коэффициентов из энтропийного декодера 520, а также информацию о комбинациях сегментов из декодера 530 конфигурации сегментов и дополнительную информацию из DEMUX 510, указывающую, например, используемое многоканальное преобразование и преобразованные части сегментов. С использованием этой информации средство 540 обратного многоканального преобразования распаковывает матрицу преобразования по мере необходимости и выборочно и гибко применяет одно или несколько обратных многоканальных преобразований к звуковым данным.
Обратный квантователь/средство обратного взвешивания 550 принимает информацию, такую как, коэффициенты квантования канала и сегмента, а также матрицы квантования из DEMUX 510 и принимает квантованные данные спектральных коэффициентов из средства 540 обратного многоканального преобразования. Обратный квантователь/средство обратного взвешивания 550 распаковывает принятую информацию о весовых коэффициентах по мере необходимости. Обратный квантователь/средство обратного взвешивания 550 далее выполняет обратные квантования и взвешивание.
Средство 560 обратного частотного преобразования принимает данные спектральных коэффициентов, выведенные обратным квантователем/средством обратного взвешивания 550, а также дополнительную информацию, из DEMUX 510 и информацию о комбинациях сегментов из декодера 530 конфигурации сегментов. Средство 570 обратного частотного преобразования применяет преобразование, обратное частотному преобразованию, используемому в кодере, и выводит блоки в средство преобразования с перекрытием/сумматор 570.
В дополнение к получению информации о комбинациях сегментов из декодера 530 конфигурации сегментов, средство преобразования с перекрытием/сумматор 570 принимает декодированную информацию из средства 560 обратного частотного преобразования и/или смешанного/чистого декодера 522 без потерь. Средство преобразования с перекрытием/сумматор 570 выполняет перекрытие звуковых данных и суммирует звуковые данные по мере необходимости и перемежает кадры или другие последовательности звуковых данных, закодированных в различных режимах.
Многоканальный постпроцессор 580, в необязательном порядке, повторно выполняет матричную обработку звуковых сэмплов временной области, выведенных средством преобразования с перекрытием/сумматором 570. Для постобработки с регулированием битового потока, матрицы преобразования постобработки изменяются со временем и сигнализируются или включаются в битовый поток 505.
III. Краткий обзор многоканальной Обработки
Этот раздел является кратким обзором некоторых способов многоканальной обработки, используемых в некоторых кодерах и декодерах, включая способы предварительной многоканальной обработки, способы гибкого многоканального преобразования и способы многоканальной постобработки.
A. Предварительная многоканальная обработка
Некоторые кодеры выполняют многоканальную предварительную обработку входных звуковых сэмплов во временной области.
В традиционных кодерах, когда на вход подаются N исходных звуковых каналов, количество выходных каналов, генерируемых кодером, также N. Количество закодированных каналов может однозначно соответствовать исходным каналам, либо закодированные каналы могут быть каналами с многоканальным преобразованием. Если из-за сложности кодирования источника сжатие становится трудным, или если буфер кодера полный, то кодер, однако, может изменить или исключить (то есть, не кодировать) один или несколько первоначальных звуковых каналов или каналов, закодированных с многоканальным преобразованием. Это может быть сделано для уменьшения сложности кодирования и улучшения общего качества воспринимаемого звука. Для предварительной обработки с управлением по качеству кодер может выполнять многоканальную предварительную обработку в ответ на измеренное качество звука для плавного управления общим качеством звука и/или разделением каналов.
Например, кодер может изменять образ многоканального звука для уменьшения критичности одного или нескольких каналов так, чтобы эти каналы были исключены в кодере, и при этом восстановлены в декодере как "фантомные" или незакодированные каналы. Это помогает избегать необходимости прямого удаления каналов или жесткого квантования, что может существенно повлиять на качество.
Кодер может указывать декодеру, какое действие предпринимать, когда количество закодированных каналов меньше, чем количество каналов для вывода. Далее, в декодере может использоваться преобразование многоканальной постобработки для создания фантомных каналов. Например, кодер (через битовый поток) может проинструктировать декодер создать фантомный центр посредством усреднения декодированных левого и правого каналов. Впоследствии многоканальные преобразования могут использовать избыточность между усредненными обратным левым и обратным правым каналами (без постобработки), или кодер может проинструктировать декодер выполнить некоторую многоканальную постобработку для обратных левого и правого каналов. Или, кодер может сигнализировать декодеру выполнить многоканальную постобработку для другой цели.
На Фиг.7 представлен обобщенный способ 700 предварительной многоканальной обработки. Кодер выполняет (710) предварительную многоканальную обработку данных многоканального звука временной области с генерацией преобразованных звуковых данных во временной области. Например, при предварительной обработке задействуется общая матрица преобразования с элементами, являющимися действительными, непрерывными значениями. Общая матрица преобразования может быть выбрана для искусственного увеличения межканальной корреляции. Это уменьшает сложность для остальной части кодера, но за счет потерянного разделения каналов.
Эти выходные данные далее подаются в остальную часть кодера, которая, в дополнение к любой другой обработке, которую может выполнять кодер, кодирует (720) данные с использованием способов, описанных согласно фиг.4, или других способов сжатия, с генерацией закодированных данных многоканального звука.
Синтаксис, используемый кодером и декодером, может обеспечить возможность описания общих или предопределенных матриц многоканального преобразования постобработки, которые могут измениться или включаться/выключаться на покадровой основе. Кодер может использовать эту гибкость для ограничения ухудшений стерео/объемного образа посредством выбора оптимального соотношения разделения каналов для лучшего общего качества при определенных обстоятельствах посредством искусственного увеличения межканальной корреляции. В качестве альтернативы, декодер и кодер могут использовать другой синтаксис для многоканальной предварительной обработки и постобработки, например, такой, который обеспечивает возможность изменений в матрицах преобразования на основе, отличной от покадровой.
B. Гибкие многоканальные преобразования
Некоторые кодеры могут выполнять гибкие многоканальные преобразования, которые эффективно используют межканальную корреляцию. Соответствующие декодеры могут выполнять соответствующие обратные многоканальные преобразования.
Например, кодер может помещать многоканальное преобразование после перцепционного взвешивания (и декодер может помещать обратное многоканальное преобразование перед обратным взвешиванием) так, чтобы сигнал межканальной утечки был управляемым, измеримым и имел спектр, подобный исходному сигналу. Кодер может применять весовые коэффициенты к многоканальному звуку в частотной области (например, и весовые коэффициенты, и модификаторы шага квантования каждого канала) перед многоканальными преобразованиями. Кодер может выполнять одно или несколько многоканальных преобразований взвешенных звуковых данных и квантовать данные многоканально преобразованного звука.
Декодер может собирать сэмплы из нескольких каналов с конкретным коэффициентом частотности в вектор и выполнять обратное многоканальное преобразование для формирования выходных данных. Впоследствии, декодер может выполнять обратное квантование и обратное взвешивание многоканального звука с окраской выходных данных обратного многоканального преобразования посредством маски(ок). Соответственно, утечке, которая происходит через каналы (из-за квантования), можно придать такую спектральную форму, чтобы слышимость просочившегося сигнала была измерима и управляема, и утечке других каналов в данном восстановленном канале была придана спектральная форма, подобная исходному неискаженному сигналу данного канала.
Кодер может группировать каналы для многоканальных преобразований с целью ограничения того, какие каналы преобразовываются вместе. Например, кодер может определять, какие каналы в сегменте коррелированы, и группировать коррелированые каналы. Кодер при группировании каналов для многоканального преобразования может учитывать попарные корреляции между сигналами каналов, а также корреляции между полосами, или другие, и/или дополнительные факторы. Например, кодер может вычислять попарные корреляции между сигналами в каналах и затем группировать каналы соответственно. Канал, который попарно не коррелирован ни с одним из каналов в группе, может, тем не менее, быть совместимым с этой группой. Для каналов, которые несовместимы с группой, кодер может проверять совместимость на уровне полосы и корректировать одну или несколько групп каналов соответственно. Кодер может идентифицировать каналы, которые совместимы с группой в некоторых полосах, но несовместимы в некоторых других полосах. Выключение преобразования в несовместимых полосах может улучшить корреляцию среди полос, в отношении которых фактически выполняется кодирование на основе многоканального преобразования и которые улучшают эффективность кодирования. Каналы в группе каналов не должны быть непрерывными. Один сегмент может включать в себя несколько групп каналов, и у каждой группы каналов может быть отличное ассоциированное многоканальное преобразование. После принятия решения касаемо того, какие каналы совместимы, кодер может поместить информацию о группе каналов в битовый поток. Декодер впоследствии может извлечь и обработать информацию из битового потока.
Кодер может выборочно включать или выключать многоканальные преобразования на уровне полосы частот для управления тем, какие полосы частот будут преобразованы вместе. Соответственно, кодер может выборочно исключать полосы, которые несовместимы в многоканальных преобразованиях. Когда многоканальное преобразование выключено для конкретной полосы, кодер может использовать тождественное преобразование для этой полосы, пропуская данные в этой полосе без изменения их. Количество полос частот связано с частотой дискретизации звуковых данных и размером сегмента. В общем, чем выше частота дискретизации или больше размер сегмента, тем больше количество полос частот. Кодер может выборочно включать или выключать многоканальные преобразования на уровне полосы частот для каналов группы каналов сегмента. Декодер может восстанавливать информацию о включении/выключении полосы для многоканального преобразования для группы каналов сегмента из битового потока согласно конкретному синтаксису битового потока.
Кодер может использовать иерархические многоканальные преобразования для ограничения вычислительной сложности, особенно в декодере. С помощью иерархического преобразования кодер может разделять общее преобразование на несколько стадий с сокращением вычислительной сложности отдельных стадий и в некоторых случаях с сокращением количества информации, необходимой для спецификации многоканального преобразования. С использованием этой каскадной структуры кодер может имитировать более общее преобразование посредством меньших преобразований до некоторой степени точности. Декодер далее может выполнять соответствующее иерархическое обратное преобразование. Кодер может комбинировать информацию о включении/выключении полосы для нескольких многоканальных преобразований. Декодер может извлекать информацию для иерархии многоканальных преобразований для группы каналов из битового потока согласно конкретному синтаксису битового потока.
Кодер может использовать предопределенные матрицы многоканального преобразования для уменьшения битрейта, используемого для спецификации матриц преобразования. Кодер может выбирать из числа нескольких доступных предопределенных типов матриц и сигнализировать о выбранной матрице в битовом потоке. Некоторые типы матриц могут не требовать никакой дополнительной сигнализации в битовом потоке. Другие могут требовать дополнительной спецификации. Декодер может восстанавливать информацию, указывающую тип матрицы и (в случае необходимости) дополнительную информацию, специфицирующую матрицу.
Кодер может вычислять и применять матрицы квантования для каналов сегментов, модификаторов шага квантования для каждого канала и в целом коэффициентов квантования элемента мозаичного размещения. Это обеспечивает возможность кодеру придавать форму шуму согласно слуховой модели, cбалансировать шум между каналами и управлять искажением в целом. Соответствующий декодер может применять в целом коэффициенты квантования сегментов, модификаторы шага квантования для каждого канала и матрицы квантования для каналов сегментов, и может комбинировать этапы обратного квантования и обратного взвешивания.
C. Многоканальная постобработка
Некоторые декодеры выполняют многоканальную постобработку в отношении восстановленных звуковых сэмплов во временной области.
Например, количество декодированных каналов может быть меньше, чем количество каналов для вывода (например, потому что кодер не закодировал один или несколько входных каналов). Если так, то преобразование многоканальной постобработки можно использовать для создания одного или нескольких "фантомных" каналов на основе фактических данных в декодированных каналах. Если количество декодированных каналов равно количеству выходных каналов, то преобразование постобработки можно использовать для произвольного пространственного вращения представления, переотображения выходных каналов между положениями динамиков или других пространственных или специальных эффектов. Если количество декодированных каналов больше, чем количество выходных каналов (например, воспроизведение объемного звука на стереофонической аппаратуре), то преобразование постобработки можно использовать для "сложения" каналов. Матрицы преобразования для этих сценариев и приложений могут быть обеспечены или сигнализированы кодером.
На Фиг.8 представлен обобщенный способ 800 многоканальной постобработки. Декодер декодирует (810) закодированные данные многоканального звука с генерацией восстановленных данных многоканального звука временной области.
Декодер далее выполняет (820) многоканальную постобработку данных многоканального звука во временной области. Когда кодер генерирует несколько закодированных каналов, и декодер выводит большее количество каналов, постобработка включает в себя общее преобразование для генерации большего количества выходных каналов из меньшего количества закодированных каналов. Например, декодер берет совмещенные (во времени) сэмплы, по одному из каждого из восстановленных закодированных каналов, затем заполняет любые отсутствующие каналы (то есть, каналы, исключенные кодером) нулями. Декодер перемножает сэмплы с общей матрицей преобразования постобработки.
Общая матрица преобразования постобработки может быть матрицей с предопределенными элементами, или она может быть общей матрицей с элементами, задаваемыми кодером. Кодер сигнализирует декодеру использовать предопределенную матрицу (например, посредством одного или нескольких битов флага) или отправляет элементы общей матрицы в декодер, или декодер можно сконфигурировать для постоянного использования одной общей матрицы преобразования постобработки. Для дополнительной гибкости многоканальную постобработку можно включать/выключать на покадровой или другой основе (в этом случае декодер может использовать матрицу тождественного преобразования (единичную матрицу), чтобы оставлять каналы неизменными).
Для получения дополнительной информации по предварительной многоканальной обработке, постобработке и гибкому многоканальному преобразованию (см. публикацию патентной заявки США № 2004-0049379, озаглавленную "Multi-Channel Audio Encoding and Decoding").
IV. Обработка канального расширения для многоканального звука
В типичной схеме кодирования для кодирования многоканального источника в кодере выполняют преобразование время-частота с использованием такого преобразования, как модулированное преобразование с перекрытием ("MLT") или дискретное косинусное преобразование ("DCT"), с соответствующим обратным преобразованием в декодере. Коэффициенты MLT или DCT для некоторых из каналов группируются в группу канала, и по всем каналам применяется линейное преобразование для получения каналов, которые должны быть закодированы. Если левый и правый каналы стереоисточника коррелированы, то они могут быть закодированы с использованием суммарно-разностного преобразования (также называемого M/S-кодированием или кодированием с выделением центрального и разностного каналов). Это устраняет корреляцию между этими двумя каналами, что в результате приводит к меньшему количеству битов, требуемых для их кодирования. Однако, при низких битрейтах разностный канал может быть не закодирован (что в результате приводит к потере стереообраза), или может страдать качество из-за тяжеловесного квантования обоих каналов.
Описанные способы и инструментальные средства обеспечивают требуемую альтернативу существующим схемам совместного кодирования (например, суммарно-разностному кодированию, стереоинтенсивному кодированию и т.д.). Вместо кодирования каналов суммы и разности для групп каналов (например, пары левого/правого, пары фронтального левого/фронтального правого, пары заднего левого/заднего правого или другие группы) описанные способы и инструментальные средства кодируют один или несколько комбинированных каналов (которые могут быть суммами каналов, ведущим главным компонентом после применения де-коррелирующего преобразования или некоторым другим комбинированным каналом) наряду с дополнительными параметрами для описания межканальной корреляции и мощности соответствующих физических каналов и обеспечения возможности восстановления физических каналов, которые поддерживают межканальную корреляцию и мощность соответствующих физических каналов. Другими словами, поддерживаются статистики второго порядка физических каналов. Такую обработку можно назвать обработкой канального расширения.
Например, использование комплексных преобразований обеспечивает возможность восстановления канала, которое поддерживает межканальную корреляцию и мощность соответствующих каналов. Для аппроксимации узкополосного сигнала с поддержкой статистик второго порядка достаточно обеспечить восстановление, которое поддерживает мощность и фазу отдельных каналов без отправки точной информации о коэффициентах корреляции или информации о фазе.
Описанные способы и инструментальные средства представляют незакодированные каналы как модифицированные версии закодированных каналов. Каналы, которые должны быть закодированы, могут быть фактическими, физическими каналами или преобразованными версиями физических каналов (с использованием, например, линейного преобразования, примененного к каждому сэмплу). Например, описанные способы и инструментальные средства обеспечивают возможность восстановления множества физических каналов с использованием одного закодированного канала и множества параметров. В одной реализации параметры включают в себя отношения мощностей (также называемых интенсивностью или энергией) между двумя физическими каналами и закодированным каналом на подполосной основе. Например, для кодирования сигнала, содержащего левый (L) и правый (R) стереоканалы, отношениями мощностей являются L/M и R/M, где М является мощностью закодированного канала ("суммарного" или "моно" канала), L является мощностью левого канала, и R является мощностью правого канала. Хотя кодирование с канальным расширением может использоваться для всех диапазонов частот, это не требуется. Например, для нижних частот кодер может закодировать оба канала канального преобразования (например, c использованием суммы и разности), в то время как для верхних частот кодер может закодировать канал суммы и множество параметров.
Описанные варианты осуществления могут значительно уменьшить битрейт, требуемый для кодирования многоканального источника. Параметры для модификации каналов занимают небольшую долю общего битрейта, оставляя большую долю битрейта для кодирования комбинированных каналов. Например, для двухканального источника, если кодирование параметров занимает 10% доступного битрейта, то 90% битов могут быть использованы для кодирования комбинированного канала. Во многих случаях это существенная экономия по кодированию обоих каналов, даже после учета межканальных зависимостей.
Каналы могут быть восстановлены при отношении восстановленный канал/закодированный канал, отличном от отношения 2:1, описанного выше. Например, декодер может восстанавливать левый и правый каналы и центральный канал из единого закодированного канала. Другие конфигурации также возможны. Кроме того, параметры могут определяться различными способами. Например, параметры могут определяться на некоторой основе, отличной от подполосной основы.
A. Комплексные преобразования и масштабные параметры/параметры формы
В описанных вариантах осуществления кодер формирует комбинированный канал и обеспечивает параметры в декодер для восстановления каналов, которые были использованы для формирования комбинированного канала. Декодер получает комплексные коэффициенты (при этом каждый имеет действительную составляющую и мнимую составляющую) для комбинированного канала с использованием прямого комплексного преобразования. Далее для восстановления физических каналов из комбинированного канала декодер масштабирует комплексные коэффициенты с использованием параметров, обеспеченных кодером. Например, декодер получает масштабные множители из параметров, обеспеченных кодером, и использует их для масштабирования комплексных коэффициентов. Комбинированный канал часто является каналом суммы (иногда называемым моно каналом), но также и может быть другая комбинация физических каналов. Комбинированный канал может быть каналом разности (например, разностью между левым и правым каналами) в случаях, когда физические каналы сдвинуты по фазе, и при суммировании каналы бы взаимно уничтожились.
Например, кодер отправляет канал суммы вместо левого и правого физических каналов и множество параметров в декодер, которые могут включать в себя один или несколько комплексных параметров. (Комплексные параметры получаются некоторым способом из одного или нескольких комплексных чисел, хотя комплексный параметр, отправленный кодером (например, отношение, которое включает в себя мнимую часть комплексного числа и действительную часть комплексного числа), может сам не являться комплексным числом.) Кодер также может отправлять только действительные параметры, из которых декодер может получать комплексные масштабные множители для масштабирования спектральных коэффициентов. (Кодер, как правило, не использует комплексное преобразование для кодирования самого комбинированного канала. Вместо этого кодер может использовать любой из нескольких способов кодирования для кодирования комбинированного канала).
На фиг.9 представлен упрощенный способ 900 кодирования с канальным расширением, выполняемый кодером. На этапе 910 кодер формирует один или несколько комбинированных каналов (например, каналы суммы). Далее, на этапе 920 кодер получает один или несколько параметров, которые должны быть отправлены вместе с комбинированным каналом в декодер. На фиг.10 представлен упрощенный способ 1000 декодирования с обращенным канальным расширением, выполняемый декодером. На этапе 1010 декодер принимает один или несколько параметров для одного или нескольких комбинированных каналов. Далее, на этапе 1020 декодер с использованием параметров масштабирует коэффициенты комбинированного канала. Например, декодер получает комплексные масштабные множители из параметров и использует эти масштабные множители для масштабирования коэффициентов.
После преобразования время-частота в кодере, спектр каждого канала обычно разделяется на подполосы. В описанных вариантах осуществления кодер может определять различные параметры для различных подполос частот, и декодер может масштабировать коэффициенты в полосе комбинированного канала для соответствующей полосы в восстановленном канале с использованием одного или нескольких параметров, обеспеченных кодером. В конфигурации кодирования, где левый и правый каналы должны быть восстановлены из одного закодированного канала, каждый коэффициент в подполосе для каждого из левого и правого каналов представляется масштабированной версией подполосы в закодированном канале.
Например, на фиг.11 представлено масштабирование коэффициентов в полосе 1110 комбинированного канала 1120 во время восстановления канала. Декодер использует один или несколько параметров, обеспеченных кодером, для получения масштабированных коэффициентов в соответствующих подполосах для левого канала 1230 и правого канала 1240, восстанавливаемых декодером.
В одной реализации у каждой подполосы в каждом из левого и правого каналов есть масштабный параметр и параметр формы. Параметр формы может быть определен кодером и отправлен в декодер, или о параметре формы может быть сделано предположение посредством взятия спектральных коэффициентов в одном месте с теми, которые кодируются. Кодер представляет все частоты в одном канале с использованием масштабированной версии спектра из одного или нескольких закодированных каналов. Комплексное преобразование (содержащее действительную часть комплексного числа и мнимую часть комплексного числа) используют так, чтобы можно было поддерживать межканальные статистики второго порядка каналов для каждой подполосы. Поскольку закодированные каналы являются линейным преобразованием фактических каналов, то нет необходимости отправлять параметры для всех каналов. Например, если P каналов закодированы с использованием N каналов (где N<P), то нет необходимости отправлять параметры для всех P каналов. Подробная информация по масштабным параметрам и параметрам формы предоставлена ниже в разделе V.
Параметры могут изменяться со временем, так как изменяются отношения мощностей между физическими каналами и комбинированным каналом. Соответственно, параметры для полос частот в кадре могут быть определены на покадровой основе или некоторой другой основе. В описанных вариантах осуществления параметры для текущей полосы в текущем кадре кодируются в дифференциальной форме на основе параметров из других частотных диапазонов и/или других кадров.
Декодер выполняет прямое комплексное преобразование для получения комплексных спектральных коэффициентов комбинированного канала. Далее он использует параметры, отправленные в битовом потоке (например, отношения мощностей и отношение мнимой части к действительной части для кросс-корреляции или нормированную корреляционную матрицу) для масштабирования спектральных коэффициентов. Выходные данные комплексного масштабирования отправляют в фильтр постобработки. Выходные данные этого фильтра масштабируют и суммируют для восстановления физических каналов.
Нет необходимости выполнять кодирование с канальным расширением для всех полос частот или для всех временных блоков. Например, кодирование с канальным расширением можно адаптивно включать или выключать на подполосной основе, на поблочной основе или на некоторой другой основе. Соответственно, кодер может выбирать выполнение этой обработки, когда это целесообразно или полезно так делать в других отношениях. Оставшиеся полосы или блоки могут быть обработаны посредством общепринятой декорреляцией канала, без декорреляции или с использованием других способов.
Достижимые комплексные масштабные множители в описанных вариантах осуществления ограничены значениями в пределах определенных границ. Например, в описанных вариантах осуществления параметры кодируются в логарифмической области, и значения ограничены величиной возможной кросс-корреляции между каналами.
Каналы, которые могут быть восстановлены из комбинированного канала с использованием комплексных преобразований, не ограничены парами левых и правых каналов, также комбинированные каналы не ограничены комбинациями левого и правого каналов. Например, комбинированные каналы могут представлять два, три или большее количество физических каналов. Каналы, восстановленные из комбинированных каналов, могут быть группами, например, задний-левый/задний-правый, задний-левый/левый, задний-правый/правый, левый/центральный, правый/центральный и левый/центральный/правый. Другие группы также возможны. Восстановленные каналы могут все быть восстановлены с использованием комплексных преобразований, или с использованием комплексных преобразований могут быть восстановлены некоторые каналы, в то время как для других они не используются.
B. Интерполяция параметров
Кодер может выбирать опорные точки для определения в них точных параметров и интерполировать параметры между этими опорными точками. Интервал времени между опорными точками и количество опорных точек могут быть фиксированными или меняться в зависимости от контента и/или решений со стороны кодера. Когда опорная точка выбрана в точке времени t, кодер может использовать эту опорную точку для всех частотных диапазонов в спектре. В качестве альтернативы, кодер для разных частотных диапазонов может выбирать опорные точки в разных точках времени.
Фиг.12 является графическим сравнением фактических отношений мощностей и отношений мощностей, интерполированных исходя из отношений мощностей в опорных точках. В примере, представленном на фиг.12, посредством интерполяции сглаживают вариации в отношениях мощностей (например, между опорными точками 1200 и 1202, 1202 и 1204, 1204 и 1206 и 1206 и 1208), что может помочь избежать искажений из-за часто меняющихся отношений мощностей. Кодер может включать или выключать интерполяцию, или не интерполировать параметры вообще. Например, кодер может выбирать интерполяцию параметров, когда отношения мощностей постепенно изменяются со временем, или выключать интерполяцию, когда параметры не очень изменяются от кадра к кадру (например, между опорными точками 1208 и 1210 на фиг.12), или когда параметры изменяются настолько быстро, что интерполяция обеспечила бы неточное представление параметров.
C. Подробное пояснение
Общее линейное канальное преобразование может быть записано как Y=AX, где X - набор из L векторов коэффициентов из P каналов (матрица размерности P×L), A - матрица P×P канального преобразования, и Y - набор из L преобразованных векторов из P каналов, которые должны быть закодированы (матрица размерности P×L). L (размерность вектора) является размером полосы для заданного подкадра, который обрабатывают посредством алгоритма линейного канального преобразования. Если кодер кодирует подмножество N из P каналов в Y, то это может быть выражено как Z=BX, где вектор Z является матрицей N×L, и B является матрицей N×P, сформированной из N строк матрицы Y, соответствующих N каналам, которые должны быть закодированы. Восстановление из N каналов включает в себя еще одно матричное умножение с матрицей C после кодирования вектора Z для получения W=CQ (Z), где Q представляет квантование вектора Z. После подстановки Z получаем уравнение W=CQ(BX). При предположении о незначительности шума квантования, W=CBX. C может быть выбрана соответствующим образом так, чтобы поддерживать межканальные статистики второго порядка между вектором X и W. Это может быть представлено в форме уравнения как WW*=CBXX* B* C*=XX*, где XX* является симметрической матрицей P×P.
Так как XX* является симметрической матрицей P×P, то у нее существует P(P+1)/2 степеней свободы. Если N>=(P+1)/2, то можно найти такую матрицу C P×N, что уравнение будет выполнено. Если N<(P+1)/2, то для его решения необходима дополнительная информация. Если это имеет место, то можно использовать комплексные преобразования для нахождения других решений, которые удовлетворяют некоторым ограничениям.
*
Например, если X является комплексным вектором и C является комплексной матрицей, то можно попытаться найти такую C, что Re(CBXX*B*C*)=Re(XX*). Согласно этому уравнению, для соответствующей комплексной матрицы C действительная часть симметрической матрицы XX* равна действительной части симметрического произведения матриц CBXX* B* C.
0
1
0
1
0
1
0
1
0
1
0
1
0
0
1
1
Пример 1: Для случая, когда М=2 и N=1, BXX* B* является просто действительной скалярной матрицей (L×1), называемой a. Будем решать уравнения, представленные на фиг.13. Если B=B=β (которая является некоторой константой), то ограничение на фиг.14 выполнено. Решая, мы получим значения, представленные на фиг.15, для |C|, |C| и |C||C|cos(φ-φ). Кодер отправляет |C| и |C|. Далее можно получить решения с использованием ограничения, представленного на фиг.16. Из фиг.15 должно быть ясно, что эти величины являются, по существу, отношениями мощностей L/M и R/M. Знак в ограничении, представленном на фиг.16, может быть использован для контроля знака фазы так, чтобы он соответствовал мнимой части XX*. Это обеспечивает возможность вычислять φ-φ, но не фактические значения. Для вычисления точных значений, делается еще одно предположение о том, что угол моно канала для каждого коэффициента остается неизменным, как представлено в выражении на фиг.17. Для поддержания этого достаточно, чтобы |C|sinφ + |C|sinφ=0, в результате чего получаем φ0 и φ1, представленные на фиг.18.
0
0
1
1
0
0
1
1
С использованием ограничения, представленного на фиг.16, можно вычислять действительную и мнимую части этих двух масштабных множителей. Например, действительная часть этих двух масштабных множителей может быть найдена посредством вычисления |C|cosφ и |C|cosφ соответственно, как показано на фиг.19. Мнимая часть этих двух масштабных множителей может быть найдена посредством вычисления |C|sinφ и |C|sinφ соответственно, как показано на фиг.20.
Соответственно, после того, как кодер отправит значения комплексных масштабных множителей, декодер может восстановить два отдельных канала, которые поддерживают межканальные характеристики второго порядка исходных, физических каналов, и эти два восстановленных канала поддерживают надлежащую фазу закодированного канала.
Пример 2: В Примере 1, хотя вычисляется мнимая часть межканальных статистик второго порядка (как показано на фиг.20), в декодере поддерживается только действительная часть, единственная, восстанавливаемая из единого моно источника. Однако, также может поддерживаться мнимая часть межканальных статистик второго порядка, если (в дополнение к комплексному масштабированию) для выходных данных предыдущего этапа, описанных в примере 1, будет выполнена постобработка для достижения дополнительного пространственного эффекта. Выходные данные пропускают через линейный фильтр, масштабируют и снова суммируют с выходными данными предыдущего этапа.
0
1
0F
1F,
0F
0
0F
1F
1
OF
Предположим, что в дополнение к текущему сигналу из предыдущего анализа (W и W для этих двух каналов соответственно), у декодера есть сигнал эффекта - обработанная версия обоих доступных каналов (W и W соответственно), как показано на фиг.21. Тогда общее преобразование может быть представлено, как показано на фиг.23, которое предполагает, что W = CZ и W= CZ. Покажем, что посредством следующей процедуры восстановления, представленной на фиг.22, декодер может поддерживать статистики второго порядка исходного сигнала. Декодер берет линейную комбинацию исходной и отфильтрованной версий W для создания сигнала S, который поддерживает статистики второго порядка X.
0
1
В Примере 1 было определено, что можно выбрать комплексные константы C и C так, чтобы они соответствовали действительной части межканальных статистик второго порядка, посредством отправки двух параметров (например, отношений мощностей левый-к-моно (L/M) и правый-к-моно (R/M)). Если кодер отправляет еще один параметр, то могут поддерживаться все межканальные статистики второго порядка многоканального источника.
XX
Например, кодер может отправлять дополнительный, комплексный параметр, который представляет отношение мнимого-к-действительному кросс-корреляции между этими двумя каналами для поддержания всех межканальных статистик второго порядка источника с двумя каналами. Предположим, что корреляционная матрица задана посредством R, как определено на фиг.24, где U является ортонормированной матрицей комплексных собственных векторов, и Λ является диагональной матрицей собственных значений. Отметим, что это разложение должно существовать для любой симметрической матрицы. Для любой достижимой корреляционной матрицы мощности собственные значения также должны быть действительными. Это разложение обеспечивает возможность найти комплексное преобразование Карунена-Лева ("KLT"). KLT использовалось для создания де-коррелированых источников для сжатия. Здесь требуется выполнить обратную операцию, которая заключается в том, чтобы взять некоррелированые источники и создавать требуемую корреляцию. KLT вектора X задается посредством U*, так как U*UΛU*U = Λ, диагональная матрица. Мощностью в Z является α. Следовательно, если мы выберем преобразование такое, как
0F
1F
0
1
0
1
и предположим, что W и W имеют одинаковую мощность с W и W соответственно и не коррелированы с ними, то посредством процедуры восстановления на фиг.23 или фиг.22 генерируем требуемую корреляционную матрицу для конечных выходных данных. Практически, кодер отправляет отношения мощностей |C| и |C| и отношение мнимого-к-действительному Декодер может восстановить нормированную версию матрицы кросс-корреляции (как показано на фиг.25). Декодер может далее вычислить θ и найти собственные значения и собственные векторы, и прийти к заданному преобразованию.
0
1
Из-за взаимоотношения между |C| и |C|, их значения не могут быть независимыми. Следовательно, кодер квантует их совместно или условно. Это относится к обоим примерам 1 и 2.
Возможны также другие параметризации, например, посредством отправки из кодера в декодер непосредственно нормированной версии матрицы мощности, где нормировка может быть выполнена посредством геометрического среднего мощностей, как показано на фиг.26. Теперь кодер может отправлять только первую строку матрицы, что является достаточным, так как произведение диагоналей равно 1. Однако теперь декодер масштабирует собственные значения, как показано на фиг.27.
Для непосредственного представления U и Λ возможна другая параметризация. Можно показать, что U может быть разложена в последовательность поворотов Гивенса. Каждый поворот Гивенса может быть представлен углом. Кодер передает углы поворотов Гивенса и собственные значения.
Кроме того, обе параметризации могут включать в себя любой дополнительный произвольный предповорот V и, тем не менее, генерировать идентичную корреляционную матрицу, так как VV*=I, где I является единичной матрицей. Соответственно, отношения, представленные на фиг.28, будут выполняться для любого произвольного поворота V. Например, декодер выбирает предповорот так, что величина фильтрованного сигнала, входящего в каждый канал, является идентичной, как представлено на фиг.29. Декодер может выбрать ω так, что отношения на фиг.30 выполняются.
0
1
0F
1F
0
1
После того как матрица, представленная на фиг.31, известна, декодер может выполнить восстановление, как описано выше, для получения каналов W и W. Далее декодер получает W и W (сигналы эффекта) с применением линейного фильтра к W и W. Например, декодер использует фазовый фильтр и может взять выходные данные в любом из отводов фильтра для получения сигналов эффекта. (Для получения дополнительной информации по использованию фазовых фильтров см. M. R. Schroeder and B. F. Logan, "Colorless' Artificial Reverberation," 12th Ann. Meeting of the Audio Eng'g Soc, 18 pp. (1960)). Уровень сигнала, который добавляют как постобработку, задан в матрице, представленной на фиг.31.
Фазовый фильтр может быть представлен как каскад других фазовых фильтров. В зависимости от величины реверберации, которая требуется для точного моделирования источника, могут быть взяты выходные данные из любого из фазовых фильтров. Этот параметр также может быть отправлен на основе источника, подкадра или полосы. Например, могут быть взяты выходные данные первого, второго или третьего этапа в каскаде фазовых фильтров.
Посредством взятия выходных данных из фильтра, масштабирования их и добавления их обратно к восстановленному оригиналу, декодер может поддерживать межканальные статистики второго порядка. Хотя при анализе делаются определенные предположения относительно мощности и структуры корреляции в сигнале эффекта, такие предположения не всегда вполне выполняются на практике. Для улучшения этих предположений можно использовать дополнительную обработку и лучшую аппроксимацию. Например, если у фильтрованных сигналов мощность больше требуемой, то фильтрованный сигнал может быть масштабирован, как показано на фиг.32, так, чтобы его мощность была правильной. Это обеспечивает поддержание правильной мощности, если мощность слишком большая. На фиг.33 представлено вычисление для определения того, превышает ли мощность порог.
Иногда могут быть случаи, когда сигнал в двух объединяемых физических каналах сдвинут по фазе, и, соответственно, если используется суммирующее кодирование, то матрица будет сингулярной. В таких случаях может быть ограничена максимальная норма матрицы. Этот параметр (порог), ограничивающий максимальное масштабирование матрицы, также можно отправлять в битовом потоке на основе источника, полосы или подкадра.
0
1
Как и в примере 1, при анализе в этом примере предполагается, что B=B=β. Однако для получения сходных результатов для любого преобразования можно использовать идентичные принципы алгебры.
V. Кодирование с канальным расширением с другими кодирующими преобразованиями
Способы кодирования с канальным расширением и инструментальные средства, описанные в разделе IV выше, могут использоваться в комбинации с другими способами и инструментальными средствами. Например, кодер может использовать преобразования основного кодирования, преобразования кодирования с частотным расширением (например, преобразования кодирования по перцепционному сходству с расширением полосы) и преобразования кодирования с канальным расширением. (Кодирование с частотным расширением описано в разделе V.A., ниже). В кодере эти преобразования могут быть выполнены в модуле основного кодирования, модуле кодирования с частотным расширением, отдельном от модуля основного кодирования, и модуле кодирования с канальным расширением, отдельном от модуля основного кодирования и модуля кодирования с частотным расширением. Либо, другие преобразования могут быть выполнены в разнообразных комбинациях внутри идентичного модуля.
A. Краткий обзор кодирования с частотным расширением
Этот раздел является кратким обзором способов кодирования с частотным расширением и инструментальных средств, используемых в некоторых кодерах и декодерах для кодирования спектральных данных верхних частот как функции данных основной полосы частот в спектре (иногда называемого частотное кодирование по перцепционному сходству с расширением полосы или кодирование по перцепционному сходству в широком смысле).
Кодирование спектральных коэффициентов для передачи в выходном битовом потоке в декодер может расходовать относительно большую долю доступного битрейта. Следовательно, на низких битрейтах кодер может выбрать кодирование сокращенного количества коэффициентов посредством кодирования основной полосы частот в пределах ширины полосы пропускания спектральных коэффициентов и представления коэффициентов вне основной полосы частот как масштабированных и имеющих форму версий коэффициентов основной полосы частот.
На фиг.34 изображен обобщенный модуль 3400, который может быть использован в кодере. Изображаемый модуль 3400 принимает набор спектральных коэффициентов 3415. Следовательно, на низких битрейтах кодер может выбрать кодирование сокращенного количества коэффициентов: основной полосы частот в пределах ширины полосы пропускания спектральных коэффициентов 3415, как правило, в нижнем конце спектра. Спектральные коэффициенты вне основной полосы частот называются спектральными коэффициентами "расширенной полосы". Разделение на основную полосу частот и расширенную полосу частот выполняют в секции 3420 разделения на основную полосу/расширенную полосу. В этой секции также может быть выполнено разделение на подполосы (например, для подполос расширенной полосы частот).
Чтобы избежать искажений (например, приглушенный звук или звук, пропущенный через фильтр нижних частот) в восстановленном звуке, спектральные коэффициенты расширенной полосы частот представлены как имеющий форму шум, имеющие форму версии других частотных составляющих или комбинация обоих. Спектральные коэффициенты расширенной полосы частот могут быть разделены на несколько подполос (например, из 64 или 128 коэффициентов), которые могут быть неперекрывающимися или перекрывающимися. Даже при том, что фактический спектр может несколько отличаться, это кодирование с расширенной полосой обеспечивает эффект восприятия, сходный с оригинальным.
Секция 3420 разделения на основную полосу и расширенную полосу выводит спектральные коэффициенты 3425 основной полосы частот, спектральные коэффициенты расширенной полосы частот и дополнительную информацию (которая может быть сжата), описывающую, например, ширину основной полосы частот и отдельные размеры и количество подполос расширенной полосы частот.
В примере, представленном на фиг.34, кодер кодирует коэффициенты и дополнительную информацию (3435) в модуле 3430 кодирования. Кодер может включать в себя отдельные энтропийные кодеры для спектральных коэффициентов основной полосы частот и расширенной полосы (частот) и/или использовать различные способы энтропийного кодирования для кодирования различных категорий коэффициентов. Соответствующий декодер, как правило, будет использовать комплементарные способы декодирования. (Для представления другого возможного осуществления, на фиг.36 представлены отдельные модули декодирования для коэффициентов основной полосы частот и расширенной полосы частот).
Кодер расширенной полосы может кодировать подполосу с использованием двух параметров. Один параметр (называемый масштабным параметром) используется для представления общей мощности в полосе. Другой параметр (называемый параметром формы) используется для представления формы спектра в пределах полосы.
На Фиг.35 представлен иллюстративный способ 3500 для кодирования каждой подполосы расширенной полосы частот в кодере расширенной полосы. Кодер расширенной полосы вычисляет масштабный параметр на этапе 3510 и параметр формы на этапе 3520. Каждая подполоса, закодированная кодером расширенной полосы, может быть представлена как произведение масштабного параметра и параметра формы.
Например, масштабный параметр может быть среднеквадратичным значением коэффициентов в пределах текущей подполосы. Его находят посредством извлечения квадратного корня из среднего значения квадратов всех коэффициентов. Среднее значение квадратов находят посредством суммирования квадратов всех коэффициентов в подполосе и деления на количество коэффициентов.
Параметр формы может быть вектором смещения, который определяет нормированную версию доли спектра, которая уже была закодирована (например, доля спектральных коэффициентов основной полосы частот, закодированных посредством кодера основной полосы частот), нормированным вектором белого шума или вектором для спектральной формы из фиксированной кодовой книги. Вектор смещения, который определяет другую долю спектра, полезен в звуке, так как, как правило, существуют гармонические компоненты в тональных сигналах, которые повторяются по всему спектру. Использование кодовой книги шума или некоторой другой фиксированной кодовой книги может способствовать кодированию с низким битрейтом компонентов, которые плохо представлены в закодированной в основной полосе частот доле спектра.
Некоторые кодеры обеспечивают возможность модификации векторов для лучшего представления спектральных данных. Некоторые возможные модификации включают в себя линейное или нелинейное преобразование вектора, или представление вектора как комбинации двух или нескольких других исходных или модифицированных векторов. В случае комбинации векторов модификация может включать в себя взятие одной или нескольких частей одного вектора и объединение ее с одной или несколькими частями других векторов. При использовании модификации вектора, отправляют биты для сообщения декодеру о том, как сформировать новый вектор. Несмотря на дополнительные биты, при модификации для представления спектральных данных расходуется меньше битов, чем при кодировании фактической формы сигнала.
Кодеру расширенной полосы нет необходимости кодировать отдельный масштабный множитель на каждую подполосу расширенной полосы частот. Вместо этого кодер расширенной полосы может представлять масштабный параметр для подполос как функцию частоты, например посредством кодирования набора коэффициентов полиномиальной функции, что приводит к представлению масштабных параметров расширенных подполос как функции их частоты. Кроме того, кодер расширенной полосы может закодировать дополнительные значения, характеризующие форму для расширенной полосы. Например, кодер расширенной полосы может закодировать значения, определяющие смещение или расширение части основной полосы частот, указываемые вектором движения. В таком случае параметр формы кодируют как набор значений (например, определяющих положение, смещение и/или расширение) для лучшего представления формы расширенной подполосы относительно вектора из закодированной основной полосы частот, фиксированной кодовой книги или вектора белого шума.
Параметры масштаба и формы, которые кодируют каждую подполосу расширенной подполосы частот оба могут быть векторами. Например, расширенные подполосы могут быть представлены как векторное произведение scale(f)•shape(f) во временной области фильтра с частотной характеристикой scale(f) и возбуждения с частотной характеристикой shape(f). Это кодирование может быть в виде фильтра кодирования с линейным предсказанием (LPC) и возбуждения. Фильтр LPC является представлением низшего порядка масштаба и формы расширенной подполосы, и возбуждение представляет характеристики шума и/или основного тона расширенной подполосы. Возбуждение можно получать из анализа закодированной на основной полосе частот части спектра и идентификации части закодированного на основной полосе частот спектра, спектра фиксированной кодовой книги или белого шума, которая соответствует закодированному возбуждению. Посредством этого расширенная подполоса представляется как часть закодированного по основной подполосе частот спектра, но сопоставление выполняется во временной области.
И опять, согласно фиг.35, на этапе 3530 кодер расширенной полосы ищет спектральные коэффициенты основной полосы частот для подобной полосы вне спектральных коэффициентов основной полосы частот, имеющие сходную форму с текущей подполосой расширенной полосы частот (например, с использованием сравнения по методу минимальной среднеквадратичной ошибки для нормированной версии каждой части основной полосы частот). На этапе 3532 кодер расширенной полосы проверяет, достаточно ли близки по форме эта сходная полоса вне спектральных коэффициентов основной полосы частот и текущая расширенная полоса частот (например, значение по методу минимальной среднеквадратичной ошибки ниже, чем предварительно выбранный порог). Если так, то на (этапе) 3534 кодер расширенной полосы определяет вектор, указывающий на эту сходную полосу частот спектральных коэффициентов основной полосы частот. Вектор может быть начальным положением коэффициентов в основной полосе частот. Также можно использовать другие способы (например, проверку тональности по сравнению с нетональностью) для того, чтобы увидеть, достаточно ли близка по форме сходная полоса частот спектральных коэффициентов основной полосы частот с текущей расширенной полосой частот.
Если никакая достаточно сходная часть основной полосы частот не найдена, то кодер расширенной полосы обращается к фиксированной кодовой книге (3540) спектральных форм, чтобы представить текущую подполосу. Если же она найдена (3542), то кодер расширенной полосы использует ее индекс в кодовой книге как параметр формы на этапе 3544. Иначе, на этапе 3550 кодер расширенной полосы представляет форму текущей подполосы как нормированный вектор белого шума.
В качестве альтернативы, кодер расширенной полосы может принять решение касаемо того, как спектральные коэффициенты могут быть представлены посредством некоторого другого процесса принятия решения.
Кодер расширенной полосы может сжимать масштабные параметры и параметры формы (например, с использованием кодирования с предсказанием, квантования и/или энтропийного кодирования). Например, масштабный параметр может быть закодирован с предсказанием на основе предыдущей расширенной подполосы. Для многоканального звука, параметры масштабирования для подполосы могут быть предсказаны, исходя из предыдущей подполосы в канале. Масштабные параметры также могут быть предсказаны по всем каналам, исходя из нескольких других подполос, исходя из спектра основной полосы частот или исходя из предыдущих входных звуковых блоков, наряду с другими вариациями. Выбор предсказания может быть сделан в зависимости от того, на какой предыдущей подполосе частот (например, в пределах идентичной расширенной полосы частот, канала или сегмента (входного блока)) обеспечены более высокие корреляции. Кодер расширенной полосы может квантовать масштабные параметры с использованием равномерного или неравномерного квантования, и результирующее квантованное значение может быть закодировано энтропийным кодированием. Кодер расширенной полосы частот также может использовать кодирование с предсказанием (например, исходя из предыдущей подполосы), квантование и энтропийное кодирование для параметров формы.
Если размеры подполосы являются переменными для заданной реализации, то это обеспечивает возможность задавать размер подполос для повышения эффективности кодирования. Часто, можно объединять подполосы со сходными характеристиками с очень небольшим влиянием на качество. Подполосы с крайне изменчивыми данными могут быть лучше представлены, если разделить подполосу. Однако меньшие подполосы требуют большее количество подполос (и, как правило, большее количество битов) для представления идентичных спектральных данных, чем большие подполосы. Для принятия сбалансированного решения, кодер может выбирать подполосы на основе измерений качества и информации о битрейте.
Декодер демультиплексирует битовый поток с разделением на основную полосу частот и расширенную полосу частот и декодирует эти полосы (например, в декодере основной полосы и декодере расширенной полосы) с использованием соответствующих способов декодирования. Декодер также может выполнять дополнительные функции.
На фиг.36 представлены аспекты аудиодекодера 3600 для декодирования битового потока, cгенерированного кодером, который использует кодирование с частотным расширением и отдельные модули кодирования для данных основной полосы частот и данных расширенной полосы частот. На фиг.36, данные основной полосы частот и данные расширенной полосы частот в закодированном битовом потоке 3605 декодируются в декодере 3640 основной полосы и декодере 3650 расширенной полосы, соответственно. Декодер 3640 основной полосы декодирует спектральные коэффициенты основной полосы с использованием общепринятого декодирования кодека основной полосы. Декодер FF 50 расширенной полосы декодирует данные расширенной полосы, в том числе посредством копирования по частям спектральных коэффициентов основной полосы частот, на которые указывает вектор движения параметра формы, и масштабированием посредством масштабного коэффициента масштабного параметра. Спектральные коэффициенты основной полосы частот и расширенной полосы частот объединяют в единый спектр, который преобразуют посредством обратного преобразования 3680 для восстановления звукового сигнала.
В разделе IV описаны способы представления всех частот в незакодированном канале с использованием масштабированной версии спектра из одного или нескольких закодированных каналов. Кодирование с частотным расширением отличается тем, что коэффициенты расширенной полосы представляются с использованием масштабированных версий коэффициентов основной полосы. Однако эти способы можно использовать вместе, например, посредством выполнения кодирования с частотным расширением в комбинированном канале и другими способами, как описано ниже.
B. Примеры кодирования с канальным расширением с другими кодирующими преобразованиями
Фиг.37 является схемой, представляющей аспекты иллюстративного кодера 3700, который использует основное преобразование 3710 время-частота (T/F), преобразование 3720 с частотным расширением T/F и преобразование 3730 с канальным расширением T/F для обработки звука 3705 многоканального источника. (Другие кодеры могут использовать различные комбинации или другие преобразования в дополнение к представленным).
Преобразование T/F может быть различным для каждого из этих трех преобразований.
Для основного преобразования, после многоканального преобразования 3712, кодирование 3715 содержит кодирование спектральных коэффициентов. Если также используется кодирование с канальным расширением, то нет необходимости кодировать, по меньшей мере, некоторые диапазоны частот, по меньшей мере, для некоторых из закодированных каналов многоканального преобразования. Если также используется кодирование с частотным расширением, то нет необходимости кодировать, по меньшей мере, некоторые диапазоны частот. Для преобразования с частотным расширением, кодирование 3715 содержит кодирование масштабных параметров и параметров формы для полос в подкадре. Если также используется кодирование с канальным расширением, то может не быть необходимости отправлять эти параметры для некоторых диапазонов частот для некоторых из каналов. Для преобразования с канальным расширением, кодирование 3715 содержит кодирование параметров (например, отношений мощностей и комплексного параметра) для поддержания точной межканальной корреляции для полос в подкадре. Для простоты, кодирование представлено как формируемое в едином модуле 3715 кодирования. Однако различные задачи кодирования могут выполняться в различных модулях кодирования.
Фиг.38, фиг.39 и фиг.40 являются схемами, представляющими аспекты декодеров 3800, 3900 и 4000, которые декодируют битовый поток, например, битовый поток 3795, генерируемый иллюстративным кодером 3700. В декодерах, 3800, 3900 и 4000, некоторые модули (например, энтропийного декодирования, обратного квантования/обратного взвешивания, дополнительной постобработки), которые присутствуют в некоторых декодерах, не изображены для простоты. Кроме того, в некоторых случаях представленные модули могут быть переупорядочены, объединены или разделены разными способами. Например, хотя представлены пути без разветвлений, пути обработки могут в принципе разветвляться на два или несколько путей обработки.
В декодере 3800 основные спектральные коэффициенты обрабатываются посредством обратного основного многоканального преобразования 3810, обратного основного преобразования 3820 T/F, прямого преобразования 3830 с частотным расширением T/F, обработки 3840 с частотным расширением, обратного преобразования 3850 с частотным расширением T/F, прямого преобразования 3860 с канальным расширением T/F, обработки 3870 с канальным расширением и обратного преобразования 3880 с канальным расширением T/F для генерации восстановленного звука 3895.
Однако, практически, этот декодер может быть неприемлемо сложным. Кроме того, преобразование с канальным расширением является комплексным, в то время как другие два не являются. Следовательно, другие декодеры могут быть настроены следующими способами: преобразование T/F для кодирования с частотным расширением может быть ограничено до (1) основного преобразования T/F или (2) действительной части преобразования с канальным расширением T/F.
Это обеспечивает возможность таких конфигураций как те, которые показаны на фиг.39 и фиг.40.
На фиг.39, декодер 3900 обрабатывает основные спектральные коэффициенты посредством обработки 3910 с частотным расширением, обратного многоканального преобразования 3920, обратного основного преобразования 3930 T/F, прямого преобразования 3940 с канальным расширением, обработки 3950 с канальным расширением и обратного преобразования 3960 с канальным расширением T/F для генерации восстановленного звука 3995.
На фиг.40 декодер 4000 обрабатывает основные спектральные коэффициенты посредством обратного многоканального преобразования 4010, обратного основного преобразования 4020 T/F, вещественной части прямого преобразования 4030 с канальным расширением, обработки 4040 с частотным расширением, извлечения мнимой части прямого преобразования 4050 с канальным расширением, обработки 4060 с канальным расширением и обратного преобразования 4070 с канальным расширением T/F для генерации восстановленного звука 4095.
Любая из этих конфигураций может быть использована, и декодер может динамически менять используемую конфигурацию. В одном осуществлении, преобразованием, используемым для основного кодирования и кодирования с частотным расширением, является MLT, которое является действительной частью MCLT (модулированное комплексное преобразование с перекрытием), и преобразованием, используемым для преобразования с канальным расширением является MCLT. Однако у этих двух преобразований различные размеры подкадра.
Каждый коэффициент MCLT в подкадре имеет базисную функцию, которая покрывает этот подкадр. Так как каждый подкадр перекрывается только с соседними двумя подкадрами, то для нахождения точных коэффициентов MCLT для заданного подкадра необходимы только коэффициенты MLT из текущего подкадра, предыдущего подкадра и следующего подкадра.
Преобразования могут использовать блоки преобразования идентичного размера, или блоки преобразования могут быть разных размеров для разных видов преобразований. Блоки преобразований разных размеров в преобразовании основного кодирования и преобразовании кодирования с частотным расширением могут быть требуемыми, например, когда преобразование кодирования с частотным расширением может улучшить качество посредством использования блоков меньшого окна времени. Однако с изменением размеров преобразования при основном кодировании, кодирование с частотным расширением и канальное кодирование привносят существенную сложность в кодер и в декодер. Соответственно, может потребоваться совместное использование размеров преобразования между, по меньшей мере, некоторыми из видов преобразования.
В качестве примера, если преобразование основного кодирования и преобразование кодирования с частотным расширением совместно используют идентичный размер блока преобразования, то преобразование кодирования с канальным расширением может иметь размер блока преобразования, независимый от размера блока преобразования кодирования с частотным расширением/основного кодирования. В этом примере декодер может содержать восстановление частоты, за которым следует преобразование, обратное основному кодированию. Далее, декодер выполняет прямое комплексное преобразование для получения спектральных коэффициентов для масштабирования закодированного, комбинированного канала. Комплексное преобразование канального кодирования использует свой собственный размер блока преобразования, независимый от других двух преобразований. Декодер восстанавливает физические каналы в частотной области из закодированного, комбинированного канала (например, канала суммы) с использованием полученных спектральных коэффициентов, и выполняет обратное комплексное преобразование для получения сэмплов временной области из восстановленных физических каналов.
В качестве другого примера, если преобразование основного кодирования и преобразование кодирования с частотным расширением имеют различные размеры блоков преобразования, то преобразование кодирования канала может иметь размер блока преобразования, идентичный размеру блока преобразования кодирования с частотным расширением. В этом примере декодер может содержать преобразование, обратное основному кодированию, за которым следует восстановление частоты. Декодер выполняет обратное канальное преобразование с использованием размера блока преобразования, идентичного тому, который использовался для восстановления частоты. Далее, декодер выполняет прямое преобразование комплексной компоненты для получения спектральных коэффициентов.
В прямом преобразовании декодер может вычислять мнимую часть коэффициентов MCLT коэффициентов преобразования с канальным расширением, исходя из действительной части. Например, декодер может вычислять мнимую часть в текущем блоке, по действительным частям из некоторых полос (например, трех полос или больше) из предыдущего блока, некоторых полос (например, двух полос) из текущего блока и некоторых полос (например, трех полос или больше) из следующего блока.
Отображение действительной части в мнимую часть включает в себя взятие скалярного произведения между базисом обратного модулированного DCT с базисным вектором прямого модулированного дискретного синусного преобразования (DST). Вычисление мнимой части для заданного подкадра включает в себя нахождение всех коэффициентов DST в подкадре. Для базисных векторов DCT из предыдущего подкадра, текущего подкадра и следующего подкадра это не может быть 0. Кроме того, только базисные вектора DCT частоты, примерно сходной с коэффициентом DST, который мы пытаемся найти, обладают значительной мощностью. Если размеры подкадра для предыдущего, текущего и следующего подкадра все являются одинаковыми, то мощность значительно понижается для частот, отличных от той, для которой мы пытаемся найти коэффициент DST. Следовательно, с учетом коэффициентов DCT для нахождения коэффициентов DST для заданного подкадра может быть найдено решение с невысоким уровнем сложности.
*
А именно, мы можем вычислить Xs = A*Xc(-1) + BXc(0) + C*Xc(1), где Xc(-1), Xc(O) и Xc(1) обозначают коэффициенты DCT из предыдущего, текущего и следующего блока и Xs представляют коэффициенты DST текущего блока:
1) Предварительно вычислить матрицу A, B и C для размера/формы различных окон,
2) Сравнить с порогом матрицу A, B и C так, чтобы значения, значительно меньшие, чем пиковые значения, были заменены 0, сводя их к разреженным матрицам,
3) Выполнить умножение матриц с использованием только ненулевых элементов матриц. В приложениях, где необходим набор комплексных фильтров, это является быстрым способом получения мнимой из действительной части, или наоборот, без непосредственного вычисления мнимой части.
Декодер восстанавливает физические каналы в частотной области из закодированного, комбинированного канала (например, канала суммы) с использованием полученных масштабных множителей, и выполняет обратное комплексное преобразование для получения сэмплов временной области из восстановленных физических каналов.
В результате этого подхода существенно сокращается сложность по сравнению с подходом решения "в лоб", который включает в себя обратное DCT и прямое DST.
C. Сокращение вычислительной сложности при частотном/канальном кодировании
Частотное/канальное кодирование может быть выполнено с преобразованиями основного кодирования, преобразованиями частотного кодирования и преобразованиями канального кодирования. Переключение между преобразованиями на поблочной или покадровой основе может улучшить качество восприятия, но это требует больших вычислительных затрат. В некоторых сценариях (например, устройства с низкой вычислительной мощностью обработки) такая высокая сложность может быть неприемлемой. Одно решение для сокращения сложности состоит в том, чтобы кодер всегда выбирал преобразования основного кодирования и для частотного и для канального кодирования. Однако, этот подход накладывает ограничения на качество даже для устройств воспроизведения без ограничений по вычислительной мощности. Другое решение состоит в том, чтобы кодер функционировал без ограничений на преобразования, и декодер отображал параметры частотного/канального кодирования в область преобразования основного кодирования, если требуется низкая сложность. Если выполнять отображение надлежащим образом, то при втором решении посредством обоснованной сложности можно достигнуть хорошего качества для устройств с высокой вычислительной мощностью и хорошего качества для устройств с низкой вычислительной мощностью. Отображение параметров в область основного преобразования из других областей может быть выполнено без дополнительной информации из битового потока или с дополнительной информацией, помещенной в битовый поток кодером для улучшения рабочих характеристик отображения.
D. Улучшение отслеживания энергии частотного кодирования при переходе между различными размерами окна
Как указано в разделе V.B, кодер частотного кодирования может использовать преобразования основного кодирования, преобразования частотного кодирования (например, преобразования кодирования по перцепционному сходству с расширенной полосой) и преобразования канального кодирования. Однако, когда частотное кодирование переключают между двумя различными преобразованиями, может потребоваться дополнительное внимание начальной точке частотного кодирования. Это потому, что сигнал в одном из преобразований, например, в основном преобразовании, обычно является сигналом с ограниченной полосой частот, причем полосы со свободным проходом определяются последним закодированным коэффициентом. Однако такая четкая граница, при отображении в другое преобразование, может стать нечеткой. В одном осуществлении посредством точного задания начальной точки частотный кодер удостоверяется в том, что мощность сигнала не теряется. А именно,
1) Для каждой полосы частотный кодер вычисляет мощность ранее (например, посредством основного кодирования) сжатого сигнала - E1.
2) Для каждой полосы частотный кодер вычисляет мощность исходного сигнала - E2.
3) Если (E2-E1)>T, где T - предопределенный порог, кодер частоты маркирует эту полосу как начальную точку.
4) Частотный кодер начинает работу в данной точке.
5) Частотный кодер передает начальную точку в декодер. Соответственно, частотный кодер при переключении между различными преобразованиями определяет разность мощностей и передает начальную точку соответственно.
VI. Параметры формы и масштабные параметры для кодирования с частотным расширением
A. Векторы смещения для кодеров, использующих модулированное кодирование DCT
Как упомянуто в разделе V выше, частотное кодирование по перцепционному сходству с расширением полосы включает в себя определение параметров формы и масштабных параметров для полос частот в пределах окон времени. Параметры формы определяют часть основной полосы частот (как правило, нижнюю полосу), которая будет выступать в роли основы для коэффициентов кодирования в расширенной полосе частот (как правило, более высокой полосе, чем основная полоса частот). Например, коэффициенты в определенной части основной полосы частот могут быть масштабированы и затем применены к расширенной полосе частот.
0
1
Как показано на фиг.41, для модуляции сигнала канала во время t может быть использован вектор смещения d. На фиг.41 изображены представления векторов смещения для двух звуковых блоков 4100 и 4110 во время t и t соответственно. Хотя в примере, представленном на фиг.41, подразумеваются концепции кодирования с частотным расширением, этот принцип может быть применен к другим схемам модуляции, которые не связаны с кодированием с частотным расширением.
0
0
0
1
1
1
В примере, представленном на фиг.41, звуковые блоки 4100 и 4110 содержат N подполос в пределах от 0 до N-1, причем подполосы в каждом блоке разделены на низкочастотную основную полосу и высокочастотную расширенную полосу. Для звукового блока 4100 изображенный вектор смещения d является смещением между подполосами m и n. Аналогично, для звукового блока 4110 изображенный вектор смещения d является смещением между подполосами m и n.
Так как имеется в виду, что вектор смещения точно описывает форму коэффициентов расширенной полосы, можно предположить, что потребуется обеспечить максимальную гибкость в векторе смещения. Однако ограничение значений векторов смещения в некоторых ситуациях приводит к улучшенному качеству восприятия. Например, кодер может выбрать подполосы m и n так, что каждый из них всегда будет четной или нечетной подполосой, при этом количество подполос, покрываемых вектором смещения d, всегда будет четным. В кодере, который использует модулированное дискретное косинусное преобразование (DCT), возможно лучшее восстановление, когда количество подполос, покрываемых вектором смещения d, четно.
При выполнении частотного кодирования по перцепционному сходству с расширенной полосой с использованием модулированных преобразований DCT, для генерации модулированной косинусоидальной волны для расширенной полосы частот модулируют косинусоидальную волну из основной полосы частот. Если количество подполос, покрываемых вектором смещения d является четным, то модуляция приводит к точному восстановлению. Однако, если количество подполос, покрываемых вектором смещения d, является нечетным, то модуляция приводит к искажению в восстановленном звуке. Соответственно, с ограничением векторов смещения для покрытия только четного количества подполос (и с жертвой некоторой гибкости d), можно достичь лучшего общего качества звука, избегая искажения в модулированном сигнале. Соответственно, в примере, представленном на фиг.41, каждый из векторов смещения в звуковых блоках 4100 и 4110 покрывает четное количество подполос.
B. Опорные точки для масштабных параметров
Когда в частотном кодировании окна меньше, чем в основном кодере, битрейт имеет тенденцию увеличиваться. Это потому что, несмотря на то, что окна меньше, тем не менее важно сохранять разрешение по частоте на довольно высоком уровне во избежание неприятных искажений.
На фиг.42 изображена упрощенная конфигурация звуковых блоков различных размеров. У окна времени 4210 большая продолжительность, чем у окон времени 4212-4222, но у каждого окна времени количество полос частот идентично.
Галочки на фиг.42 указывают на опорные точки для каждой полосы частот. Как изображено на фиг.42, количество опорных точек может меняться между полосами, как и могут меняться временные расстояния между опорными точками. (Для простоты, не все окна, полосы или опорные точки показаны на фиг.42). В этих опорных точках определены масштабные параметры. Масштабные параметры для идентичных полос в других окнах времени могут затем быть интерполированы из параметров в этих опорных точках.
В качестве альтернативы, опорные точки могут быть определены другими способами.
После описания и иллюстрации принципов этого изобретения согласно описанным вариантам осуществления, следует осознавать, что описанные варианты осуществления могут быть изменены в конфигурации и деталях, не отступая от этих принципов. Следует понимать, что программы, процессы или способы, описанные в этом документе, не связаны с каким-либо конкретным типом вычислительного окружения и не ограничены им, если не указано иное. Разнообразные типы универсальных или специализированных вычислительных окружений могут быть использованы со способами, описанными в этом документе, или выполнять операции в соответствии с ними. Элементы описанных вариантов осуществления, представленные в программном обеспечении, могут быть реализованы в аппаратных средствах и наоборот.
Ввиду многих возможных вариантов осуществления, к которым могут быть применены принципы этого изобретения, авторы заявляют своим изобретением все такие варианты осуществления, которые могут находиться в пределах объема и существа, определяемых следующей формулой изобретения и ее эквивалентами.