Кодирование видео при помощи больших макроблоков

Иллюстрации

Показать все

Изобретение относится к кодированию цифрового видео, в частности к видеокодированию на блочной основе. Техническим результатом является повышение эффективности видеокодирования путем использования более высокой степени избыточности, обусловленной увеличением пространственной разрешающей способности и/или частоты кадров. Указанный технический результат достигается тем, что осуществляют кодирование/декодирование видеопотока с использованием макроблоков, содержащих более чем 16x16 пикселов, например 64x64 пиксела. Каждый макроблок разделен на два или более разделов, которые могут быть закодированы с использованием различных режимов, при этом видеокодер сконфигурирован для: приема видеоблока, имеющего размер более 16x16 пикселов; деления видеоблока на разделы; кодирования одного из разделов с использованием первого режима кодирования; кодирования другого раздела с использованием второго режима кодирования, отличающегося от первого режима кодирования; формирования синтаксической информации типа видеоблока, которая указывает размер видеоблока и идентифицирует разделы и режимы кодирования, используемые для кодирования разделов. 8 н. и 40 з.п. ф-лы, 18 ил., 2 табл.

Реферат

Настоящая заявка испрашивает приоритет по предварительным заявкам на патент США № 61/102787, поданной 3 октября 2008 г., № 61/144357, поданной 13 января 2009 г., и № 61/166631, поданной 3 апреля 2009 г., каждая из которых во всей полноте заключена в настоящий документ посредством ссылки.

Настоящая заявка связана с заявками на патент США, поданными на ту же самую дату, как и настоящая заявка, причем все они имеют одинаковое название «КОДИРОВАНИЕ ВИДЕО ПРИ ПОМОЩИ БОЛЬШИХ МАКРОБЛОКОВ», с временно присвоенными номерами в досье поверенного 090033U1, 090033U3, 090033U4, все из которых переуступлены их правопреемнику и настоящим явно заключены в настоящий документ посредством ссылки во всей их полноте для всех целей.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение относится к кодированию цифрового видео, а более конкретно - к блочному кодированию видео.

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

Возможности цифрового видео могут быть заключены во многих приборах, в том числе в цифровых телевизорах, системах цифрового прямого вещания, системах беспроводного вещания, персональных цифровых ассистентах (PDA), ноутбуках или настольных компьютерах, цифровых видеокамерах, цифровых записывающих приборах, приборах для видеоигр, игровых видеоконсолях, сотовых или спутниковых радиотелефонах и т.п. Приборы цифрового видео реализуют методики сжатия видео, например, описанные в стандартах MPEG-2, MPEG-4 ITU-T H.263 или ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное кодирование видео (AVC), и в расширениях данных стандартов для того, чтобы более эффективно передавать и принимать цифровую видеоинформацию.

Методики сжатия видео выполняют пространственное предсказание и/или временное предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для блочного кодирования видео видеокадр или вырезка могут быть разделены на макроблоки. Каждый макроблок может быть дополнительно разделен. При внутрикадровом кодировании (I) кодирование макроблоков кадра или вырезки осуществляется посредством использования пространственного предсказания по отношению к соседним макроблокам. При межкадровом кодировании (P или B) кадра или вырезки макроблоки могут использовать пространственное предсказание по отношению к соседним макроблокам того же самого кадра или вырезки либо временное предсказание по отношению к другим опорным кадрам.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

В целом, в данном раскрытии описываются методики кодирования цифровых видеоданных с использованием больших макроблоков. Большие макроблоки больше, чем макроблоки, обычно предписываемые существующими стандартами кодирования видео. Большинством стандартов кодирования видео предписывается использование макроблока в форме массива пикселов 16x16. В соответствии с данным изобретением кодер и декодер могут использовать большие макроблоки, размер которых больше чем 16x16 пикселов. Например, большой макроблок может быть массивом пикселов 32x32, 64x64 или еще больше.

