УСТРОЙСТВО И СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЛИ ДЕКОДИРОВАНИЯ МНОГОКАНАЛЬНОГО СИГНАЛА
APPARATUS AND METHOD FOR ENCODING OR DECODING MULTICHANNEL SIGNAL

Настоящее изобретение относится к кодированию/декодированию аудио и, в частности, к кодированию аудио с использованием межканальных зависимостей сигнала.
Кодирование аудио является областью сжатия, которая имеет дело с использованием избыточности и несоответствия в аудиосигналах. В MPEG USAC [ISO/IEC 23003-3:2012 - Information technology - MPEG audio technologies Part 3: Unified speech and audio coding], объединенное стерео кодирование двух каналов выполняется с использованием комплексного предсказания, MPS 2-1-2 или цельное стерео с ограниченными по полосе или полнодиапазонными остаточными сигналами. MPEG surround [ISO/IEC 23003-1:2007 - Information technology - MPEG audio technologies Part 1: MPEG Surround] иерархически объединяет блоки OTT и TTT для объединенного кодирования многоканального аудио с или без передачи остаточных сигналов. Элементы Четверки Каналов MPEG-H иерархически применяют блоки MPS 2-1-2 стерео с последующим комплексным предсказанием/блоки MS стерео, которые строят фиксированное 4×4 дерево повторного микширования. Стандарт AC4 [ETSI TS 103 190 V1.1.1 (2014-04) - Digital Audio Compression (AC-4) Standard] вводит новые элементы 3-, 4- и 5- каналов, которые обеспечивают повторное микширование передаваемых каналов через передаваемую матрицу микширования и последующую информацию кодирования объединенного стерео. Кроме того, предшествующие публикации предлагают использовать ортогональные преобразования, подобные Преобразованию Карунена-Лоэва (KLT) для улучшенного кодирования многоканального аудио [Yang, Dai и Ai, Hongmei и Kyriakakis, Chris и Kuo, C.-C. Jay, 2001: Adaptive Karhunen Loeve Transform for Enhanced Multichannel Audio Coding, http://ict.usc.edu/pubs/Adaptive%20Karhunen-Loeve%20Transform%20for%20Enhanced%20Multichannel%20Audio%20Coding.pdf].
В контексте 3D аудио, каналы громкоговорителя распространяются в нескольких слоях высоты, приводя к горизонтальным и вертикальным парам каналов. Объединенного кодирования только двух каналов, как определено в USAC, недостаточно, чтобы учитывать пространственные и воспринимаемые связи между каналами. MPEG Surround применяется на дополнительном этапе предварительной/постобработки, остаточные сигналы передаются индивидуально без возможности кодирования объединенного стерео, например, чтобы использовать зависимости между левым и правым вертикальными остаточными сигналами. В AC-4 вводятся предназначенные элементы N-каналов, которые обеспечивают эффективное кодирование параметров объединенного кодирования, но не для общих структур громкоговорителей с большим числом каналов, как предлагается для новых многонаправленных сценариев воспроизведения (7.1+4, 22.2). Элемент Четверки Каналов MPEG-H также ограничен только 4 каналами и не может быть динамически применен к произвольным каналам, а лишь к предварительно сконфигурированному и фиксированному количеству каналов.
Цель настоящего изобретения состоит в предоставлении улучшенной концепции кодирования/декодирования.
Данная цель достигается посредством устройства для кодирования многоканального сигнала с, по меньшей мере, тремя каналами по п. 1 формулы изобретения, устройства для декодирования закодированного многоканального сигнала с закодированными каналами и, по меньшей мере, первым и вторым многоканальными параметрами по п. 12 формулы изобретения, способа для кодирования многоканального сигнала с, по меньшей мере, тремя каналами по п. 21 формулы изобретения, способа для декодирования закодированного многоканального сигнала с закодированными каналами и, по меньшей мере, первыми и вторыми многоканальными параметрами по п. 22 формулы изобретения, или компьютерной программы по п. 23 формулы изобретения.
Варианты осуществления предоставляют устройство для кодирования многоканального сигнала с, по меньшей мере, тремя каналами. Устройство содержит итерационный процессор, канальный кодер и интерфейс вывода. Итерационный процессор выполнен с возможностью вычисления, на первом итеративном шаге, значений межканальной корреляции между каждой парой из, по меньшей мере, трех каналов, для выбора, на первом итеративном шаге, пары с наивысшим значением или со значением выше пороговой величины, и для обработки выбранной пары с использованием операции многоканальной обработки, чтобы извлекать первые многоканальные параметры для выбранной пары и чтобы извлекать первые обработанные каналы. Кроме того, итерационный процессор выполнен с возможностью выполнения вычисления, выбора и обработки на втором итеративном шаге с использованием, по меньшей мере, одного из обработанных каналов, чтобы извлекать вторые многоканальные параметры и вторые обработанные каналы. Канальный кодер выполнен с возможностью кодирования каналов, полученных в результате итерационной обработки, выполненной итерационным процессором, чтобы получать закодированные каналы. Интерфейс вывода выполнен с возможностью генерирования закодированного многоканального сигнала с закодированными каналами и первыми и вторыми многоканальными параметрами.
Кроме того варианты осуществления предоставляют устройство для декодирования закодированного многоканального сигнала, причем закодированного многоканального сигнала с закодированными каналами и, по меньшей мере, первыми и вторыми многоканальными параметрами. Устройство содержит канальный декодер и многоканальный процессор. Канальный декодер выполнен с возможностью декодирования закодированных каналов, чтобы получать декодированные каналы. Многоканальный процессор выполнен с возможностью выполнения многоканальной обработки с использованием второй пары из декодированных каналов, идентифицируемой вторыми многоканальными параметрами, и с использованием вторых многоканальных параметров, чтобы получать обработанные каналы и чтобы выполнять дальнейшую многоканальную обработку с использованием первой пары из каналов, идентифицируемой первыми многоканальными параметрами, и с использованием первых многоканальных параметров, при этом первая пара каналов содержит, по меньшей мере, один обработанный канал.
В противоположность обыкновенным концепциям многоканального кодирования, которые используют фиксированный путь сигнала (например, стерео дерево кодирования), варианты осуществления настоящего изобретения используют динамический путь сигнала, который адаптирован к характеристикам, по меньшей мере, трех входных каналов многоканального входного сигнала. Подробнее, итерационный процессор 102 может быть выполнен с возможностью построения пути сигнала (например, стерео дерева), на первом итеративном шаге, на основании значения межканальной корреляции между парой из, по меньшей мере, трех каналов с CH1 по CH3, для выбора, на первом итеративном шаге, пары с наивысшим значением или значением выше пороговой величины, и, на втором итеративном шаге, на основании значений межканальной корреляции между каждой парой из, по меньшей мере, трех каналов и соответствующими ранее обработанными каналами, для выбора, на втором итеративном шаге, пары с наивысшим значением или значением выше пороговой величины.
Кроме того, варианты осуществления предоставляют способ для кодирования многоканального сигнала с, по меньшей мере, тремя каналами. Способ содержит этапы, на которых:
- вычисляют, на первом итеративном шаге, значения межканальной корреляции между каждой парой из, по меньшей мере, трех каналов, выбирают, на первом итеративном шаге, пару с наивысшим значением или со значением выше пороговой величины, и обрабатывают выбранную пару с использованием операции многоканальной обработки, чтобы извлекать первые многоканальные параметры для выбранной пары и чтобы извлекать первые обработанные каналы;
- выполняют вычисление, выбор и обработку на втором итеративном шаге с использованием, по меньшей мере, одного из обработанных каналов, чтобы извлекать вторые многоканальные параметры и вторые обработанные каналы;
- кодируют каналы, полученные в результате итерационной обработки, выполненной итерационным процессором, чтобы получать закодированные каналы; и
- генерируют закодированный многоканальный сигнал с закодированными каналами и первыми и вторыми многоканальными параметрами.
Кроме того, варианты осуществления предоставляют способ для декодирования закодированного многоканального сигнала с закодированными каналами и, по меньшей мере, первыми и вторыми многоканальными параметрами. Способ содержит этапы, на которых:
- декодируют закодированные каналы, чтобы получать декодированные каналы; и
- выполняют многоканальную обработку с использованием второй пары из декодированных каналов, идентифицируемую вторыми многоканальными параметрами, и с использованием вторых многоканальных параметров, чтобы получать обработанные каналы, и выполняют дальнейшую многоканальную обработку с использованием первой пары из каналов, идентифицируемой первыми многоканальными параметрами, и с использованием первых многоканальных параметров, при этом первая пара из каналов содержит, по меньшей мере, один обработанный канал.
Варианты осуществления настоящего изобретения описываются в данном документе со ссылкой на прилагаемые чертежи.
Фиг. 1 показывает принципиальную структурную схему устройства для кодирования многоканального сигнала с, по меньшей мере, тремя каналами, в соответствии с вариантом осуществления;
Фиг. 2 показывает принципиальную структурную схему устройства для кодирования многоканального сигнала с, по меньшей мере, тремя каналами, в соответствии с вариантом осуществления;
Фиг. 3 показывает принципиальную структурную схему стерео блока, в соответствии с вариантом осуществления;
Фиг. 4 показывает принципиальную структурную схему устройства для декодирования закодированного многоканального сигнала с закодированными каналами и, по меньшей мере, первыми и вторыми многоканальными параметрами, в соответствии с вариантом осуществления;
Фиг. 5 показывает блок-схему способа кодирования многоканального сигнала с, по меньшей мере, тремя каналами, в соответствии с вариантом осуществления; и
Фиг. 6 показывает блок-схему способа декодирования закодированного многоканального сигнала с закодированными каналами и, по меньшей мере, первыми и вторыми многоканальными параметрами, в соответствии с вариантом осуществления.
Одинаковые или эквивалентные элементы или элементы с одинаковыми или эквивалентными функциональными возможностями обозначаются в нижеследующем описании одинаковыми или эквивалентными цифровыми обозначениями.
В нижеследующем описании, множество подробностей излагается, чтобы предоставить более исчерпывающее объяснение вариантов осуществления настоящего изобретения. Тем не менее, специалистам в соответствующей области техники будет очевидно, что варианты осуществления настоящего изобретения могут быть воплощены на практике без этих конкретных подробностей. В других случаях, общеизвестные структуры и устройства показаны в форме структурной схемы, вместо подробного представления, для того, чтобы избежать затенения вариантов осуществления настоящего изобретения. В дополнение, признаки разных вариантов осуществления, описываемых далее, могут быть объединены друг с другом, до тех пор пока конкретно не отмечается обратное.
Фиг. 1 показывает принципиальную структурную схему устройства 100 (кодера) для кодирования многоканального сигнала 101 с, по меньшей мере, тремя каналами с CH1 по CH3. Устройство 100 содержит итерационный процессор 102, канальный кодер 104 и интерфейс 106 вывода.
Итерационный процессор 102 выполнен с возможностью вычисления, на первом итеративном шаге, значений межканальной корреляции между каждой парой из, по меньшей мере, трех каналов с CH1 по CH3 для выбора, на первом итеративном шаге, пары с наивысшим значением или со значением выше пороговой величины, и для обработки выбранной пары с использованием операции многоканальной обработки, чтобы извлекать первые многоканальные параметры MCH_PAR1 для выбранной пары и чтобы извлекать первые обработанные каналы P1 и P2. Кроме того, итерационный процессор 102 выполнен с возможностью выполнения вычисления, выбора и обработки на втором итеративном шаге с использованием, по меньшей мере, одного из обработанных каналов P1 или P2, чтобы извлекать вторые многоканальные параметры MCH_PAR2 и вторые обработанные каналы P3 и P4.
Например, как указывается на Фиг. 1, итерационный процессор 102 может вычислять на первом итеративном шаге значение межканальной корреляции между первой парой из, по меньшей мере трех каналов с CH1 по CH3, первая пара состоящая из первого канала CH1 и второго канала CH2, значение межканальной корреляции между второй парой из, по меньшей мере, трех каналов с CH1 по CH3, вторая пара состоящая из второго канала CH2 и третьего канала CH3, и значение межканальной корреляции между третьей парой из, по меньшей мере, трех каналов с CH1 по CH3, третья пара состоящая из первого канала CH1 и третьего канала CH3.
На Фиг. 1 предполагается, что на первом итеративном шаге третья пара, состоящая из первого канала CH1 и третьего канала CH3, содержит наивысшее значение межканальной корреляции, так что итерационный процессор 102 выбирает на первом итеративном шаге третью пару с наивысшим значением межканальной корреляции и обрабатывает выбранную пару, т.е., третью пару с использованием операции многоканальной обработки, чтобы извлекать первые многоканальные параметры MCH_PAR1 для выбранной пары и чтобы извлекать первый обработанные каналы P1 и P2.
Кроме того, итерационный процессор 102 может быть выполнен с возможностью вычисления, на втором итеративном шаге, значений межканальной корреляции между каждой парой из, по меньшей мере, трех каналов с CH1 по CH3 и обработанных каналов P1 и P2, для выбора, на втором итеративном шаге, пары с наивысшим значением межканальной корреляции или со значением выше пороговой величины. Тем самым, итерационный процессор 102 может быть выполнен с возможностью не выбора выбранной пары первого итеративного шага на втором итеративном шаге (или на любом дальнейшем этапе повторения).
Обращаясь к примеру, показанному на Фиг. 1, итерационный процессор 102 может дополнительно вычислять значение межканальной корреляции между четвертой парой каналов, состоящей из первого канала CH1 и первого обработанного канала P1, значение межканальной корреляции между пятой парой, состоящей из первого канала CH1 и второго обработанного канала P2, значение межканальной корреляции между шестой парой, состоящей из второго канала CH2 и первого обработанного канала P1, значение межканальной корреляции между седьмой парой, состоящей из второго канала CH2 и второго обработанного канала P2, значение межканальной корреляции между восьмой парой, состоящей из третьего канала CH3 и первого обработанного канала P1, значение межканальной корреляции между девятой парой, состоящей из третьего канала CH3 и второго обработанного канала P2, и значение межканальной корреляции между десятой парой, состоящей из первого обработанного канала P1 и второго обработанного канала P2.
На Фиг. 1, предполагается, что на втором итеративном шаге шестая пара, состоящая из второго канала CH2 и первого обработанного канала P1, содержит наивысшее значение межканальной корреляции, так что итерационный процессор 102 выбирает на втором итеративном шаге шестую пару и обрабатывает выбранную пару, т.е., шестую пару с использованием операции многоканальной обработки, чтобы извлекать вторые многоканальные параметры MCH_PAR2 для выбранной пары и чтобы извлекать вторые обработанные каналы P3 и P4.
Итерационный процессор 102 может быть выполнен с возможностью только выбора пары, когда разность уровней пары меньше пороговой величины, причем пороговая величина меньше 40дБ, 25дБ, 12дБ или меньше 6дБ. В связи с этим, пороговые величины в 25 или 40дБ соответствуют углам поворота в 3 или 0,5 градуса.
Итерационный процессор 102 может быть выполнен с возможностью вычисления значений нормализованной целочисленной корреляции, при этом итерационный процессор 102 может быть выполнен с возможностью выбора пары, когда значение целочисленной корреляции выше, например, 0,2 или предпочтительно 0,3.
Кроме того, итерационный процессор 102 может предоставлять каналы, полученные в результате многоканальной обработки, канальному кодеру 104. Например, обращаясь к Фиг. 1, итерационный процессор 102 может предоставлять третий обработанный канал P3 и четвертый обработанный канал P4, полученные в результате многоканальной обработки, выполненной на втором итеративном шаге, и второй обработанный канал P2, полученный в результате многоканальной обработки, выполненной на первом итеративном шаге, канальному кодеру 104. Таким образом, итерационный процессор 102 может только предоставлять те обработанные каналы канальному кодеру 104, которые не (дополнительно) обрабатываются на последующем итеративном шаге. Как показано на Фиг. 1, первый обработанный канал P1 не предоставляется канальному кодеру 104 поскольку он дополнительно обрабатывается на втором итеративном шаге.
Канальный кодер 104 может быть выполнен с возможностью кодирования каналов с P2 по P4, полученных в результате итерационной обработки (или многоканальной обработки), выполненной итерационным процессором 102, чтобы получать закодированные каналы с E1 по E3.
Например, канальный кодер 104 может быть выполнен с возможностью использования моно кодеров с 120_1 по 120_3 (или моно блоков, или моно инструментов) для кодирования каналов с P2 по P4, полученных в результате итерационной обработки (или многоканальной обработки). Моно блоки могут быть выполнены с возможностью кодирования каналов таким образом, что меньше битов требуется для кодирования канала с меньшей энергией (или меньшей амплитудой), чем для кодирования канала с большей энергией (или большей амплитудой). Моно блоки с 120_1 по 120_3 могут быть, например, основанными на преобразовании кодерами аудио. Кроме того, канальный кодер 104 может быть выполнен с возможностью использования стерео кодеров (например, параметрических стерео кодеров, или стерео кодеров с потерями) для кодирования каналов с P2 по P4, полученных в результате итерационной обработки (или многоканальной обработки).
Интерфейс 106 вывода может быть выполнен с возможностью генерирования закодированного многоканального сигнала 107 с закодированными каналами с E1 по E3 и первыми и вторыми многоканальными параметрами MCH_PAR1 и MCH_PAR2.
Например, интерфейс 106 вывода может быть выполнен с возможностью генерирования закодированного многоканального сигнала 107 в качестве последовательного сигнала или последовательного битового потока и так, чтобы вторые многоканальные параметры MCH_PAR2 находились в закодированном сигнале 107 перед первыми многоканальными параметрами MCH_PAR2. Следовательно, декодер, вариант осуществления которого будет описан позже в отношении Фиг. 4, будет принимать вторые многоканальные параметры MCH_PAR2 перед первыми многоканальными параметрами MCH_PAR1.
На Фиг. 1 итерационный процессор 102 в качестве примера выполняет две операции многоканальной обработки, операцию многоканальной обработки на первом итеративном шаге и операцию многоканальной обработки на втором итеративном шаге. Естественно, итерационный процессор 102 также может выполнять дальнейшие операции многоканальной обработки на последующих итеративных шагах. Таким образом, итерационный процессор 102 может быть выполнен с возможностью выполнения итерационных шагов до тех пор, пока не достигается критерий завершения итерации. Критерием завершения итерации может быть то, что максимальное количество итеративных шагов равно или выше суммарного количества каналов многоканального сигнала 101 на два, или при этом критерием завершения итерации является то, когда значения межканальной корреляции не имеют значение больше пороговой величины, пороговая величина предпочтительно больше 0,2 или пороговая величина предпочтительно является 0,3. В дополнительных вариантах осуществления, критерием завершения итерации может быть то, что максимальное количество итеративных шагов равно или выше суммарного количества каналов многоканального сигнала 101, или при этом критерием завершения итерации является то, когда значения межканальной корреляции не имеют значение больше пороговой величины, пороговая величина предпочтительно больше 0,2 или пороговая величина предпочтительно является 0,3.
В целях иллюстрации операции многоканальной обработки, выполняемые итерационным процессором 102 на первом итеративном шаге и втором итеративном шаге, в качестве примера иллюстрируются на Фиг. 1 посредством блоков 110 и 112 обработки. Блоки 110 и 112 обработки могут быть реализованы в аппаратном обеспечении или программном обеспечении. Блоки 110 и 112 обработки могут быть стерео блоками, например.
Таким образом, межканальная зависимость сигнала может быть использована посредством иерархического применения известных инструментов объединенного стерео кодирования. В противоположность предыдущим подходам MPEG, пары сигналов, которые должны быть обработаны, не являются предварительно определенными посредством фиксированного пути сигнала (например, стерео дерева кодирования), а могут быть динамически изменены, чтобы адаптироваться к характеристикам входного сигнала. Входными данными фактического стерео блока могут быть (1) необработанные каналы, такие как каналы с CH1 по CH3, (2) выходные данные предшествующего стерео блока, такие как обработанные сигналы с P1 по P4, или (3) сочетание необработанного канала и выходных данных предшествующего стерео блока.
Обработка внутри стерео блока 110 и 112 может быть либо основанной на предсказании (подобной блоку комплексного предсказания в USAC), либо основанной на KLT/PCA (входные каналы поворачиваются (например, через 2×2 матрицу поворота) в кодере, чтобы максимально увеличить уплотнение энергии, т.е., сконцентрировать энергию сигнала в одном канале, в декодере повернутые сигналы будут обратно преобразованы в исходные направления входного сигнала).
В возможной реализации кодера 100, (1) кодер вычисляет межканальную корреляцию между каждой парой каналов и выбирает одну подходящую пару сигналов из входных сигналов и применяет стерео инструмент к выбранным каналам; (2) кодер повторно вычисляет межканальную корреляцию между всеми каналами (необработанными каналами, как впрочем и обработанными промежуточными выходными каналами) и выбирает одну подходящую пару каналов из входных сигналов и применяет стерео инструмент к выбранным каналам; и (3) кодер повторяет этап (2) до тех пор, пока все межканальные корреляции не находятся ниже пороговой величины, или если применяется максимальное количество преобразований.
Как уже упоминалось, пары сигналов, которые должны быть обработаны кодером 100, или более точно итерационным процессором 102, не являются предварительно определенными посредством фиксированного пути сигнала (например, стерео дерева кодирования), а могут быть изменены динамически, чтобы адаптироваться к характеристикам входного сигнала. Таким образом, кодер 100 (или итерационный процессор 102) может быть выполнен с возможностью построения стерео дерева в зависимости от, по меньшей мере, трех каналов с CH1 по CH3 многоканального (входного) сигнала 101. Другими словами, кодер 100 (или итерационный процессор 102) может быть выполнен с возможностью построения стерео дерева на основании межканальной корреляции (например, посредством вычисления, на первом итеративном шаге, значений межканальной корреляции между каждой парой из, по меньшей мере, трех каналов с CH1 по CH3, для выбора, на первом итеративном шаге, пары с наивысшим значением или значением выше пороговой величины, и посредством вычисления, на втором итеративном шаге, значений межканальной корреляции между каждой парой из, по меньшей мере, трех каналов и ранее обработанных каналов, для выбора, на втором итеративном шаге, пары с наивысшим значением или значением выше пороговой величины). В соответствии с одношаговым подходом, матрица корреляции может быть вычислена для возможно каждой итерации, содержащего корреляции всех, в возможно ранее обработанных итерациях, каналов.
Как указано выше, итерационный процессор 102 может быть выполнен с возможностью извлечения первых многоканальных параметров MCH_PAR1 для выбранной пары на первом итеративном шаге и извлечения вторых многоканальных параметров MCH_PAR2 для выбранной пары на втором итеративном шаге. Первые многоканальные параметры MCH_PAR1 могут содержать первую идентификацию (или индекс) пары каналов, идентифицирующую (или сигнализирующую) пару каналов, выбранную на первом итеративном шаге, при этом вторые многоканальные параметры MCH_PAR2 могут содержать вторую идентификацию (или индекс) пары каналов, идентифицирующую (или сигнализирующую) пару каналов, выбранную на втором итеративном шаге.
В нижеследующем, описывается эффективная индексация входных сигналов. Например, пары каналов могут быть эффективно просигнализированы с использованием уникального индекса для каждой пары, зависимого от суммарного количества каналов. Например, индексация пар для шести каналов может быть такой, как показано в нижеследующей таблице:
Например, в вышеприведенной таблице индекс 5 может сигнализировать пару, состоящую из первого канала и второго канала. Сходным образом, индекс 6 может сигнализировать пару, состоящую из первого канала и третьего канала.
Суммарное количество возможных индексов пар каналов для n каналов, может быть вычислено:
numPairs=numChannels×(numChannels-1)/2
Следовательно, количество битов, требуемых для сигнализации одной пары каналов равняется:
2
numBits=floor(log(numPairs-1))+1
Кроме того, кодер 100 может использовать маску канала. Конфигурация многоканального инструмента может содержать маску канала, указывающую, для каких каналов активен инструмент. Следовательно, LFE (LFE=низкочастотные эффекты/каналы улучшения) могут быть удалены из индексации пар каналов, обеспечивая более эффективное кодирование. Например, применительно к структуре 11.1, это сокращает количество индексов пар каналов с 12×11/2=66 до 11×10/2=55, обеспечивая сигнализацию с помощью 6, вместо 7 битов. Данный механизм также может быть использован, чтобы исключать каналы, предназначенные в качестве моно объектов (например, несколько языковых дорожек). По декодированию маски канала (channelMask), может быть сгенерирована карта канала (channelMap), чтобы обеспечить обратное отображение индексов пар каналов в каналах декодера.
Более того, итерационный процессор 102 может быть выполнен с возможностью извлечения, для первого кадра, множества выбранных указаний пар, при этом интерфейс 106 вывода может быть выполнен с возможностью включения, в многоканальный сигнал 107, для второго кадра, следующего за первым кадром, индикатора удержания, указывающего на то, что второй кадр имеет точно такое же множество выбранных указаний пар, как и первый кадр.
Индикатор удержания или флаг удержания дерева может быть использован, чтобы сигнализировать, что новое дерево не передается, а должно быть использовано последнее стерео дерево. Это может быть использовано, чтобы избежать многократной передачи одной и той же конфигурации стерео дерева, если свойства корреляции канала остаются стационарными длительное время.
Фиг. 2 показывает принципиальную структурную схему стерео блока 110, 112. Стерео блок 110, 112 содержит вводы для первого входного сигнала I1 и второго входного сигнала I2, и выводы для первого выходного сигнала O1 и второго выходного сигнала O2. Как указано на Фиг. 2, зависимости выходных сигналов O1 и O2 от входных сигналов I1 и I2 могут быть описаны посредством s-параметров с S1 по S4.
Итерационный процессор 102 может использовать (или содержать) стерео блоки 110, 112 для того, чтобы выполнять операции многоканальной обработки над входными каналами и/или обработанными каналами для того, чтобы извлекать (далее) обработанные каналы. Например, итерационный процессор 102 может быть выполнен с возможностью использования общих стерео блоков 110, 112, основанных на предсказании стерео блоков 110, 112 или стерео блоков 110, 112 с основанным на KLT (Преобразование Карунена-Лоэва) поворотом.
Общий кодер (или стерео блок стороны кодера) может быть выполнен с возможностью кодирования входных сигналов I1 и I2, чтобы получать выходные сигналы O1 и O2 на основании уравнения:
.
Общий декодер (или стерео блок стороны декодера) может быть выполнен с возможностью декодирования входных сигналов I1 и I2, чтобы получать выходные сигналы O1 и O2 на основании уравнения:
.
Основанный на предсказании кодер (или стерео блок стороны кодера) может быть выполнен с возможностью кодирования входных сигналов I1 и I2, чтобы получать выходные сигналы O1 и O2 на основании уравнения:
,
при этом p является коэффициентом предсказания.
Основанный на предсказании декодер (или стерео блок стороны декодера) может быть выполнен с возможностью декодирования входных сигналов I1 и I2, чтобы получать выходные сигналы O1 и O2 на основании уравнения:
.
Кодер с основанным на KLT поворотом (или стерео блок стороны кодера) может быть выполнен с возможностью кодирования входных сигналов I1 и I2, чтобы получать выходные сигналы O1 и O2 на основании уравнения:
.
Декодер с основанным на KLT поворотом (или стерео блок стороны декодера) может быть выполнен с возможностью декодирования входных сигналов I1 и I2, чтобы получать выходные сигналы O1 и O2 на основании уравнения (обратный поворот):
.
В нижеследующем, описывается вычисление угла α поворота для основанного на KLT поворота.
Угол α поворота для основанного на KLT поворота может быть определен как:
xy
11
22
причем c являются записями ненормализованной матрицы корреляции, при этом c, c являются энергиями канала.
Это может быть реализовано с использованием функции atan2, чтобы обеспечить различие между отрицательными корреляциями в числителе и отрицательной разностью энергии в знаменателе:
alpha=0,5×atan2(2×correlation[ch1][ch2], (correlation[ch1][ch1]-correlation[ch2][ch2]));
Кроме того, итерационный процессор 102 может быть выполнен с возможностью вычисления межканальной корреляции с использованием кадра каждого канала, содержащего множество полос так, что получается одно значение межканальной корреляции для множества полос, при этом итерационный процессор 102 может быть выполнен с возможностью выполнения многоканальной обработки каждой из множества полос так, что первые или вторые многоканальные параметры получаются из каждой из множества полос.
Таким образом, итерационный процессор 102 может быть выполнен с возможностью вычисления стерео параметров в многоканальной обработке, при этом итерационный процессор 102 может быть выполнен с возможностью только выполнения стерео обработки в полосах, в которых стерео параметр выше квантованной-в-ноль пороговой величины, определенной стерео квантователем (например, кодером с основанным на KLT поворотом). Стерео параметры могут быть, например, Включено/Выключено MS или углами поворота или коэффициентами предсказания).
Например, итерационный процессор 102 может быть выполнен с возможностью вычисления углов поворота в многоканальной обработке, при этом итерационный процессор 102 может быть выполнен с возможностью только выполнения обработки с поворотом в полосах, в которых угол поворота выше квантованной-в-ноль пороговой величины, определенной квантователем угла поворота (например, кодер с основанным на KLT поворотом).
Следовательно, кодер 100 (или интерфейс 106 вывода) может быть выполнен с возможностью передачи информации преобразования/поворота либо в качестве параметра для полного спектра (блок полной полосы), либо в качестве нескольких зависящих от частоты параметров для частей спектра.
Кодер 100 может быть выполнен с возможностью генерирования битового потока 107 на основании следующих таблиц:
Таблица 1 - Синтаксис mpegh3daExtElementConfig()
Синтаксис
№ бит
Мнемокод
mpegh3daExtElementConfig()
{
usacExtElementType=escapedValue(4, 8, 16);
usacExtElementConfigLength=escapedValue(4, 8, 16);
if (usacExtElementDefaultLengthPresent){
1
uimsbf
usacExtElementDefaultLength=escapedValue(8, 16, 0)+1;
} else{
usacExtElementDefaultLength=0;
}
usacExtElementPayloadFrag;
1
uimsbf
switch (usacExtElementType) {
case ID_EXT_ELE_FILL
/* Нет элемента конфигурации */
break;
case ID_EXT_ELE_MPEGS:
SpatialSpecificConfig();
break;
case ID_EXT_ELE_SAOC:
SAOCSpecificConfig();
break;
case ID_EXT_ELE_AUDIOPREROLL:
/* Нет элемента конфигурации */
break;
case ID_EXT_ELE_UNI_DRC:
mpegh3daUniDrcConfig();
break;
case ID_EXT_ELE_OBJ_METADATA:
ObjectMetadataCcnfig();
break;
case ID_EXT_ELE_SAOC_3D:
SAOC3DSpecificConfig();
break;
case ID_EXT_ELE_HOA:
HOAConfig();
break;
case ID_EXT_ELE_MCC: /* многоканальное кодирование */
MCCConfig(grp);
break;
case ID_EXT_ELE_FMT_CNVRTR
/* Нет элемента конфигурации */
break;
default:
ПРИМЕЧАНИЕ
while (usacExtElementConfigLength--) {
tmp;
8
uimsbf
}
break;
}
}
ПРИМЕЧАНИЕ: Запись по умолчанию для usacExtElementType используется для неизвестных extElementTypes с тем, чтобы унаследованные декодеры могли справляться с будущими расширениями.
Таблица 21 - Синтаксис MCCConfig(),
Синтаксис
№ бит
Мнемокод
MCCConfig(grp)
{
nChannels=0
for(chan=0;chan < bsNumberOfSignals[grp]; chan++
chanMask[chan]
1
if(chanMask[chan] > 0) {
mctChannelMap[nChannels]=chan;
nChannels++;
}
}
}
ПРИМЕЧАНИЕ: Соответствующий элемент ID_USAC_EXT должен предшествовать любому аудио элементу определенной группы сигналов grp.
Таблица 32 - Синтаксис MultichannelCodingBoxBandWise()
Синтаксис
№ бит
Мнемокод
MultichannelCodingBoxBandWise()
{
for(pair=0; pair<numPairs;pair++) {
if (keepTree == 0) {
channelPairIndex[pair]
nBits ПРИМЕЧАНИЕ 1)
}
else {
channelPairIndex[pair]=
lastChannelPairIndex[pair];
}
hasMctMask
1
hasBandwiseAngles
1
if (hasMctMask || hasBandwiseAngles) {
isShort
1
numMaskBands;
5
if (isShort) {
numMaskBands=numMaskBands*8
}
} else {
ПРИМЕЧАНИЕ 2)
numMaskBands=MAX_NUM_MC_BANDS;
}
if (hasMctMask) {
for(j=0;j<numMaskBands;j++) {
msMask[pair][j];
1
} else {
for(j=0;j<numMaskBands;j++) {
msMask[pair][j]=1;
}
}
}
if(indepFlag > 0) {
delta_code_time=0
} else {
delta_code_time;
1
}
if (hasBandwiseAngles == 0) {
hcod_angle[dpcm_alpha[pair][0]];
1..10
vlclbf
}
else {
for(j=0;j< numMaskBands;j++) {
if (msMask[pair][j] ==1) {
hcod_angle[dpcm_alpha[pair][j]];
1..10
vlclbf
}
}
}
}
}
ПРИМЕЧАНИЕ 1) nBits=floor(log2(nChannels*(nChannels-l)/2-1))+1
Таблица 4 - Синтаксис MultichannelCodingBoxFullband()
Синтаксис
№ бит
Мнемокод
MultichannelCodingBoxFullband()
{
for (pair=0; pair<numPairs; pair++) {
if(keepTree == 0) {
channelPairIndex[pair]
nBits
}
ПРИМЕЧАНИЕ 1)
else {
numPairs=lastNumPairs;
}
alpha;
8
}
ПРИМЕЧАНИЕ: 1) nBits=floor(log2(nChannels*(nChannels-l)/2-1))+1
Таблица 5 - Синтаксис MultichannelCodingFrame()
Синтаксис
№
Мнемокод
MultichannelCodingFrame()
{
MCCSignalingType
2
keepTree
1
if(keepTree==0) {
numPairs
5
}
else {
numPairs=lastNumPairs;
}
if(MCCSignalingType==0){/* дерево стандартных стерео блоков */
for(i=0;i<numPairs;i++) {
MCCBox[i]=StereoCoreToolInfo(0);
}
}
if(MCCSignalingType==1){/* произвольные mct деревья */
MultichannelCodingBoxBandWise();
}
if(MCCSignalingType==2) {/* переданные деревья */
}
if(MCCSignalingType==3) {/* простое fullband дерево */
MultichannelCodingBoxFullband();
}
}
Таблица 6 - Значение usacExtElementType
usacExtElementType
Значение
ID_EXT_ELE_FILL
0
ID_EXT_ELE_MPEGS
1
ID_EXT_ELE_SAOC
2
ID_EXT_ELE_AUDIOPREROLL
3
ID_EXT_ELE_UNI_DRC
4
ID_EXT_ELE_OBJ_METADATA
5
ID_EXT_ELE_SAOC_3D
6
ID_EXT_ELE_HAO
7
ID_EXT_ELE_FMT_CNVRTR
8
ID_EXT_ELE_MCC
9 или 10
/* зарезервировано для использования ISO */
10-127
/* зарезервировано для использования за пределами ISO */
128 и выше
ПРИМЕЧАНИЕ: Специализированные значения usacExtElementType должны находиться в пределах зарезервированных для использования за пределами ISO. Они пропускаются декодером, поскольку декодеру требуется минимум структуры, чтобы пропускать эти расширения.
Таблица 7 - Интерпретация блоков данных для декодирования расширения полезной нагрузки
usacExtElementType
Сцепленные usacExtElementSegmentData представляют собой:
ID_EXT_ELE_FILL
Ряды fill_byte
ID_EXT_ELE_MPEGS
SpatialFrame()
ID_EXT_ELE_SAOC
SaocFrame()
ID_EXT_ELE_AUDIOPREROLL
AudioPreRoll()
ID_EXT_ELE_UNI_DRC
uniDrcGain() как определено в ISO/IEC 23003-4
ID_EXT_ELE_OBJ_METADATA
obiect_metadata()
ID_EXT_ELE_SAOC_3D
Saoc3DFrame()
ID_EXT_ELE_HAO
HOAFrame()
ID_EXT_ELE_FMT_CNVRTR
FormatConverterFrame()
ID_EXT_ELE_MCC
MultichannelCodingFrame()
неизвестно
неизвестные данные. Блок данных должен быть отброшен.
Фиг. 3 показывает принципиальную структурную схему итерационного процессора 102, в соответствии с вариантом осуществления. В варианте осуществления, показанном на Фиг. 3, многоканальный сигнал 101 является 5.1 канальным сигналом с шестью каналами: левый канал L, правый канал R, левый канал Ls объемного звучания, правый канал Rs объемного звучания, центральный канал C и канал LFE низкочастотных эффектов.
Как указано на Фиг. 3, канал LFE не обрабатывается итерационным процессором 102. Это может быть так, поскольку значения межканальной корреляции между каналом LFE и каждым из других пяти каналов L, R, Ls, Rs, и C слишком малы, или поскольку маска канала указывает не обрабатывать канал LFE, который будет предполагаться в следующем.
На первом итеративном шаге, итерационный процессор 102 вычисляет значения межканальной корреляции между каждой парой из пяти каналов L, R, Ls, Rs, и C, для выбора, на первом итеративном шаге, пары с наивысшим значением или со значением выше пороговой величины. На Фиг. 3 предполагается, что левый канал L и правый канал R имеют наивысшее значение, так что итерационный процессор 102 обрабатывает левый канал L и правый канал R с использованием стерео блока 110 (или стерео инструмента), который выполняет операцию многоканальной обработки, чтобы извлекать первые и вторые обработанные каналы P1 и P2.
На втором итеративном шаге, итерационный процессор 102 вычисляет значения межканальной корреляции между каждой парой из пяти каналов L, R, Ls, Rs, и C и обработанных каналов P1 и P2, для выбора, на втором итеративном шаге, пары с наивысшим значением или со значением выше пороговой величины. На Фиг. 3 предполагается, что левый канал Ls объемного звучания и правый канал Rs объемного звучания имеют наивысшее значение, так что итерационный процессор 102 обрабатывает левый канала Ls объемного звучания и правый канал Rs объемного звучания с использованием стерео блока 112 (или стерео инструмента), чтобы извлекать третий и четвертый обработанные каналы P3 и P4.
На третьем итеративном шаге, итерационный процессор 102 вычисляет значения межканальной корреляции между каждой парой из пяти каналов L, R, Ls, Rs, и C и обработанными каналами с P1 по P4, для выбора, на третьем итеративном шаге, пары с наивысшим значением или со значением выше пороговой величины. На Фиг. 3 предполагается, что первый обработанный канал P1 и третий обработанный канал P3 имеют наивысшее значение, так что итерационный процессор 102 обрабатывает первый обработанный канал P1 и третий обработанный канал P3 с использованием стерео блока 114 (или стерео инструмент), чтобы извлекать пятый и шестой обработанные каналы P5 и P6.
На четвертом итеративном шаге, итерационный процессор 102 вычисляет значения межканальной корреляции между каждой парой из пяти каналов L, R, Ls, Rs, и C и обработанными каналами с P1 по P6, для выбора, на четвертом итеративном шаге, пары с наивысшим значением или со значением выше пороговой величины. На Фиг. 3 предполагается, что пятый обработанный канал P5 и центральный канал C имеют наивысшее значение, так что итерационный процессор 102 обрабатывает пятый обработанный канал P5 и центральный канал C с использованием стерео блока 115 (или стерео инструмент), чтобы извлекать седьмой и восьмой обработанные каналы P7 и P8.
Стерео блоки с 110 по 116 могут быть MS стерео блоками, т.е., блоками средней/побочной стереофонии, выполненными с возможностью предоставления среднего-канала и побочного-канала. Средний-канал может быть суммой входных каналов стерео блока, при этом побочный-канал может быть разностью между входными каналами стерео блока. Кроме того, стерео блоки 110 и 116 могут быть блоками поворота или стерео блоками предсказания.
На Фиг. 3, первый обработанный канал P1, третий обработанный канал P3 и пятый обработанный канал P5 могут быть средними-каналами, при этом второй обработанный канал P2, четвертый обработанный канал P4 и шестой обработанный канал P6 могут быть побочными-каналами.
Кроме того, как указывается на Фиг. 3, итерационный процессор 102 может быть выполнен с возможностью выполнения вычисления, выбора и обработки на втором итеративном шаге и, если применимо, на любом дальнейшем итеративном шаге с использованием входных каналов L, R, Ls, Rs, и C и (только) средних-каналов P1, P3 и P5 из обработанных каналов. Другими словами, итерационный процессор 102 может быть выполнен с возможностью не использования побочных-каналов P2, P4 и P6 из обработанных каналов при вычислении, выборе и обработке на втором итеративном шаге и, если применимо, на любом дальнейшем итеративном шаге.
Фиг. 4 показывает принципиальную структурную схему устройства 200 (декодера) для декодирования закодированного многоканального сигнала 107 с закодированными каналами с E1 по E3 и, по меньшей мере, первыми и вторыми многоканальными параметрами MCH_PAR1 и MCH_PAR2. Устройство 200 содержит канальный декодер 202 и многоканальный процессор 204.
Канальный Декодер 202 выполнен с возможностью декодирования закодированных каналов с E1 по E3, чтобы получать декодированные каналы с D1 по D3.
Например, канальный декодер 202 может содержать, по меньшей мере, три моно декодера с 206_1 по 206_3 (или моно блоки, или моно инструменты), при этом каждый из моно декодеров с 206_1 по 206_3 могут быть сконфигурированы, чтобы декодировать один из, по меньшей мере, трех закодированных каналов с E1 по E3, чтобы получать соответствующий декодированный канал с E1 по E3. Моно декодеры с 206_1 по 206_3 могут быть, например, основанными на преобразовании аудио декодерами.
Многоканальный процессор 204 выполнен с возможностью выполнения многоканальной обработки с использованием второй пары из декодированных каналов, идентифицируемую вторыми многоканальными параметрами MCH-PAR2 и с использованием вторых многоканальных параметров MCH_PAR2, чтобы получать обработанные каналы, и выполнения дальнейшей многоканальной обработки с использованием первой пары каналов, идентифицируемую первыми многоканальными параметрами MCH_PAR1 и с использованием первых многоканальных параметров MCH_PAR1, где первая пара каналов содержит, по меньшей мере, один обработанный канал.
Как указано на Фиг. 4 в качестве примера, вторые многоканальные параметры MCH_PAR2 могут указывать (или сигнализировать), что вторая пара декодированных каналов состоит из первого декодированного канала D1 и второго декодированного канала D2. Следовательно, многоканальный процессор 204 выполняет многоканальную обработку с использованием второй пары декодированных каналов, состоящей из первого декодированного канала D1 и второго декодированного канала D2 (идентифицируемую вторыми многоканальными параметрами MCH_PAR2), и с использованием вторых многоканальных параметров MCH_PAR2, чтобы получать обработанные каналы P1* и P2*. Первые многоканальные параметры MCH_PAR1 могут указывать, что первая пара декодированных каналов состоит из первого обработанного канала P1* и третьего декодированного канала D3. Следовательно, многоканальный процессор 204 выполняет дальнейшую многоканальную обработку с использованием первой пары декодированных каналов, состоящую из первого обработанного канала P1* и третьего декодированного канала D3 (идентифицируемую первыми многоканальными параметрами MCH_PAR1) и с использованием первых многоканальных параметров MCH_PAR1, чтобы получать обработанные каналы P3* и P4*.
Кроме того, многоканальный процессор 204 может предоставлять третий обработанный канал P3* в качестве первого канала CH1, четвертый обработанный канал P4* в качестве третьего канала CH3 и второй обработанный канал P2* в качестве второго канала CH2.
Предполагая, что декодер 200, показанный на Фиг. 4, принимает закодированный многоканальный сигнал 107 от кодера 100, показанного на Фиг. 1, первый декодированный канал D1 декодера 200 может быть эквивалентен третьему обработанному каналу P3 кодера 100, при этом второй декодированный канал D2 декодера 200 может быть эквивалентен четвертому обработанному каналу P4 кодера 100, и при этом третий декодированный канал D3 декодера 200 может быть эквивалентен второму обработанному каналу P2 кодера 100. Кроме того, первый обработанный канал P1* декодера 200 может быть эквивалентен первому обработанному каналу P1 кодера 100.
Кроме того, закодированный многоканальный сигнал 107 может быть последовательным сигналом, при этом вторые многоканальные параметры MCH_PAR2 принимаются, в декодере 200, перед первыми многоканальными параметрами MCH_PAR1. В этом случае, многоканальный процессор 204 может быть выполнен с возможностью обработки декодированных каналов в очередности, в которой многоканальные параметры MCH_PAR1 и MCH_PAR2 принимаются декодером. В примере, показанном на Фиг. 4, декодер принимает вторые многоканальные параметры MCH_PAR2 перед первыми многоканальными параметрами MCH_PAR1, и, следовательно, выполняет многоканальную обработку с использованием второй пары декодированных каналов (состоящую из первого и второго декодированных каналов D1 и D2), идентифицируемой вторым многоканальным параметром MCH_PAR2 перед выполнением многоканальной обработки, используя первую пару декодированных каналов (состоящую из первого обработанного канала P1* и третьего декодированного канала D3), идентифицируемую первым многоканальным параметром MCH_PAR1.
На Фиг. 4, многоканальный процессор 204 в качестве примера выполняет две операции многоканальной обработки. В целях иллюстрации, операции многоканальной обработки, выполняемые многоканальным процессорам 204, иллюстрируются на Фиг. 4 блоками 208 и 210 обработки. Блоки 208 и 210 обработки могут быть реализованы в аппаратном обеспечении или программном обеспечении. Блоки 208 и 210 обработки могут быть, например, стерео блоками, как обсуждалось выше со ссылкой на кодер 100, такими как общие декодеры (или стерео блоки стороны декодера), основанные на предсказании декодеры (или стерео блоки стороны декодера) или декодеры с основанным на KLT поворотом (или стерео блоки стороны декодера).
Например, кодер 100 может использовать кодеры с основанным на KLT поворотом (или стерео блоки стороны кодера). В этом случае, кодер 100 может извлекать первые и вторые многоканальные параметры MCH_PAR1 и MCH_PAR2 таким образом, что первые и вторые многоканальные параметры MCH_PAR1 и MCH_PAR2 содержат углы поворота. Углы поворота могут быть закодированы дифференциально. Вследствие этого, многоканальный процессор 204 декодера 200 может содержать дифференциальный декодер для дифференциального декодирования дифференциально закодированных углов поворота.
Устройство 200 может дополнительно содержать интерфейс 212 ввода, выполненный с возможностью приема и обработки закодированного многоканального сигнала 107, чтобы предоставлять закодированные каналы с E1 по E3 канальному декодеру 202 и первые и вторые многоканальные параметры MCH_PAR1 и MCH_PAR2 многоканальному процессору 204.
Как уже упоминалось, индикатор удержания (или флаг удержания дерева) может быть использован, чтобы сигнализировать то, что новое дерево не передается, а должно быть использовано последнее стерео дерево. Это может быть использовано, чтобы избегать многократной передачи одной и той же конфигурации стерео дерева, если свойства корреляции канала остаются стационарными длительное время.
Вследствие этого, когда закодированный многоканальный сигнал 107 содержит, для первого кадра, первые и вторые многоканальные параметры MCH_PAR1 и MCH_PAR2 и, для второго кадра, следующего за первым кадром, индикатор удержания, многоканальный процессор 204 может быть выполнен с возможностью выполнения многоканальной обработки или дальнейшей многоканальной обработки во втором кадре с той же самой второй парой или той же самой первой парой каналов, что использовалась в первом кадре.
Многоканальная обработка и дальнейшая многоканальная обработка может содержать стерео обработку с использованием стерео параметра, при этом для индивидуальных полос масштабного коэффициента или групп полос масштабного коэффициента декодированных каналов с D1 по D3, первый стерео параметр включается в первый многоканальный параметр MCH_PAR1 и второй стерео параметр включается во второй многоканальный параметр MCH_PAR2. Таким образом, первый стерео параметр и второй стерео параметр могут быть одного и того же типа, такими как углы поворота или коэффициенты предсказания. Естественно, первый стерео параметр и второй стерео параметр могут быть разных типов. Например, первый стерео параметр может быть углом поворота, при этом второй стерео параметр может быть коэффициентом предсказания, или наоборот.
Кроме того, первые или вторые многоканальные параметры MCH_PAR1 и MCH_PAR2 могут содержать маску многоканальной обработки, указывающую какие полосы масштабного коэффициента являются многоканально обработанными и какие полосы масштабного коэффициента не являются многоканально обработанными. Таким образом, многоканальный процессор 204 может быть выполнен с возможностью не выполнения многоканальной обработки в полосах масштабного коэффициента, указываемых маской многоканальной обработки.
Каждый из первых и вторых многоканальных параметров MCH_PAR1 и MCH_PAR2 могут включать в себя идентификацию (или индекс) пары каналов, при этом многоканальный процессор 204 может быть выполнен с возможностью декодирования идентификаций (или индексов) пары каналов с использованием предварительно определенного правила декодирования или правила декодирования, указываемого в закодированном многоканальном сигнале.
Например, пары каналов могут быть эффективно просигнализированы с использованием уникального индекса для каждой пары, в зависимости от суммарного количества каналов, как описано выше со ссылкой на кодер 100.
Кроме того, правило декодирования может быть правилом декодирования Хаффмана, при этом многоканальный процессор 204 может быть выполнен с возможностью выполнения декодирования Хаффмана идентификаций пар каналов.
Закодированный многоканальный сигнал 107 может дополнительно содержать индикатор допущения многоканальной обработки, указывающий только подгруппу декодированных каналов, для которой допускается многоканальная обработка, и указывающий, по меньшей мере, один декодированный канал, для которого многоканальная обработка не допускается. Таким образом, многоканальный процессор 204 может быть выполнен с возможностью не выполнения какой-либо многоканальной обработки применительно к, по меньшей мере, одному декодированному каналу, для которого многоканальная обработка не допускается, как указывается индикатором допущения многоканальной обработки.
Например, когда многоканальный сигнал является 5.1 канальным сигналом, индикатор допущения многоканальной обработки может указывать, что многоканальная обработка допускается только для 5 каналов, т.е., правого R, левого L, правого Rs объемного звучания, левого Ls объемного звучания и центрального C, при этом многоканальная обработка не допускается для канала LFE.
Применительно к процессу декодирования (декодирование индексов пары каналов) может быть использован следующий c-код. Таким образом, для всех пар каналов, требуется количество каналов с активной обработкой KLT (nChannels), как впрочем и количество пар каналов (numPairs) текущего кадра.
maxNumPairIdx=nChannels*(nChannels-1)/2-1 ;
2
numBits=floor(log(maxNumPairIdx)+1;
pairCounter=0;
for (chan1=1; chan1 < nChannels; chan1++) {
for (chan0=0; chan0 < chan1; chan0 ++) {
if (pairCounter == paxrIdx) {
channelPair[0]=chan0;
channelPair[1]=chan1;
return;
}
else
pairCounter++$
}
}
}
Для декодирования для не-по-полосных углов, может быть использован следующий c-код.
for(pair=0; pair<numPairs; pair++) {
mctBandsPerWindow=numMaskBands[pair]/windowsPerFrame;
if(delta_code_time[pair] > 0 ) {
lastVal=alpha_prev_fullband[pair];
} else {
lastVal=DEFAULT_ALPHA;
}
newAlpha=lastVal+dpcm_alpha[pair][0];
if(newAlpha >= 64) {
newAlpha -= 64;
}
for (band=0; band < numMaskBands; band++){
/* устанавливают все углы в fullband угол */
pairAlpha[pair][band]=newAlpha;
/* устанавливают предыдущие углы в соответствии с mctMask*/
if(mctMask[pair][band] > 0) {
alpha_prev_frame[pair][band%mctBandsPerWindow]=newAlpha;
}
else {
alpha_prev_frame[pair][band%mctBandsPerWindow]=DEFAULT_ALPHA;
}
}
alpha_prev_fullband[pair]=newAlpha;
for(band=bandsPerWindow; band<MAX_NUM_MC_BANDS; band++) {
alpha_prev_frame[pair][band]=DEFAULT_ALPHA;
}
}
Для декодирования коэффициентов предсказания для не-по-полосных KLT углов, может быть использован следующий c-код.
for(pair=0; pair<numPairs; pair++) {
mctBandsPerWindow=numMaskBands[pair]/windowsPerFrame;
for(band=0; band<numMaskBands[pair]; band++) {
if(delta_code_time[pair] > 0) {
lastVal=alpha_prev_frame[pair] [band%mctBandsPerWindow];
}
else {
if ((band % mctBandsPerWindow) == 0) {
lastVal=DEFAULT_ALPHA;
}
}
if (msMask[pair][band] > 0 ) {
newAlpha=lastVal+dpcm_alpha[pair][band];
if(newAlpha >= 64) {
newAlpha -= 64;
}
pairAlpha[pair][band]=newAlpha;
alpha_prev_frame[pair][band%mctBandsPerWindow]=newAlpha;
lastVal=newAlpha;
}
else {
alpha_prev_frame[pair][band%mctBandsPerWindow]=DEFAULT_ALPHA; /* -45° */
}
/* сбрасывают fullband угол */
alpha_prev_fullband[pair]=DEFAULT_ALPHA;
}
for(band=bandsPerWindow; band<MAX_NUM_MC_BANDS; band++) {
alpha_prev_frame[pair][band]=DEFAULT_ALPHA;
}
}
Чтобы избежать разностей с плавающей точкой у тригонометрических функций на разных платформах, должны быть использованы следующие поисковые таблицы для преобразования индексов угла непосредственно в sin/cos:
tabIndexToSinAlpha[64]={
-1.000000f,-0.998795f,-0.995185f,-0.989177f,-0.980785f,-0.970031f,-0.956940f,-0.941544f,
-0.923880f,-0.903989f,-0.881921f,-0.857729f,-0.831470f,-0.803208f,-0.773010f,-0.740951f,
-0.707107f,-0.671559f,-0.634393f,-0.595699f,-0.555570f,-0.514103f,-0.471397f,-0.427555f,
-0.382683f,-0.336890f,-0.290285f,-0.242980f,-0.195090f,-0.146730f,-0.098017f,-0.049068f,
0.000000f, 0.049068f, 0.098017f, 0.146730f, 0.195090f, 0.242980f, 0.290285f, 0.336890f,
0.382683f, 0.427555f, 0.471397f, 0.514103f, 0.555570f, 0.595699f, 0.634393f, 0.671559f,
0.707107f, 0.740951f, 0.773010f, 0.803208f, 0.831470f, 0.857729f, 0.881921f, 0.903989f,
0.923880f, 0.941544f, 0.956940f, 0.970031f, 0.980785f, 0.989177f, 0.995185f, 0.998795f
};
tabIndexToCosAlpha[64]={
0.000000f, 0.049068f, 0.098017f, 0.146730f, 0.195090f, 0.242980f, 0.290285f, 0.336890f,
0.382683f, 0.427555f, 0.471397f, 0.514103f, 0.555570f, 0.595699f, 0.634393f, 0.671559f,
0.707107f, 0.740951f, 0.773010f, 0.803208f, 0.831470f, 0.857729f, 0.881921f, 0.903989f,
0.923880f, 0.941544f, 0.956940f, 0.970031f, 0.980785f, 0.989177f, 0.995185f, 0.998795f,
1.000000f, 0.998795f, 0.995185f, 0.989177f, 0.980785f, 0.970031f, 0.956940f, 0.941544f,
0.923880f, 0.903989f, 0.881921f, 0.857729f, 0.831470f, 0.803208f, 0.773010f, 0.740951f,
0.707107f, 0.671559f, 0.634393f, 0.595699f, 0.555570f, 0.514103f, 0.471397f, 0.427555f,
0.382683f, 0.336890f, 0.290285f, 0.242980f, 0.195090f, 0.146730f, 0.098017f, 0.049068f
};
Для декодирования многоканального кодирования следующий c-код может быть использован для подхода основанного на KLT повороте.
decode_mct_rotation()
{
for (pair=0; pair < self->numPairs; pair++) {
mctBandOffset=0;
/* обратный MCT поворот */
for (win=0, group=0; group<num_window_groups; group++) {
for (groupwin= 0; groupwin<window_group_length[group]; groupwin++, win++) {
*dmx=spectral_data[ch1][win];
*res=spectral_data[ch2][win];
apply_mct_rotation_wrapper(self, dmx, res, &alphaSfb[mctBandOffset], &mctMask[mctBandOffset], mctBandsPerWindow, alpha, totalSfb, pair,nSamples);
}
mctBandOffset += mctBandsPerWindow;
}
}
}
Применительно к по-полосной обработке может быть использован следующий c-код.
apply_mct_rotation_wrapper(self, *dmx, *res, *alphaSfb, *mctMask, mctBandsPerWindow, alpha, totalSfb, pair, nSamples)
{
sfb=0;
if (self->MCCSignalingType == 0) {
}
else if (self->MCCSignalingType == 1) {
/* применяют fullband блок */
if {!self->bHasBandwiseAngles[pair] && !self->bHasMctMask[pair]) {
apply_mct_rotation(dmx, res, alphaSfb[0], nSamples);
}
else {
/* применяют по-полосную обработку */
for (i=0; i< mctBandsPerWindow; i++) {
if (mctMask[i] == 1) {
startLine=swb_offset [sfb];
stopLine=(sfb+2<totalSfb)? swb_offset [sfb+2]:swb_offset
[sfb+1];
nSamples=stopLine-startLine;
apply_mct_rotation(&dmx[startLine], &res[startLine], alphaSfb[i], nSamples);
}
sfb += 2;
/* условие прерывания */
if (sfb >= totalSfb) {
break;
}
}
}
}
else if (self->MCCSignalingType == 2) {
}
else if (self->MCCSignalingType == 3) {
apply_mct_rotation(dmx, res, alpha, nSamples);
}
}
Для применения KLF поворота может быть использован следующий c-код.
apply_mct_rotation(*dmx, *res, alpha, nSamples)
{
for (n=0;n<nSamples;n++) {
L=dmx[n] * tabIndexToCosAlpha [alphaIdx] - res[n] * tabIndexToSinAlpha [alphaIdx];
R=dmx[n] * tabIndexToSinAlpha [alphaIdx]+res[n] * tabIndexToCosAlpha [alphaIdx];
dmx[n]=L;
res[n]=R;
}
}
Фиг. 5 показывает блок-схему способа 300 для кодирования многоканального сигнала с, по меньшей мере, тремя каналами. Способ 300 содержит этап 302 вычисления, на первом итеративном шаге, значений межканальной корреляции между каждой парой из, по меньшей мере, трех каналов, выбора, на первом итеративном шаге, пары с наивысшим значением или со значением выше пороговой величины, обработки выбранной пары с использованием операции многоканальной обработки, чтобы извлекать первые многоканальные параметры для выбранной пары и чтобы извлекать первые обработанные каналы; этап 304 выполнения вычисления, выбора и обработки на втором итеративном шаге с использованием, по меньшей мере, одного из обработанных каналов, чтобы извлекать вторые многоканальные параметры и вторые обработанные каналы; этап 306 кодирования каналов, полученных в результате итерационной обработки, выполненной итерационным процессором, чтобы получать закодированные каналы; и этап 308 генерирования закодированного многоканального сигнала с закодированными каналами и первыми и вторыми многоканальными параметрами.
Фиг. 6 показывает блок-схему способа 400 для декодирования закодированного многоканального сигнала с закодированными каналами и, по меньшей мере, первыми и вторыми многоканальными параметрами. Способ 400 содержит этап 402 декодирования закодированных каналов, чтобы получать декодированные каналы; и этап 404 выполнения многоканальной обработки с использованием второй пары из декодированных каналов, идентифицируемой вторыми многоканальными параметрами, и с использованием вторых многоканальных параметров, чтобы получать обработанные каналы, и выполнения дальнейшей многоканальной обработки с использованием первой пары из каналов, идентифицируемую первыми многоканальными параметрами, и с использованием первых многоканальных параметров, при этом первая пара из каналов содержит, по меньшей мере, один обработанный канал.
Несмотря на то, что настоящее изобретение было описано в контексте структурных схем, где блоки представляют собой фактические или логические компоненты аппаратного обеспечения, настоящее изобретение также может быть реализовано посредством реализуемого компьютером способа. В последнем случае, блоки представляют собой соответствующие этапы способа, где эти этапы означают функциональные возможности, выполняемые соответствующими логическими или физическими блоками аппаратного обеспечения.
Несмотря на то, что некоторые аспекты были описаны в контексте устройства, очевидно, что эти аспекты также представляют собой описание соответствующего способа, где блок или устройство соответствует этапу способа или признаку этапа способа. Аналогично, аспекты, описанные в контексте этапа способа, также представляют собой описание соответствующего блока или элемента или признака соответствующего устройства. Некоторые или все из этапов способа могут быть исполнены посредством (или с использованием) устройства аппаратного обеспечения, подобного, например, микропроцессору, программируемому компьютеру или электронной схеме. В некоторых вариантах осуществления, некоторые одни или более из наиболее важных этапов способов могут быть исполнены таким устройством.
Передаваемый или закодированный сигнал по изобретению может быть сохранен на цифровом запоминающем носителе информации или может быть передан по средству передачи, такому как средство беспроводной передачи или средство проводной передачи, такое как Интернет.
В зависимости от определенных требований реализации, варианты осуществления изобретения могут бать реализованы в аппаратном обеспечении или в программном обеспечении. Реализация может быть выполнена, используя цифровой запоминающий носитель информации, например, гибкий диск, DVD, BLu-Ray, CD, ROM, PROM, и EPROM, EEPROM или Флэш-память, с хранящимися на ней электронно-читаемыми сигналами управления, которые взаимодействуют (или способны к взаимодействию) с программируемой компьютерной системой таким образом, что выполняется соответствующий способ. Вследствие этого, цифровой запоминающий носитель информации может быть машиночитаемым.
Некоторые варианты осуществления в соответствии с изобретением содержат носитель данных с электронно-читаемыми сигналами управления, которые способны взаимодействовать с программируемой компьютерной системой таким образом, что выполняется один из способов, описанных в данном документе.
Как правило, варианты осуществления настоящего изобретения могут быть реализованы в качестве компьютерного программного продукта с программным кодом, программный код работает для выполнения одного из способов, когда компьютерный программный продукт выполняется на компьютере. Программный код может, например, быть сохранен на машиночитаемом носителе.
Другие варианты осуществления содержат компьютерную программу для выполнения одного из способов, описанных в данном документе, хранящуюся на машиночитаемом носителе.
Другими словами, вариант осуществления способа по изобретению является, вследствие этого, компьютерной программой с программным кодом для выполнения одного из способов, описанных в данном документе, когда компьютерная программа работает на компьютере.
Дополнительным вариантом осуществления способа по изобретению является, вследствие этого, носитель данных (или не временный запоминающий носитель информации, такой как цифровой запоминающий носитель информации, или машиночитаемый носитель информации), содержащий, записанную на нем, компьютерную программу для выполнения одного из способов, описанных в данном документе. Носитель данных, цифровой запоминающий носитель информации или записанный носитель информации являются, как правило, вещественными и/или не временными.
Дополнительным вариантом осуществления способа изобретения является, вследствие этого, поток данных или последовательность сигналов, представляющая собой компьютерную программу для выполнения одного из способов, описанных в данном документе. Поток данных или последовательность сигналов может, например, быть выполнена с возможностью быть переданной через соединение связи для передачи данных, например, через Интернет.
Дополнительный вариант осуществления содержит средство обработки, например, компьютерное или программируемое логическое устройство, сконфигурированное, или выполненное с возможностью, выполнения одного из способов, описываемых в данном документе.
Дополнительный вариант осуществления содержит компьютер с инсталлированной на нем компьютерной программой для выполнения одного из способов, описываемых в данном документе.
Дополнительный вариант осуществления изобретения содержит устройство или систему, выполненную с возможностью переноса (например, электронным или оптическим образом) компьютерной программы для выполнения одного из способов, описанных в данном документе для приемника. Приемник может, например, быть компьютером, мобильным устройством, устройством памяти или подобным. Устройство или система может, например, быть выполнена в виде файлового сервера для переноса компьютерной программы приемнику.
В некоторых вариантах осуществления, программируемое логическое устройство (например, программируемая вентильная матрица) может быть использовано, чтобы выполнять некоторые или все из функциональных возможностей способов, описываемых в данном документе. В некоторых вариантах осуществления, программируемая вентильная матрица может взаимодействовать с микропроцессором для того, чтобы выполнять один из способов, описанных в данном документе. Как правило, способы предпочтительно выполняются любым устройством аппаратного обеспечения.
Описанные выше варианты осуществления являются лишь иллюстративными для принципов настоящего изобретения. Следует понимать, что модификации и вариации компоновок и подробностей, описанных в данном документе, будут очевидны специалистам в соответствующей области техники. Вследствие этого, цель состоит в том, чтобы изобретение ограничивалось только объемом предстоящей патентной формулы изобретения, а не конкретными подробностями, представленными в качестве описания и объяснения вариантов осуществления в данном документе.