Кодирование видео основано на пространственной и/или временной избыточности, обеспечивающей возможность сжатия видеоданных. Кадры видео, сформированные при более высоком пространственном разрешении и/или с более высокой частотой кадров, могут обеспечить более высокую избыточность. Использование больших макроблоков, как описано в данном раскрытии, может позволить использовать для методики кодирования видео более высокую степень избыточности, обусловленную увеличением пространственной разрешающей способности и/или частоты кадров. В соответствии с данным изобретением методики кодирования видео могут использовать разнообразные возможности для обеспечения кодирования больших макроблоков.

Как описано в данном раскрытии, методика кодирования больших макроблоков может разделять большой макроблок на разделы и использовать различные размеры разделов и различные режимы кодирования, например различные пространственные (I) или временные (P или B) режимы для выбранных разделов. В качестве другого примера методика кодирования может использовать значения иерархической модели кодирования блока (СВР) для того, чтобы эффективно идентифицировать кодированные макроблоки и разделы, имеющие ненулевые коэффициенты, внутри большого макроблока. В качестве дополнительного примера методика кодирования может сравнивать показатели искажения и скорости, получаемые при кодировании с использованием больших и мелких макроблоков, для выбора размера макроблока, дающего более благоприятные результаты.

В одном примере в раскрытии представлен способ, содержащий кодирование видеоблока, имеющего размер более чем 16x16 пикселов, при помощи видеокодера, формирование синтаксической информации типа блока, которая указывает размер блока, и формирование значения модели кодируемого блока для закодированного блока, причем значение модели кодируемого блока указывает, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент.

В другом примере в раскрытии представлено устройство, содержащее видеокодер, сконфигурированный для кодирования видеоблока, имеющего размер более чем 16x16 пикселов, формирование синтаксической информации типа блока, указывающей размер блока, и формирование значения модели кодируемого блока для закодированного блока, причем значение модели кодируемого блока указывает, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент.

В другом примере в раскрытии представлен компьютерно-читаемый носитель с закодированными инструкциями для побуждения устройства кодирования видео кодировать видеоблок, имеющий размер более чем 16x16 пикселов, формировать синтаксическую информацию типа блока, указывающую размер блока, и формировать значение модели кодируемого блока для закодированного блока, причем значение модели кодируемого блока указывает, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент.

В дополнительном примере в раскрытии представлен способ, содержащий прием при помощи видеодекодера закодированного видеоблока, имеющего размер более чем 16x16 пикселов, прием синтаксической информации типа блока, указывающей размер блока, прием значения модели кодируемого блока для закодированного блока, причем значение модели кодируемого блока указывает, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент, и декодирование закодированного блока на основе синтаксической информации типа блока и значения модели кодируемого блока для закодированного блока.

В дополнительном примере в раскрытии представлено устройство, содержащее видеодекодер, сконфигурированный для приема закодированного видеоблока, имеющего размер более чем 16x16 пикселов, приема синтаксической информации типа блока, указывающей размер блока, приема значения модели кодируемого блока для закодированного блока, причем значение модели кодируемого блока указывает, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент, и декодирования закодированного блока на основе синтаксической информации типа блока и значения модели кодируемого блока для закодированного блока.

В другом примере в раскрытии представлен компьютерно-читаемый носитель, содержащий инструкции для побуждения видеодекодера принимать закодированный видеоблок, имеющий размер более чем 16x16 пикселов, принимать синтаксическую информацию типа блока, указывающую размер блока, и принимать значения модели кодируемого блока для закодированного блока, причем значение модели кодируемого блока указывает, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент, и декодировать закодированный блок на основе синтаксической информации типа блока и значения модели кодируемого блока для закодированного блока.

В другом примере в раскрытии представлен способ, содержащий прием, при помощи видеокодера, видеоблока, имеющего размер более 16x16 пикселов, разделение блока на разделы, кодирование одного из разделов с использованием первого режима кодирования, кодирование другого из разделов с использованием второго режима кодирования, отличного от первого режима кодирования, и формирование синтаксической информации типа блока, которая указывает размер блока и идентифицирует разделы и режимы кодирования, использованные для кодирования разделов.

В дополнительном примере в раскрытии представлено устройство, содержащее видеокодер, сконфигурированный для приема видеоблока, имеющего размер более 16x16 пикселов, разделения блока на разделы, кодирования одного из разделов с использованием первого режима кодирования, кодирования другого из разделов с использованием второго режима кодирования, отличного от первого режима кодирования, формирования синтаксической информации типа блока, которая указывает размер блока и идентифицирует разделы и режимы кодирования, использованные для кодирования разделов.

В другом примере в раскрытии представлен компьютерно-читаемый носитель с закодированными инструкциями для побуждения видеокодера принимать видеоблок, имеющий размер более 16x16 пикселов, разделять блок на разделы, кодировать один из разделов с использованием первого режима кодирования, кодировать другой раздел с использованием второго режима кодирования, отличного от первого режима кодирования, и формировать синтаксическую информацию типа блока, которая указывает размер блока и идентифицирует разделы и режимы кодирования, использованные для кодирования разделов.

В дополнительном примере в раскрытии представлен способ, содержащий прием, при помощи видеодекодера, видеоблока, имеющего размер более 16x16 пикселов, причем блок разделен на разделы, один из разделов закодирован с использованием первого режима кодирования, а другой раздел закодирован с использованием второго режима кодирования, отличного от первого режима кодирования, прием синтаксической информации типа блока, которая указывает размер блока и идентифицирует разделы и режимы кодирования, использованные для кодирования разделов, и декодирование видеоблока на основании синтаксической информации типа блока.

В другом примере в раскрытии представлено устройство, содержащее видеодекодер, сконфигурированный для приема видеоблока, имеющего размер более 16x16 пикселов, причем блок разделен на разделы, один из разделов закодирован с использованием первого режима кодирования, а другой раздел закодирован с использованием второго режима кодирования, отличного от первого режима кодирования, приема синтаксической информации типа блока, которая указывает размер блока и идентифицирует разделы и режимы кодирования, использованные для кодирования разделов, и декодирования видеоблока на основании синтаксической информации типа блока.

В дополнительном примере в раскрытии представлен компьютерно-читаемый носитель с закодированными инструкциями для побуждения видеодекодера принимать видеоблок, имеющий размер более 16x16 пикселов, причем блок разделен на разделы, один из разделов закодирован с использованием первого режима кодирования, а другой раздел закодирован с использованием второго режима кодирования, отличного от первого режима кодирования, принимать синтаксическую информацию типа блока, которая указывает размер блока и идентифицирует разделы и режимы кодирования, использованные для кодирования разделов, и декодировать видеоблок на основании синтаксической информации типа блока.

В другом примере в раскрытии представлен способ, содержащий прием цифровым видеокодером единицы кодирования видео, определение первого показателя искажения и скорости для кодирования единицы кодирования видео, использующего первые видеоблоки с размерами 16x16 пикселов, определение второго показателя искажения и скорости для кодирования единицы кодирования видео, использующего вторые видеоблоки с размерами более 16x16 пикселов, кодирование единицы кодирования видео с использованием первых видеоблоков, когда первый показатель искажения и скорости меньше, чем второй показатель искажения и скорости, и кодирование единицы кодирования видео с использованием вторых видеоблоков, когда второй показатель искажения и скорости меньше, чем первый показатель искажения и скорости.

В дополнительном примере в раскрытии представлено устройство, содержащее видеокодер, сконфигурированный для приема единицы кодирования видео, определения первого показателя искажения и скорости для кодирования единицы кодирования видео, использующего первые видеоблоки с размерами 16x16 пикселов, определения второго показателя искажения и скорости для кодирования единицы кодирования видео, использующего вторые видеоблоки с размерами более 16x16 пикселов, кодирование единицы кодирования видео с использованием первых видеоблоков, когда первый показатель искажения и скорости меньше, чем второй показатель искажения и скорости, и кодирование единицы кодирования видео с использованием вторых видеоблоков, когда второй показатель искажения и скорости меньше, чем первый показатель искажения и скорости.

В другом примере в раскрытии представлен компьютерно-читаемый носитель с закодированными инструкциями для побуждения видеокодера принимать единицу кодирования видео, определять первый показатель искажения и скорости для кодирования единицы кодирования видео, использующего первые видеоблоки с размерами 16x16 пикселов, определять второй показатель искажения и скорости для кодирования единицы кодирования видео, использующего вторые видеоблоки с размерами более 16x16 пикселов, кодировать единицу кодирования видео с использованием первых видеоблоков, когда первый показатель искажения и скорости меньше, чем второй показатель искажения и скорости, и кодировать единицу кодирования видео с использованием вторых видеоблоков, когда второй показатель искажения и скорости меньше, чем первый показатель искажения и скорости.

В другом примере в раскрытии представлен способ, содержащий кодирование, с помощью видеокодера, кодируемой единицы, содержащей множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, и формирование синтаксической информации для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого из множества видеоблоков в кодируемой единице.

В другом примере в раскрытии представлено устройство, содержащее видеокодер, сконфигурированный для того, чтобы кодировать кодируемую единицу, содержащую множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, и формировать синтаксическую информацию для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого из множества видеоблоков в кодируемой единице.

В другом примере в раскрытии представлено устройство, содержащее средство для кодирования кодируемой единицы, содержащей множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, и средство для формирования синтаксической информации для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого из множества видеоблоков в кодируемой единице.

В другом примере в раскрытии представлен компьютерно-читаемый носитель с закодированными инструкциями для побуждения программируемого процессора кодировать кодируемую единицу, содержащую множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, и формировать синтаксическую информацию для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого из множества видеоблоков в кодируемой единице.

В другом примере в раскрытии представлен способ, содержащий прием, с помощью видеодекодера, кодируемой единицы, содержащей множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, прием синтаксической информации для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого видеоблока из множества видеоблоков в кодируемой единице, выбор декодера синтаксиса типа блока согласно максимальному значению размера и декодирование каждого из множества видеоблоков в кодируемой единице, с использованием декодера синтаксиса типа блока.

В другом примере в раскрытии представлено устройство, содержащее видеодекодер, сконфигурированный для приема кодируемой единицы, содержащей множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, приема синтаксической информации для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого видеоблока из множества видеоблоков в кодируемой единице, выбора декодера синтаксиса типа блока согласно максимальному значению размера и декодирования каждого из множества видеоблоков в кодируемой единице, с использованием декодера синтаксиса типа блока.

В другом примере в раскрытии представлено средство для приема кодируемой единицы, содержащей множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, средство для приема синтаксической информации для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого видеоблока из множества видеоблоков в кодируемой единице, средство для выбора декодера синтаксиса типа блока согласно максимальному значению размера и средство для декодирования каждого видеоблока из множества видеоблоков в кодируемой единице, с использованием декодера синтаксиса типа блока.

В другом примере в раскрытии представлен компьютерно-читаемый носитель с закодированными инструкциями для побуждения программируемого процессора принимать кодируемую единицу, содержащую множество видеоблоков, причем из множества видеоблоков, по меньшей мере, один имеет размер больше чем 16x16 пикселов, принимать синтаксическую информацию для кодируемой единицы, которая включает в себя максимальное значение размера, причем максимальное значение размера указывает на размер самого большого видеоблока из множества видеоблоков в кодируемой единице, выбирать декодер синтаксиса типа блока согласно максимальному значению размера и декодировать каждый видеоблок из множества видеоблоков в кодируемой единице, с использованием декодера синтаксиса типа блока.

Подробности одного или более примеров изложены ниже в сопроводительных фигурах и в описании. Прочие признаки, цели и достоинства будут ясны из описания и чертежей, и из формулы изобретения.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

На фиг.1 представлена функциональная схема, иллюстрирующая пример системы кодирования и декодирования видео, которая осуществляет кодирование и декодирование цифровых видеоданных с использованием больших макроблоков.

На фиг.2 представлена функциональная схема, иллюстрирующая пример видеокодера, реализующего способ кодирования больших макроблоков.

На фиг.3 представлена функциональная схема, иллюстрирующая пример видеодекодера, реализующего способ декодирования больших макроблоков.

На фиг.4A представлена концептуальная схема, иллюстрирующая разделение большого макроблока по различным уровням.

На фиг.4B представлена концептуальная схема, иллюстрирующая назначение различных режимов кодирования различным разделам большого макроблока.

На фиг.5 представлена концептуальная схема, иллюстрирующая иерархический обзор различных уровней большого макроблока.

На фиг.6 представлена функциональная схема, иллюстрирующая пример способа установки значения модели кодируемого блока (СВР) большого макроблока 64x64 пиксела.

На фиг.7 представлена функциональная схема, иллюстрирующая пример способа установки значения модели кодируемого блока (СВР) раздела 32x32 пиксела большого макроблока 64x64 пиксела.

На фиг.8 представлена функциональная схема, иллюстрирующая пример способа установки значения модели кодируемого блока (СВР) раздела 16x16 пикселов раздела 32x32 пиксела большого макроблока 64x64 пиксела.

На фиг.9 представлена функциональная схема, иллюстрирующая пример способа для определения двухбитового значения luma16x8_CBP.

На фиг.10 представлена функциональная схема, иллюстрирующая пример компоновки большого макроблока 64x64 пиксела.

На фиг.11 представлена функциональная схема, иллюстрирующая пример способа вычисления оптимального разделения и способов кодирования для большого видеоблока NxN пикселов.

На фиг.12 представлена функциональная схема, иллюстрирующая пример различных вариантов разделения макроблока 64x64 пиксела и выбранных способов кодирования для каждого раздела.

На фиг.13 представлена функциональная схема, иллюстрирующая пример способа определения оптимального размера макроблока для кодирования кадра видеопоследовательности.

На фиг.14 представлена функциональная схема, иллюстрирующая пример прибора беспроводной связи, включающего в себя видеокодер/декодер (CODEC, кодек), который осуществляет кодирование цифровых видеоданных с использованием больших макроблоков.

На фиг.15 представлена функциональная схема, иллюстрирующая пример представления массива иерархического представления СВР для большого макроблока.

На фиг.16 представлена функциональная схема, иллюстрирующая пример древовидной структуры, соответствующей иерархическому представлению СВР на фиг.15.

На фиг.17 представлена функциональная схема, иллюстрирующая пример способа использования синтаксической информации кодируемой единицы для того, чтобы указать и выбрать кодеры и декодеры блочного синтаксиса, для видеоблоков кодируемой единицы.

ПОДРОБНОЕ ОПИСАНИЕ

В данном раскрытии описываются методики кодирования и декодирования цифровых видеоданных с использованием больших макроблоков. Большие макроблоки больше, чем макроблоки, обычно предписываемые существующими стандартами кодирования видео. Большинством стандартов кодирования видео предписывается использование макроблока в форме массива пикселов размером 16x16 пикселов. В соответствии с данным изобретением кодер и/или декодер могут использовать большие макроблоки, размер которых больше чем 16x16 пикселов. В качестве примеров большой макроблок может быть массивом пикселов 32x32 пиксела, 64x64 пиксела или, возможно, еще больше.

Вообще термин «макроблок», как он используется в данном раскрытии, может относиться к структуре данных для массива пикселов, имеющего определенный размер, выраженный как NxN пикселов, где N - положительное целочисленное значение. Макроблок может определять четыре блока яркости, каждый из которых содержит массив из (N/2)x(N/2) пикселов, два блока цветности, каждый из которых содержит массив из NxN пикселов, и заголовок, содержащий информацию типа макроблока и информацию о модели кодируемого блока (СВР), как более подробно обсуждается ниже.

Традиционными стандартами кодирования видео обычно предписывается, чтобы определенный размер макроблока составлял массив 16x16 пикселов. В соответствии с различными методиками, описанными в данном раскрытии, макроблоки могут содержать массивы NxN пикселов, где N может быть больше 16. Аналогичным образом традиционными стандартами кодирования видео обычно предписывается, чтобы при межкадровом кодировании макроблоку назначался единственный вектор движения. В соответствии с различными методиками, описанными в данном раскрытии, множество векторов движения может быть назначено для межкадрово закодированных разделов макроблока NxN, как это более подробно описано ниже. Ссылки на «большие макроблоки» или аналогичные фразы в общем случае относятся к макроблокам с массивами пикселов больше чем 16x16.

В некоторых случаях большие макроблоки могут обеспечивать улучшения в эффективности кодирования и/или сокращения издержек на передачу данных при сохранении или возможном улучшении качества изображения. Например, использование больших макроблоков может позволить видеокодеру и/или декодеру использовать преимущества увеличенной избыточности, предоставляемой видеоданными, сформированными при увеличенной пространственной разрешающей способности (например, 1280x720 или 1920x1080 пикселов на кадр) и/или при увеличенной частоте кадров (например, 30 или 60 кадров в секунду).

В качестве иллюстрации цифровая видеопоследовательность с пространственным разрешением 1280x720 пикселов на кадр и частотой 60 кадров в секунду, в пространственном отношении в 36 раз больше и во временном отношении в 4 раза быстрее, чем цифровая видеопоследовательность с пространственным разрешением 176x144 пиксела на кадр и частотой 15 кадров в секунду. По мере увеличения размера макроблока видеокодер и/или декодер может лучше использовать увеличенную пространственную и/или временную избыточность для сжатия видеоданных.

Кроме того, при использовании больших макроблоков может быть закодировано меньшее число блоков для данного кадра или вырезки, что уменьшает объем передаваемой служебной информации. Иными словами, большие макроблоки могут позволить сократить общее количество макроблоков, кодируемых по каждому кадру или вырезке. Если бы пространственное разрешение кадра было бы увеличено, например, в четыре раза, то вчетверо возросло бы количество макроблоков 16x16, необходимых для обеспечения требуемого количества пикселов в кадре. В данном примере при макроблоках 64x64 количество макроблоков, необходимых для обеспечения возросшей пространственной разрешающей способности, уменьшается. По мере сокращения количества макроблоков на кадр или на вырезку может быть, например, сокращен общий объем кодирования информации, такой как синтаксическая информация, данные о векторе движения, и т.п.

В данном раскрытии размер макроблока, в общем, соотносится с количеством пикселов, вмещающихся в макроблоке, например 64x64, 32x32, 16x16 и т.п. Следовательно, большой макроблок (например, 64x64 или 32x32) может считаться большим в том смысле, что он вмещает в себя большее число пикселов, чем макроблок 16x16. Однако пространственная область, определенная вертикальными и горизонтальными измерениями большого макроблока, то есть как часть области, определенная вертикальными и горизонтальными измерениями видеокадра, может быть либо может не быть больше, чем область обычного макроблока 16x16. В некоторых примерах зона большого макроблока может быть равной или подобной обычному макроблоку 16x16. Однако большой макроблок имеет более высокую пространственную разрешающую способность, характеризуемую большим числом пикселов и большей пространственной плотностью пикселов, в пределах макроблока.

Размер макроблока может быть сконфигурирован, по меньшей мере, частично, на основании количества пикселов в кадре, то есть пространственной разрешающей способности кадра. Если в кадре имеется большее количество пикселов, то может быть сформирован большой макроблок, имеющий большее количество пикселов. В качестве иллюстрации видеокодер может быть сконфигурирован, чтобы использовать макроблок 32x32 пиксела для кадра 1280x720 пикселов, отображаемого с частотой 30 кадров в секунду. В качестве другой иллюстрации видеокодер может быть сконфигурирован, чтобы использовать макроблок 64x64 пиксела для кадра 1280x720 пикселов, отображаемого с частотой 60 кадров в секунду.

Для каждого макроблока, закодированного кодером, могут потребоваться данные, описывающие одну или более характеристик макроблока. Эти данные могут указывать, например, данные типа макроблока для того, чтобы представить размер макроблока, способ разделения макроблока и режим кодирования (пространственный или временной), применяемый к макроблоку и/или к его разделам. Кроме того, данные могут включать в себя данные разности векторов движения (mvd), представляющие, наряду с другими элементами синтаксиса, информацию о векторе движения для макроблока и/или его разделов. Данные также могут включать в себя значение модели кодируемого блока (СВР), наряду с другими элементами синтаксиса для того, чтобы представить информацию остатка после предсказания. Данные типа макроблока могут быть представлены в единственном заголовке макроблока для большого макроблока.

Как упомянуто выше, при использовании большого макроблока кодер может сократить количество макроблоков в кадре или вырезке, и, таким образом, уменьшается объем служебной информации, передаваемой по сети, для каждого кадра или вырезки. Также при использовании большого макроблока может уменьшиться общее количество макроблоков для конкретного кадра или вырезки, что может снизить количество артефактов «блочности» видео, отображаемого пользователю.

Методики кодирования видео, описанные в данном раскрытии, могут использовать одну или более функций для обеспечения возможности кодирования больших макроблоков. Например, большой макроблок может быть разделен на меньшие разделы. К выбранным разделам в пределах большого макроблока могут быть применены различные режимы кодирования, например различные пространственные (I) или временные (P или B) режимы кодирования. Кроме того, иерархические значения модели кодируемого блока (СВР) могут быть использованы для эффективной идентификации закодированных макроблоков и разделов, имеющих ненулевые коэффициенты преобразования, представляющие данные остатка. Кроме того, показатели искажения и скорости могут быть сравнены для кодирования с использованием макроблоков больших и мелких размеров для того, чтобы выбрать оптимальный размер макроблока, дающий благоприятные результаты. Более того, кодируемая единица (например, кадр, вырезка, последовательность или группа изображений), содержащий макроблоки различных размеров, может включать в себя элемент синтаксиса, который указывает размер самого большого макроблока в кодируемой единице. Как более подробно описано ниже, большие макроблоки имеют иной синтаксис уровня блоков, чем стандартные блоки размером 16x16 пикселов. Соответственно, посредством указания размера самого большого макроблока в кодируемой единице кодер может сообщить декодеру, какой синтаксис уровня блоков следует применить к макроблокам кодируемой единицы.

Использование различных режимов кодирования для различных разделов в большом макроблоке может считаться смешанным режимом кодирования больших макроблоков. Вместо того чтобы осуществлять кодирование большого макроблока единообразно, так, чтобы для всех разделов использовался одинаковый внутрикадровый либо межкадровый режим кодирования, большой макроблок может быть закодирован таким образом, что в некоторых разделах использовались бы различные режимы кодирования, такие как различные режимы внутрикадрового кодирования (например, I_16x16, I_8x8, I_4x4), либо внутрикадровые и межкадровые режимы кодирования.

Если большой макроблок разделен на два или более разделов, то, например, по меньшей мере, один раздел может быть закодирован с помощью первого режима, а другой раздел может быть закодирован с помощью второго режима, отличающегося от первого режима. В некоторых случаях первый режим может быть первым I-режимом, а второй режим может быть вторым I-режимом, отличающимся от первого I-режима. В других случаях первый режим может быть I-режимом, а второй режим может быть режимом P или В. Следовательно, в некоторых примерах большой макроблок может включать в себя один или более временным образом (P или B) закодированных разделов и один или более пространственным образом (I) закодированных разделов, или один или более пространственным образом закодированных разделов с помощью различных I-режимов.

Одно или более значений иерархической модели кодируемого блока (СВР) могут быть использованы для исчерпывающего описания, имеется ли в каких-либо разделах большого макроблока, по меньшей мере, один ненулевой коэффициент преобразования, и, если имеется, то в каких именно разделах. Коэффициенты преобразования используются для кодирования данных остатка для большого макроблока. Бит СВР уровня большого макроблока указывает, включает ли в себя какой-либо раздел в большом макроблоке ненулевой, квантованный коэффициент. Если нет, то нет необходимости рассматривать, имеется ли у какого-либо раздела коэффициент, отличный от нуля, поскольку известно, что у всего большого макроблока нет никаких ненулевых коэффициентов. В этом случае может быть использован макроблок предсказания для того, чтобы декодировать макроблок без данных остатка.

Альтернативно, если значение СВР уровня макроблока указывает, что, по меньшей мере, у одного раздела в большом макроблоке имеется ненулевой коэффициент, тогда значения СВР уровня раздела могут быть проанализированы для того, чтобы идентифицировать, какой из разделов включает в себя, по меньшей мере, один ненулевой коэффициент. Затем декодер может извлечь соответствующие данные остатка для разделов, имеющих, по меньшей мере, один ненулевой коэффициент, и декодировать разделы, используя данные остатка и данные блока предсказания. В некоторых случаях один или более разделов могут иметь ненулевые коэффициенты и поэтому включают в себя значения СВР уровня раздела с соответствующим указанием. Как большой макроблок, так и, по меньшей мере, некоторые разделы могут быть больше чем 16x16 пикселов.

Для того чтобы выбрать размеры макроблока, дающие благоприятные показатели искажения и скорости, показатели искажения и скорости могут быть проанализированы как для больших макроблоков (например, 32x32 или 64x64), так и для мелких макроблоков (например, 16x16). Например, кодер может сравнить показатели искажения и скорости между макроблоками 16x16, макроблоками 32x32 и макроблоками 64x64 для кодируемой единицы, такой как кадр или вырезка. Затем кодер может выбрать размер макроблока, который приводит к наилучшему показателю искажения и скорости, и осуществить кодирование кодируемой единицы, используя выбранный размер макроблока, то есть размер макроблока, соответствующий наилучшему показателю искажения и скорости.

Выбор может быть основан на кодировании кадра или вырезки за три или более прохода, например при первом проходе используются макроблоки 16x16 пикселов, при втором проходе используются макроблоки 32x32 пиксела и при третьем проходе используются макроблоки 64x64 пиксела, и сравнении показателей искажения и скорости для каждого прохода. Таким образом, кодер может оптимизировать показатель искажения и скорости посредством изменения размера макроблока и выбора размера макроблока, дающего наилучшую или оптимальную величину искажения и скорости для данной кодируемой единицы, такой как вырезка или кадр. Кодер может далее передать синтаксическую информацию для кодируемой единицы, например, как часть заголовка кадра или заголовка вырезки, которая идентифицирует размер макроблоков, используемых в кодируемой единице. Как описано более подробно ниже, синтаксическая информация для кодируемой единицы может содержать указатель максимального размера, который указывает максимальный размер макроблоков, используемых в кодируемой единице. Таким образом, кодер может информировать декодер о том, какой синтаксис следует ожидать для макроблоков кодируемой единицы. Когда максимальный размер макроблоков составляет 16x16 пикселов, декодер может использовать стандартный синтаксис H.264 и проводить синтаксический анализ макроблоков согласно синтаксису H.264. Однако когда максимальный размер макроблоков превышает 16x16, например составляет 64x64 пиксела, декодер может ожидать измененных и/или дополнительных элементов синтаксиса, предназначенных для обработки больших макроблоков, как описано в данном раскрытии, и про