КОДИРОВАНИЕ ВИДЕО ПРИ ПОМОЩИ БОЛЬШИХ МАКРОБЛОКОВ
VIDEO CODING WITH LARGE MACROBLOCKS

[0001] Данная заявка испрашивает приоритет по Предварительным Заявкам на патент США №61/102787, поданной 3 октября 2008 г., 61/144357, поданной 13 января 2009 г. и 61/166631, поданной 3 апреля 2009г., каждая из которых во всей своей полноте заключена в настоящее описание посредством ссылки.
[0002] Данная заявка связана с Заявками на патент США, которые имеют дату подачи точно такую же, как и у настоящей заявки, и точно такое же название, «VIDEO CODING WITH LARGE MACROBLOCKS» (с временно присвоенными Номерами в Досье Поверенного 090033U2, 090033U3, 090033U4), и все из которых, переуступлены их правопреемнику, и настоящим в прямой форме включены в настоящее описание во всей своей полноте посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0003] Изобретение относится к кодированию цифрового видео и, в частности, к кодированию видео, основанному на блоках.
УРОВЕНЬ ТЕХНИКИ
[0004] Возможности цифрового видео могут быть заключены в широкое многообразие приборов, включая цифровые телевизоры, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), ноутбуки или настольные компьютеры, приборы цифровой записи, приборы видеоигр, игровые видеоконсоли, сотовые или спутниковые радиотелефоны и подобное. Приборы цифрового видео реализуют методики сжатия видео, такие как те, что описаны в стандартах, заданных как MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Часть 10, Улучшенное Кодирование Видео (AVC), и улучшения таких стандартов для более эффективной передачи и приема информации цифрового видео.
[0005] Методики сжатия видео выполняют пространственное предсказание и/или временное предсказание для сокращения или удаления избыточности, свойственной видеопоследовательностям. Применительно к кодированию видео, основанному на блоках, видеокадр или вырезка могут быть разделены на макроблоки. Каждый макроблок может быть дополнительно разделен. Макроблоки в кадре или в вырезке с внутрикадровым кодированием (I) кодируются с использованием пространственного предсказания в отношении соседних макроблоков. Макроблоки в кадре или в вырезке с межкадровым кодированием (P или B) могут использовать пространственное предсказание в отношении соседних макроблоков в том же самом кадре или в вырезке или временное предсказание в отношении других опорных кадров.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом, изобретение описывает методики кодирования данных цифрового видео с использованием больших макроблоков. Большие макроблоки являются более крупными, чем макроблоки, как правило, предписанные существующими стандартами кодирования видео. Большинство стандартов кодирования видео предписывают использование макроблока в виде 16×16-пиксельного массива. В соответствии с данным изобретением, кодер и декодер могут использовать большие макроблоки, которые по размеру больше чем 16×16 пикселей. В качестве примеров, большие макроблоки могут обладать 32×32, 64×64 или большим массивом пикселей.
[0007] Кодирование видео основывается на пространственной и/или временной избыточности, чтобы обеспечивать сжатие видеоданных. Видеокадры, сформированные с более высоким пространственным разрешением и/или более высокой частотой кадров, могут обеспечивать большую избыточность. Использование больших макроблоков, как описано в данном изобретении, может предоставить методике кодирования видео возможность использования более высокого уровня избыточности, создаваемого по мере роста пространственного разрешения и/или частоты кадров. В соответствии с данным изобретением, методики кодирования видео могут использовать разнообразные возможности для обеспечения кодирования больших макроблоков.
[0008] Как описано в данном изобретении, методика кодирования большого макроблока может разделять большой макроблок на разделы и использовать разные размеры разделов и разные режимы кодирования, например разные пространственные (I) или временные (P или B) режимы для выбранных разделов. В качестве другого примера, методика кодирования может использовать значения иерархической модели кодируемых блоков (CBP) для эффективной идентификации кодируемых макроблоков и разделов внутри больших макроблоков, обладающих ненулевыми коэффициентами. В качестве дополнительного примера, методика кодирования может сравнивать показатели искажения и скорости, получаемые при кодировании с использованием больших и маленьких макроблоков, для выбора размера макроблока, дающего более благоприятные результаты.
[0009] В одном примере, изобретение предоставляет способ, содержащий: кодирование, при помощи кодера видео, видеоблока, обладающего размером, большим чем 16×16 пикселей; формирование информации синтаксиса типа блоков, которая указывает размер блока; и формирование значения модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент.
[0010] В другом примере, изобретение предоставляет устройство, содержащее кодер видео, сконфигурированный для: кодирования видеоблока, обладающего размером, большим чем 16×16 пикселей; формирования информации синтаксиса типа блоков, которая указывает размер блока; и формирования значения модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент.
[0011] В другом примере, изобретение предоставляет компьютерно-читаемый носитель информации с закодированными на нем инструкциями, которые предписывают устройству кодирования видео: закодировать, при помощи кодера видео, видеоблок, обладающий размером, большим чем 16×16 пикселей; сформировать информацию синтаксиса типа блоков, которая указывает размер блока; и сформировать значение модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент.
[0012] В дополнительном примере, изобретение предоставляет способ, содержащий: прием, при помощи декодера видео, закодированного видеоблока, обладающего размером, большим чем 16×16 пикселей; прием информации синтаксиса типа блоков, которая указывает размер закодированного блока; прием значения модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент; и декодирование закодированного блока на основании информации синтаксиса типа блоков и значения модели кодируемых блоков для закодированного блока.
[0013] В дополнительном примере, изобретение предоставляет устройство, содержащее декодер видео, сконфигурированный для: приема закодированного видеоблока, обладающего размером, большим чем 16×16 пикселей; приема информации синтаксиса типа блоков, которая указывает размер закодированного блока; приема значения модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент; и декодирования закодированного блока на основании информации синтаксиса типа блоков и значения модели кодируемых блоков для закодированного блока.
[0014] В другом примере, изобретение предоставляет компьютерно-читаемый носитель информации, содержащий инструкции, предписывающие декодеру видео: принять закодированный видеоблок, обладающий размером, большим чем 16×16 пикселей; принять информацию синтаксиса типа блоков, которая указывает размер закодированного блока; принять значение модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент; и декодировать закодированный блок на основании информации синтаксиса типа блоков и значения модели кодируемых блоков для закодированного блока.
[0015] В другом примере, изобретение предоставляет способ содержащий: прием, при помощи кодера видео, видеоблока, обладающего размером, большим чем 16×16 пикселей; разделение блока на разделы; кодирование одного из разделов, используя первый режим кодирования; кодирование других разделов, используя второй режим кодирования, отличный от первого режима кодирования; и формирование информации синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов.
[0016] В дополнительном примере, изобретение предоставляет устройство, содержащее кодер видео, сконфигурированный для: приема видеоблока, обладающего размером, большим чем 16×16 пикселей; разделения блока на разделы; кодирования одного из разделов, используя первый режим кодирования; кодирования других разделов, используя второй режим кодирования, отличный от первого режима кодирования; формирования информации синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов.
[0017] В другом примере, изобретение предоставляет компьютерно-читаемый носитель информации с закодированными на нем инструкциями, предписывающими кодеру видео: принять видеоблок, обладающий размером, большим чем 16×16 пикселей; разделить блок на разделы; закодировать один из разделов, используя первый режим кодирования; закодировать другие разделы, используя второй режим кодирования, отличный от первого режима кодирования; и сформировать информацию синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов.
[0018] В дополнительном примере, изобретение предоставляет способ, содержащий: прием, при помощи декодера видео, видеоблока, обладающего размером, большим чем 16×16 пикселей, при этом блок разделен на разделы, и один из разделов закодирован при помощи первого режима кодирования, а другие разделы закодированы при помощи второго режима кодирования, отличного от первого режима кодирования; прием информации синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов; и декодирование видеоблока на основании информации синтаксиса типа блоков.
[0019] В другом примере, изобретение предоставляет устройство, содержащее декодер видео, сконфигурированный для: приема видеоблока, обладающего размером, большим чем 16×16 пикселей, при этом блок разделен на разделы, и один из разделов закодирован при помощи первого режима кодирования, а другие разделы закодированы при помощи второго режима кодирования, отличного от первого режима кодирования; приема информации синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов; и декодирования видеоблока на основании информации синтаксиса типа блоков.
[0020] В дополнительном примере, изобретение предоставляет компьютерно-читаемый носитель информации с закодированными на нем инструкциями, предписывающими декодеру видео: принять видеоблок, обладающий размером, большим чем 16×16 пикселей, при этом блок разделен на разделы, и один из разделов закодирован при помощи первого режима кодирования, а другие разделы закодированы при помощи второго режима кодирования, отличного от первого режима кодирования; принять информацию синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов; и декодировать видеоблок на основании информации синтаксиса типа блоков.
[0021] В другом примере, изобретение предоставляет способ, содержащий: прием, при помощи кодера цифрового видео, единицы кодирования видео; определение первого показателя искажения и скорости для кодирования единицы кодирования видео, использующего первые видеоблоки с размерами 16×16 пикселей; определение второго показателя искажения и скорости для кодирования единицы кодирования видео, использующего вторые видеоблоки с размерами, большими чем 16×16 пикселей; кодирование единицы кодирования видео с использованием первых видеоблоков, если первый показатель искажения и скорости меньше второго показателя искажения и скорости; и кодирование единицы кодирования видео с использованием вторых видеоблоков, если второй показатель искажения и скорости меньше первого показателя искажения и скорости.
[0022] В дополнительном примере, изобретение предоставляет устройство, содержащее кодер видео, сконфигурированный для: приема единицы кодирования видео; определения первого показателя искажения и скорости для кодирования единицы кодирования видео, использующего первые видеоблоки с размерами 16×16 пикселей; определения второго показателя искажения и скорости для кодирования единицы кодирования видео, использующего вторые видеоблоки с размерами, большими чем 16×16 пикселей; кодирования единицы кодирования видео с использованием первых видеоблоков, если первый показатель искажения и скорости меньше второго показателя искажения и скорости; и кодирование единицы кодирования видео с использованием вторых видеоблоков, если второй показатель искажения и скорости меньше первого показателя искажения и скорости.
[0023] В другом примере, изобретение предоставляет компьютерно-читаемый носитель информации, с закодированными на нем инструкциями, предписывающими кодеру видео: принять единицу кодирования видео; определить первый показатель искажения и скорости для кодирования единицы кодирования видео, использующего первые видеоблоки с размерами 16×16 пикселей; определить второй показатель искажения и скорости для кодирования единицы кодирования видео, использующего вторые видеоблоки с размерами, большими чем 16×16 пикселей; кодировать единицу кодирования видео, используя первые видеоблоки, если первый показатель искажения и скорости меньше второго показателя искажения и скорости; и кодировать единицы кодирования видео, используя вторые видеоблоки, если второй показатель искажения и скорости меньше первого показателя искажения и скорости.
[0024] В другом примере, изобретение предоставляет способ, содержащий: кодирование, при помощи кодера видео, кодируемой единицы, содержащей множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей; и формирование информации синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице.
[0025] В другом примере, изобретение предоставляет устройство, содержащее кодер видео, сконфигурированный для: кодирования кодируемой единицы, содержащей множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей; и формирования информации синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице.
[0026] В другом примере, изобретение предоставляет устройство, содержащее средство для кодирования кодируемой единицы, содержащей множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей, и средство для формирования информации синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице.
[0027] В другом примере, изобретение предоставляет компьютерно-читаемый носитель информации с закодированными на нем инструкциями, предписывающими программируемому процессору закодировать кодируемую единицу, содержащую множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей, и сформировать информацию синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице.
[0028] В другом примере, изобретение предоставляет способ, содержащий: прием, при помощи декодера видео, кодируемой единицы, содержащей множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей; прием информации синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице; выбор декодера синтаксиса типа блоков в соответствии со значением максимального размера; и декодирование каждого из множества видеоблоков в единице кодирования с использованием выбранного декодера синтаксиса типа блоков.
[0029] В другом примере, изобретение предоставляет устройство, содержащее декодер видео, сконфигурированный для: приема единицы кодирования, содержащей множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей; приема информации синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице; выбора декодера синтаксиса типа блоков в соответствии со значением максимального размера; и декодирования каждого из множества видеоблоков в кодируемой единице с использованием выбранного декодера синтаксиса типа блоков.
[0030] В другом примере, изобретение предоставляет средство для приема кодируемой единицы, содержащей множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей, средство для приема информации синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице, средство для выбора декодера синтаксиса типа блоков в соответствии со значением максимального размера и средство для декодирования каждого из множества видеоблоков в кодируемой единице с использованием выбранного декодера синтаксиса типа блоков.
[0031] В другом примере, изобретение предоставляет компьютерно-читаемый носитель информации с закодированными на нем инструкциями, предписывающими программируемому процессору: принять кодируемую единицу, содержащую множество видеоблоков, при этом, по меньшей мере, один из множества видеоблоков содержит размер, больший чем 16×16 пикселей; принять информацию синтаксиса для кодируемой единицы, которая включает в себя значение максимального размера, при этом значение максимального размера указывает размер наибольшего одного из множества видеоблоков в кодируемой единице; выбрать декодер синтаксиса типа блоков в соответствии со значением максимального размера; и декодировать каждый из множества видеоблоков в кодируемой единице, используя выбранный декодер синтаксиса типа блоков.
[0032] Подробности одного или более примеров изложены в сопроводительных чертежах и нижеследующем описании. Прочие признаки, цели и преимущества станут очевидны из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0033] Фиг. 1 является структурной схемой, иллюстрирующей пример системы кодирования и декодирования видео, которая кодирует и декодирует данные цифрового видео, используя большие макроблоки.
[0034] Фиг. 2 является структурной схемой, иллюстрирующей пример кодера видео, который реализует методики кодирования больших макроблоков.
[0035] Фиг. 3 является структурной схемой, иллюстрирующей пример декодера видео, который реализует методики кодирования больших макроблоков.
[0036] Фиг. 4A является концептуальной схемой, иллюстрирующей разделение большого макроблока по различным уровням.
[0037] Фиг. 4B является концептуальной схемой, иллюстрирующей разные режимы кодирования для разных разделов большого макроблока.
[0038] Фиг. 5 является концептуальной схемой, иллюстрирующей иерархический вид различных уровней большого макроблока.
[0039] Фиг. 6 является блок-схемой, иллюстрирующей примерный способ установки значения модели кодируемых блоков (CBP) 64×64-пиксельного большого макроблока.
[0040] Фиг. 7 является блок-схемой, иллюстрирующей примерный способ установки значения CBR 32×32-пиксельного раздела 64×64-пиксельного большого макроблока.
[0041] Фиг. 8 является блок-схемой, иллюстрирующей примерный способ установки значения CBP 16×16-пиксельного раздела 32×32-пиксельного раздела 64×64-пиксельного большого макроблока.
[0042] Фиг. 9 является блок-схемой, иллюстрирующей примерный способ определения двухбитного значения luma16×8_CBP.
[0043] Фиг. 10 является структурной схемой, иллюстрирующей примерную компоновку 64×64-пиксельного большого макроблока.
[0044] Фиг. 11 является блок-схемой, иллюстрирующей примерный способ вычисления оптимального разделения и способов кодирования для N×N-пиксельного большого видеоблока.
[0045] Фиг. 12 является структурной схемой, иллюстрирующей примерный 64×64-пиксельный макроблок с разными разделами и выбранными способами кодирования для каждого раздела.
[0046] Фиг. 13 является блок-схемой, иллюстрирующей примерный способ определения оптимального размера макроблока для кодирования кадра видеопоследовательности.
[0047] Фиг. 14 является структурной схемой, иллюстрирующей примерный прибор беспроводной связи, включающий в себя кодер/декодер (КОДЕК) видео, который кодирует данные цифрового видео, используя большие макроблоки.
[0048] Фиг. 15 является структурной схемой, иллюстрирующей примерное представление в виде массива иерархического представления CBP для большого макроблока.
[0049] Фиг. 16 является структурной схемой, иллюстрирующей примерную древовидную структуру, соответствующую иерархическому представлению CBP на Фиг. 15.
[0050] Фиг. 17 является блок-схемой, иллюстрирующей примерный способ использования информации синтаксиса кодируемой единицы для указания и выбора кодеров и декодеров синтаксиса, основанного на блоках для видеоблоков кодируемой единицы.
ПОДРОБНОЕ ОПИСАНИЕ
[0051] Изобретение описывает методики кодирования и декодирования данных цифрового видео с использованием больших макроблоков. Большие макроблоки больше макроблоков, которые, как правило, предписаны существующими стандартами кодирования видео. Большинство стандартов кодирования видео предписывают использование макроблока в виде 16×16-пиксельного массива. В соответствии с изобретением, кодер и/или декодер может использовать большие макроблоки, которые размером больше чем 16×16 пикселей. В качестве примеров, большой макроблок может иметь 32×32, 64×64 или даже возможно больший массив пикселей.
[0052] Как правило, макроблок, в соответствии с тем, как это понятие используется в изобретении, может относиться к структуре данных применительно к массиву пикселей, который имеет заданный размер, выраженный как N×N пикселей, где N является положительным целочисленным значением. Макроблок может задавать четыре блока яркости, каждый из которых содержит массив из (N/2)×(N/2) пикселей, два блока цветности, каждый из которых содержит массив из N×N пикселей и заголовок, содержащий информацию типа макроблока и информацию модели кодируемых блоков (CBP), как рассматривается более подробно ниже.
[0053] Обычные стандарты кодирования видео обычно предписывают, что заданным размером макроблока является 16×16-пиксельный массив. В соответствии с различными описанными в данном изобретении методиками, макроблоки могут содержать массив из N×N пикселей, где N может быть больше 16. Также обычные стандарты кодирования видео предписывают, что макроблоку с межкадровым кодированием, как правило, назначается один вектор движения. В соответствии с различными описанными в данном изобретении методиками, разделам с межкадровым кодированием макроблока N×N может быть назначено множество векторов движения, как описывается более подробно ниже. Упоминание «больших макроблоков» или подобного словосочетания, как правило, относится к макроблокам с массивом пикселей, большим чем 16×16.
[0054] В некоторых случаях, большие макроблоки могут обеспечивать улучшение эффективности кодирования и/или сокращение затрат на передачу данных, сохраняя при этом или возможно улучшая качество изображения. Например, использование больших макроблоков может предоставить возможность кодеру и/или декодеру видео использовать преимущество увеличенной избыточности, предоставляемое данными видео, формируемыми с увеличенным пространственным разрешением (например, 1280×720 или 1920×1080 пикселей на кадр) и/или увеличенной частоты кадров (например, 30 или 60 кадров в секунду).
[0055] В качестве иллюстрации, последовательность цифрового видео с пространственным разрешением 1280×720 пикселей на кадр и частотой кадров, составляющей 60 кадров в секунду, в пространственном отношении в 36 раз больше и во временном отношении в 4 раза быстрее, чем последовательность цифрового видео с пространственным разрешением 176×144 пикселей на кадр и частотой кадров, составляющей 15 кадров в секунду. При помощи увеличенного размера макроблока, кодер и/или декодер видео может лучше использовать пространственную и/или временную избыточность для обеспечения сжатия видеоданных.
[0056] Также посредством использования более крупных макроблоков, может кодироваться меньшее число блоков для заданного кадра или вырезки, уменьшая объем служебной информации, которую требуется передать. Другими словами, более крупные макроблоки могут предоставить возможность сокращения общего числа макроблоков, кодируемых на каждый кадр или вырезку. Если пространственное разрешение кадра увеличивается, например, в четыре раза, то тогда для пикселей в кадре потребуется в четыре раза больше макроблоков 16×16. В этом примере, число макроблоков, требуемых для обработки возросшего пространственного разрешения, сокращается при использовании макроблоков 64×64. При помощи сокращенного числа макроблоков на каждый кадр или вырезку, например, может быть сокращен совокупный объем информации кодирования, такой как информации синтаксиса, данных векторов движения и подобной.
[0057] В данном изобретении размер макроблока, как правило, относится к числу пикселей, вмещенных в макроблоке, например, 64×64, 32×32, 16×16 или подобному. Следовательно, большой макроблок (например, 64×64 или 32×32) может быть большим в том смысле, что он вмещает в себя большее число пикселей, чем макроблок 16×16. Тем не менее, пространственная зона, заданная вертикальным и горизонтальным размерами большого макроблока, т.е. часть зоны, заданной вертикальным и горизонтальным размерами видеокадра, может быть, а может и не быть больше зоны обычного макроблока 16×16. В некоторых примерах, зона большого макроблока может быть точно такой же или похожей на обычный макроблок 16×16. Тем не менее, большой макроблок имеет более высокое пространственное разрешение, описываемое более высоким числом и более высокой пространственной плотностью пикселей внутри макроблока.
[0058] Размер макроблока может конфигурироваться на основании, по меньшей мере частично, числа пикселей в кадре, т.е. пространственного разрешения в кадре. Если кадр обладает более высоким числом пикселей, большой макроблок может быть сконфигурирован таким образом, чтобы иметь более высокое число пикселей. В качестве иллюстрации, кодер видео может быть сконфигурирован для использования 32×32-пиксельного макроблока для 1280×720 пиксельного кадра, отображаемого с частотой 30 кадров в секунду. В качестве другой иллюстрации, кодер видео может быть сконфигурирован для использования 64×64-пиксельного макроблока для 1280×720 пиксельного кадра, отображаемого с частотой 60 кадров в секунду.
[0059] Каждый макроблок, кодируемый кодером, может потребовать данных, которые описывают одну или более характеристик макроблока. Данные могут указывать, например, данные типа макроблока, чтобы представлять собой размер макроблока, способ, которым разделен макроблок, и режим кодирования (пространственный или временной), применяемый к макроблоку и/или его разделам. В дополнение, данные могут включать в себя данные разности векторов движения (mvd) наряду с прочими элементами синтаксиса, которые представляют собой информацию вектора движения для макроблока и/или его раздела. Также данные могут включать в себя значение модели кодируемых блоков, наряду с прочими элементами синтаксиса, чтобы представлять собой информацию остатка после предсказания. Для большого макроблока данные типа макроблока могут предоставляться в едином заголовке макроблока.
[0060] Как упомянуто выше, посредством использования большого макроблока, кодер может сократить число макроблоков на каждый кадр или вырезку, и тем самым сократить объем сетевых служебных данных, которые требуется передать для каждого кадра или вырезки. Также, посредством использования большого макроблока, может быть сокращено общее число макроблоков для конкретного кадра или вырезки, что может уменьшить артефакты блочности в видео, отображаемом пользователю.
[0061] Методики кодирования видео, описанные в данном изобретении, могут использовать одну или более возможностей для обеспечения кодирования больших макроблоков. Например, большой макроблок может быть разделен на меньшие разделы. К выбранным разделам внутри большого макроблока могут применяться разные режимы кодирования, например разные пространственные (I) или временные (P или B) режимы кодирования. Также, могут использоваться иерархические значения модели кодируемых блоков (CBP) для эффективной идентификации кодированных макроблоков и разделов, обладающих ненулевыми коэффициентами преобразования, представляющими собой данные остатка. В дополнение, для кодирования с использованием макроблоков большого и маленького размеров может производиться сравнение показателей искажения и скорости для выбора размера макроблока, дающего благоприятные результаты. Кроме того, кодируемая единица (например, кадр, вырезка, последовательность или группа изображений), содержащая макроблоки изменяющихся размеров, может включать в себя элемент синтаксиса, который указывает размер наибольшего макроблока в кодируемой единице. Как описано более подробно ниже, большие макроблоки содержат другой синтаксис уровня блока, чем стандартные 16×16-пиксельные блоки. Соответственно, посредством указания размера наибольшего макроблока в кодируемой единице кодер может сигнализировать декодеру синтаксис уровня блока, который должен применить декодер к макроблокам кодируемой единицы.
[0062] Использование разных режимов кодирования для разных разделов в большом макроблоке может именоваться как смешанный режим кодирования больших макроблоков. Вместо единообразного кодирования макроблока таким образом, что все разделы имеют один и тот же режим с внутрикадровым или с межкадровым кодированием, большой макроблок может кодироваться таким образом, что некоторые разделы имеют разные режимы кодирования, как например разные режимы с внутрикадровым кодированием (например, I_16×16, I_8×8, I_4×4) или режимы с внутрикадровым кодированием и межкадровым кодированием.
[0063] Если большой макроблок поделен на два или более разделов то, например, по меньшей мере, один раздел может кодироваться при помощи первого режима, а другой раздел может кодироваться при помощи второго режима, который отличен от первого режима. В некоторых случаях, первый режим может быть первым I режимом, а второй режим может быть вторым I режимом, отличным от первого I режима. В других случаях, первый режим может быть I режимом, а второй режим может быть P или B режимом. Следовательно, в некоторых примерах, большой макроблок может включать в себя один или более разделов с временным (P или B) кодированием и один или более разделов с пространственным (I) кодированием, или один или более разделов с пространственным кодированием, но с разными I режимами.
[0064] Одно или более значений иерархической модели кодируемых блоков (CBP) могут использоваться для эффективного описания того, обладают ли какие-нибудь разделы большого макроблока, по меньшей мере, одним ненулевым коэффициентом преобразования и, если да, то какие разделы. Коэффициенты преобразования кодируют данные остатка для большого макроблока. Бит уровня CBP большого макроблока указывает на то, включают ли в себя какие-нибудь разделы в большом макроблоке ненулевой, квантованный коэффициент. Если нет, то нет необходимости в рассмотрении того, обладает ли какой-нибудь из разделов ненулевым коэффициентом, так как известно, что весь большой макроблок не имеет ненулевых коэффициентов. В этом случае, для декодирования макроблока может использоваться предсказанный макроблок без данных остатка.
[0065] В качестве альтернативы, если значение CBP уровня макроблока указывает на то, что, по меньшей мере, один раздел в большом макроблоке обладает ненулевым коэффициентом, то затем могут анализироваться значения CBP уровня раздела для того, чтобы идентифицировать, какой из разделов включает в себя, по меньшей мере, один ненулевой коэффициент. Затем декодер может получить соответствующие данные остатка для разделов, обладающих, по меньшей мере, одним ненулевым коэффициентом, и декодировать разделы, используя данные остатка и данные предсказанного блока. В некоторых случаях, один или более разделов могут обладать ненулевыми коэффициентами, и поэтому включают в себя значения CBP уровня раздела с соответствующим указанием. Как большой макроблок, так и, по меньшей мере, некоторые разделы могут быть больше чем 16×16 пикселей.
[0066] Для выбора размеров макроблока, дающих благоприятные показатели искажения и скорости, показатели искажения и скорости могут анализироваться как для больших макроблоков (например, 32×32 или 64×64), так и для маленьких макроблоков (например, 16×16). Например, кодер может производить сравнение показателей искажения и скорости между макроблоками 16×16, макроблоками 32×32 и макроблоками 64х64 для кодируемой единицы, такой как кадр или вырезка. Затем кодер может выбрать размер макроблока, который приводит к наилучшему соотношению искажения и скорости и закодировать кодируемую единицу, используя выбранный размер макроблока, т.е. размер макроблока с наилучшим показателем искажения и скорости.
[0067] Выбор может быть основан на кодировании кадра или вырезки в три или более прохода, например, первый проход с использованием 16×16-пиксельных макроблоков, второй проход с использованием 32×32-пиксельных макроблоков и третий проход с использованием 64×64-пиксельного макроблоков, и сравнении показателей искажения и скорости для каждого прохода. Таким образом, кодер может оптимизировать соотношение искажения и скорости посредством изменения размера макроблока и выбора размера макроблока, который приводит к наилучшему или оптимальному показателю искажения и скорости для заданной единицы кодирования, такой как вырезка или кадр. Кодер дополнительно может передать информацию синтаксиса кодируемой единицы, например, как часть заголовка кадра или заголовка вырезки, которая идентифицирует размер макроблоков, использованных в кодируемой единице. Как рассматривается более подробно ниже, информация синтаксиса для единицы кодирования может содержать указатель максимального размера, который указывает максимальный размер макроблоков, используемых в кодируемой единице. Таким образом, кодер может сообщить декодеру, например, какой синтаксис ожидать для макроблоков кодируемой единицы. Когда максимальный размер макроблоков содержит 16×16 пикселей, декодер может ожидать использование синтаксиса стандарта H.264 и анализировать макроблоки в соответствии с синтаксисом, заданным для H.264. Тем не менее, когда максимальный размер макроблока больше 16×16, например содержит 64×64 пикселей, декодер может ожидать использование измененных и/или дополнительных элементов синтаксиса, которые относятся к обработке более крупных макроблоков, как те, что описаны в данном изобретении, и анализировать макроблоки в соответствии с таким измененным или дополнительным синтаксисом.
[0068] Для некоторых видеокадров или вырезок, большие макроблоки могут дать солидную экономию скорости передачи битов и тем самым привести к наилучшим результатам искажения и скорости, дающим сравнительно низкое искажение. Тем не менее для других видеокадров или вырезок, более маленькие макроблоки могут давать меньшее искажение, перевешивая скорость передачи битов в анализе затрат искажения и скорости. Следовательно, в разных случаях, 64×64, 32×32 или 16×16 могут быть подходящими размерами для разных видеокадров или вырезок, например, в зависимости от содержимого и сложности видео.
[0069] Фиг. 1 является структурной схемой, иллюстрирующей пример системы 10 кодирования и декодирования видео, которая использует методики кодирования/декодирования данных цифрового видео с использованием большого макроблока, т.е. макроблока, который вмещает в себя больше пикселей, чем макроблок 16×16. Как показано на Фиг. 1, система 10 включает в себя прибор 12 источник, который передает закодированное видео прибору 14 назначения через канал 16 связи. Прибор 12 источник и прибор 14 назначения могут содержать любой из широкого многообразия приборов. В некоторых случаях, прибор 12 источник и прибор 14 назначения могут содержать приборы беспроводной связи, такие как беспроводные телефонные трубки, так называемые сотовые или спутниковые радиотелефоны, или любые беспроводные приборы, которые могут обмениваться видеоинформацией по каналу 16 связи, и в этом случае канал 16 связи является беспроводным. Тем не менее, методики данного изобретения, которые касаются использования большого макроблока, содержащего больше пикселей, чем макроблоки, предписанные обычными стандартами кодирования видео, не обязательно ограничиваются применением или настройками для беспроводного использования. Например, эти методики могут применяться к эфирному телевизионному вещанию, передачам кабельного телевидения, передачам спутникового телевидения, передачам Интернет видео, закодированному цифровому видео, которое закодировано на носителе информации, или к прочим сценариям. Соответственно, канал 16 связи может содержать беспроводные или проводные средства связи, пригодные для передачи закодированных видеоданных.
[0070] В примере на Фиг. 1, прибор 12 источник может включать в себя источник 18 видео, кодер 20 видео, модулятор/демодулятор (модем) 22 и передатчик 24. Прибор 14 назначения может включать в себя приемник 26, модем 28, декодер 30 видео и прибор 32 отображения. В соответствии с данным изобретением, кодер 20 видео прибора 12 источника может быть сконфигурирован для применения одной или более методик использования, в процессе кодирования видео, большого макроблока, обладающего размером, большим чем размер макроблока, предписанный обычными стандартами кодирования видео. Аналогичным образом, декодер 30 видео прибора 14 назначения может быть сконфигурирован для применения одной или более методик использования, в процессе декодирования видео, размера макроблока, который больше размера макроблока, предписанного обычными стандартами кодирования видео.
[0071] Проиллюстрированная система 10 с Фиг. 1 является всего лишь примером. Методики использования большого макроблока, описанные в данном изобретении, могут выполняться любым прибором кодирования и/или декодирования цифрового видео. Прибор 12 источник и прибор 14 назначения являются всего лишь примерами таких приборов кодирования, в которых прибор 12 источник формирует кодированные видеоданные для передачи прибору 14 назначения. В некоторых примерах, приборы 12, 14 могут функционировать, по сути, симметричным образом, так, что каждый из приборов 12, 14 включает в себя компоненты кодирования и декодирования. Следовательно, система 10 может обеспечивать одностороннюю или двухстороннюю передачу видео между видео приборами 12, 14, например, применительно к потоковой передаче видео, воспроизведению видео, видеовещанию или видеотелефонии.
[0072] Источник 18 видео прибора 12 источника может включать в себя прибор захвата видео, такое как видеокамеру, видеоархив, вмещающий в себя ранее захваченное видео, и/или подачу видео от поставщика видео контента. В качестве дополнительной альтернативы, источник 18 видео может формировать данные, основанные на компьютерной графике, в качестве источника видео, или сочетание живого видео, архивного видео и сформированного компьютером видео. В некоторых случаях, если источником 18 видео является видеокамера, то прибор 12 источник и прибор 14 назначения могут образовывать так называемые телефоны с камерой или видеотелефоны. Тем не менее, как отмечено выше, описанные в данном изобретении методики могут применяться к кодированию видео в целом, и могут использоваться в беспроводных или проводных приложениях. В любом случае, захваченное, предварительно захваченное или сформированное компьютером видео может кодироваться кодером 20 видео. Затем закодированная видеоинформация может модулироваться модемом 22 в соответствии со стандартом связи, и передаваться прибору 14 назначения через передатчик 24. Модем 22 может включать в себя разнообразные преобразователи частоты, фильтры, усилители или прочие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для передачи данных, включая усилители, фильтры и одну или более антенн.
[0073] Приемник 26 прибора 14 назначения принимает информацию по каналу 16, а модем 28 демодулирует информацию. Стоит вновь отметить, что процесс кодирования видео может реализовывать одну или более описанных здесь методик для использования большого макроблока, например больше чем 16×16, для межкадрового (т.е. временного) и/или внутрикадрового (т.е. пространственного) кодирования видеоданных. Процесс декодирования видео, выполняемый декодером 30 видео, также может использовать такие методики во время процесса декодирования. Информация, переданная по каналу 16, может включать в себя информацию синтаксиса, заданную кодером 20 видео, которая также используется декодером 30 видео, и которая включает в себя элементы синтаксиса, которые описывают характеристики и/или способ обработки больших макроблоков, как рассматривается более подробно ниже. Информация синтаксиса может включаться в любой или во все заголовки кадра, заголовки вырезки, заголовки последовательности (например, применительно к H.264, посредством использования профиля и уровня, которому соответствует кодированная видеопоследовательность), или заголовки макроблока. Прибор 32 отображения отображает декодированные видеоданные пользователю и может содержать любой из многообразия приборов отображения, таких как электронно-лучевой трубки (CRT), жидкокристаллического дисплея (LCD), плазменного дисплея, дисплея на органических светоизлучающих диодах, или прибор отображения другого типа.
[0074] В примере на Фиг. 1, канал 16 связи может содержать любое беспроводное или проводное средство связи, такое как спектр радиочастот (RF) или одна или более физических линий передачи, или любое сочетание беспроводных и проводных средств связи. Канал 16 связи может быть частью сети пакетной передачи данных, такой как локальной сети, широкомасштабной сети или глобальной сети, такой как Интернет. Канал 16 связи, как правило, представляет собой любое приемлемое средство связи, или совокупность разных средств связи, для передачи видеоданных от прибора 12 источника к прибору 14 назначения, включая любое приемлемое сочетание проводных или беспроводных средств связи. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для способствования связи от прибора 12 источника к прибору 14 назначения.
[0075] Кодер 20 видео и декодер 30 видео могут функционировать в соответствии со стандартом сжатия видео, таким как стандарт ITU-T H.264, альтернативно описанный как MPEG-4, Часть 10, Улучшенное Кодирование Видео (AVC). Тем не менее, методики данного изобретения не ограничены каким-либо конкретным стандартом кодирования. Прочие примеры включают в себя MPEG-2 и ITU-T H.263. Несмотря на то, что не показано на Фиг. 1, в некоторых аспектах, кодер 20 видео и декодер 30 видео, каждый из которых может быть со встроенным кодером и декодером аудио, и может включать в себя соответствующие модули MUX-DEMUX (мультиплексирования-демультиплексирования), или прочие компоненты аппаратного и программного обеспечения, для обработки кодирования как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, то модули MUX-DEMUX могут соответствовать протоколу ITU H.223 мультиплексора, или прочим протоколам, такому как протокол пользовательских дейтаграмм (UDP).
[0076] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован Экспертной Группой по Кодированию Видео (VCEG) ITU-T совместно с Экспертной Группой по вопросам Движущегося Изображения (MPEG) ISO/IEC в качестве результата совместного партнерства, известного как Совместная Видео Команда (JVT). В некоторых аспектах, описанные в данном изобретении методики могут применяться к приборам, которые в целом соответствуют стандарту H.264. Стандарт H.264 описан в Рекомендациях ITU-T по H.264, Улучшенное Кодирование Видео для общих аудиовизуальных услуг, от Исследовательской Группы ITU-T, и датированы мартом 2005, которые могут именоваться здесь как стандарт H.264 или спецификация H.264, или стандарт или спецификация H.264/AVC. Совместная Видео Команда (JVT) продолжает работу над улучшением H.264/MPEG-4 AVC.
[0077] Кодер 20 видео и декодер 30 видео могут быть реализованы в качестве любой из многообразия приемлемых схем кодера, таких как одного или более микропроцессоров, цифровых сигнальных процессоров (DSP), проблемно-ориентированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, встроенного программного обеспечения или любого их сочетания. Каждый из кодера 20 видео и декодера 30 видео может быть включен в один или более кодирующих приборов или декодирующих приборов, любой из которых может быть встроен как часть объединенного кодирующего/декодирующего (КОДЕК) прибора в соответствующей камере, компьютере, мобильном приборе, приборе абонента, приборе вещания, телевизионной абонентской приставке, сервере или подобном.
[0078] Видеопоследовательность, как правило, включает в себя серии видеокадров. Кодер 20 видео оперирует с блоками видео внутри отдельных видеокадров для того, чтобы закодировать видеоданные. Видеоблок может соответствовать макроблоку или разделу макроблока. Видеоблок может дополнительно соответствовать разделу раздела. Видеоблоки могут обладать фиксированными или меняющимися размерами, и могут отличаться по размеру в соответствии с указанным стандартом кодирования или в соответствии с описанными здесь методиками. Каждый видеокадр может включать в себя множество вырезок. Каждая вырезка может включать в себя множество макроблоков, которые могут быть скомпонованы в разделы, также именуемые как суб-блоки.
[0079] В качестве примера, стандарт ITU-T H.264 поддерживает внутрикадровое предсказание в различных размерах блока, таких как 16 на 16, 8 на 8 или 4 на 4 для компонентов яркости и 8×8 для компонентов цветности, а также межкадровое предсказание в различных размерах блока, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонентов яркости и соответствующие масштабные размеры для компонентов цветности. В данном изобретении, «х» и «на» могут использоваться взаимозаменяемо в отношении размеров блока в пикселях в исчислении вертикальных и горизонтальных размеров, например 16×16 пикселей или 16 на 16 пикселей. Как правило, блок 16×16 будет обладать 16 пикселями в вертикальном направлении и 16 пикселями в горизонтальном направлении. Подобным образом, блок N×N в целом обладает N пикселями в вертикальном направлении и N пикселями в горизонтальном направлении, где N представляет собой положительное целочисленное значение, которое может быть больше 16. Пиксели в блоке могут быть скомпонованы в строки и столбцы.
[0080] Размеры блоков, которые меньше 16 на 16 могут именоваться как разделы макроблока 16 на 16. Подобным образом, для блока N×N, размеры блоков меньше N×N могут именоваться как разделы блока N×N. Методики данного изобретения описывают внутрикадровое и межкадровое кодирование применительно к макроблокам крупнее, чем обычный 16×16-пиксельный макроблок, таким как 32×32-пиксельные макроблоки, 64×64-пиксельные макроблоки или более крупным макроблокам. Видеоблоки могут содержать блоки данных пикселей в диапазоне пикселей, или блоки коэффициентов преобразования в диапазоне преобразований, например следующие применения преобразования, такие как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет преобразование или концептуально аналогичное преобразование к данным остатка видеоблока, представляющим разность между пикселями между кодированными видеоблоками и предсказанными видеоблоками. В некоторых случаях, видеоблок может содержать блоки квантованных коэффициентов преобразования в диапазоне преобразования.
[0081] Меньшие видеоблоки могут обеспечивать лучшее разрешение, и могут использоваться для областей видеокадра, которые включают в себя высокие уровни детализации. В целом, макроблоки и различные разделы, иногда именуемые как суб-блоки, могут рассматриваться как видеоблоки. В дополнение, вырезка может рассматриваться как множество видеоблоков, таких как макроблоки и/или суб-блоки. Каждая вырезка может быть независимо декодируемой единицей видеокадра. В качестве альтернативы, сами по себе кадры могут быть декодируемыми единицами или в качестве декодируемых единиц могут быть заданы прочие части кадра. Понятие «кодируемая единица» или «единица кодирования» может относиться к любой независимо декодируемой единице видеокадра, такой как полный кадр, вырезка кадра, группа изображений (GOP), также именуемая как последовательность, или другой независимо декодируемой единице, заданной в соответствии с применяемыми методиками кодирования.
n
m
n
m
[0082] Вслед за кодированием с внутрикадровым предсказанием или межкадровым предсказанием для создания предсказанных данных и данных остатка, и вслед за любым преобразованием (таким как 4×4 или 8×8 целочисленное преобразование, используемое в H.264/AVC, или дискретное косинусное преобразование DCT) для создания коэффициентов преобразования, может выполняться квантование коэффициентов преобразования. Квантование, как правило, относится к процессу, при котором коэффициенты преобразования квантуются для возможного уменьшения объема данных, используемых для представления коэффициентов. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Например, -битное значение может быть округлено до -битного значения во время квантования, где  больше .
[0083] Вслед за квантованием, может выполняться энтропийное кодирование квантованных данных, например, в соответствии с контекстнозависимым адаптивным кодированием с переменной длиной кодового слова (CAVLC), контекстнозависимым адаптивным бинарным арифметическим кодированием (CABAC) или другой методологией энтропийного кодирования. Модуль обработки, сконфигурированный для энтропийного кодирования, или другой модуль обработки, может выполнять прочие функции обработки, такие как кодирование длины серий нулей квантованных коэффициентов и/или формирование информации синтаксиса, такой как значений CBP, типа макроблока, режима кодирования, максимального размера макроблока для кодируемой единицы (такой как кадр, вырезка, макроблок или последовательность) или подобных.
[0084] В соответствии с различными методиками данного изобретения, кодер 20 видео может использовать макроблок, который больше чем тот, что предписывается обычными стандартами кодирования видео для кодирования данных цифрового видео. В одном примере, кодер 20 видео может: кодировать, при помощи кодера видео, видеоблок, обладающий размером, большим чем 16×16 пикселей; сформировать информацию синтаксиса типа блоков, которая указывает размер блока; и сформировать значение CBP для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент. Информация синтаксиса типа блоков макроблока может предоставляться в заголовке макроблока для большого макроблока. Информация синтаксиса типа блоков макроблока может указывать адрес или положение макроблока в кадре или вырезки, или номер макроблока, который указывает положение макроблока, тип режима кодирования, примененного к макроблоку, значение квантования для макроблока, любую информацию вектора движения для макроблока и значение CBP для макроблока.
[0085] В другом примере, кодер 20 видео может: принять видеоблок, обладающий размером, большим чем 16×16 пикселей; разделить блок на разделы; закодировать один из разделов, используя первый режим кодирования; закодировать другой раздел, используя второй режим кодирования, отличный от первого режима кодирования; и сформировать информацию синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов.
[0086] В дополнительном примере, кодер 20 видео может: принять единицу кодирования видео, такую как кадр или вырезку; определить первый показатель искажения и скорости для кодирования единицы кодирования видео с использованием первых видеоблоков с размерами 16×16 пикселей; определить второй показатель искажения и скорости для кодирования единицы кодирования видео с использованием вторых видеоблоков с размером, большим чем 16×16 пикселей; закодировать единицу кодирования видео, используя первые видеоблоки, когда первый показатель искажения и скорости меньше второго показателя искажения и скорости; и закодировать единицу кодирования видео, используя вторые видеоблоки, когда второй показатель искажения и скорости меньше первого показателя искажения и скорости.
[0087] В одном примере, декодер 30 видео может: принять закодированный видеоблок, обладающий размером, большим чем 16×16 пикселей; принять информацию синтаксиса типа блоков, которая указывает размер закодированного блока; принять значение модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент; и декодировать закодированный блок на основании информации синтаксиса типа блоков и значения модели кодируемых блоков для закодированного блока.
[0088] В другом примере, декодер 30 видео может: принять видеоблок, обладающий размером, большим чем 16×16 пикселей, при этом блок разделен на разделы, и один из разделов - с внутрикадровым кодированием, а другой из разделов - с межкадровым кодированием; принять информацию синтаксиса типа блоков, которая указывает размер блока и указывает разделы и режимы кодирования, использованные для кодирования разделов; и декодировать видеоблок на основании информации синтаксиса типа блоков.
[0089] Фиг. 2 является структурной схемой, иллюстрирующей пример кодера 50 видео, который может реализовывать методики использования большого макроблока в соответствии с данным изобретением. Кодер 50 видео может соответствовать кодеру 20 видео прибора 12 источника, или кодеру видео другого прибора. Кодер 50 видео может выполнять внутрикадровое и межкадровое кодирование блоков внутри видеокадров, включающих в себя большие макроблоки, или разделы, или суб-разделы больших макроблоков. Внутрикадровое кодирование основывается на пространственном предсказании для сокращения или удаления пространственной избыточности видео внутри заданного видеокадра. Межкадровое кодирование основывается на временном предсказании для сокращения или удаления временной избыточности в видео внутри соседних кадров видеопоследовательности.
[0090] Внутрикадровый режим (I-режим) может относиться к любому из нескольких пространственных режимов сжатия, а межкадровые режимы, такие как предсказание (P-режим) или двунаправленный (B-режим), могут относиться к любому из нескольких временных режимов сжатия. Методики данного изобретения могут применяться как во время внутрикадрового кодирования, так и межкадрового кодирования. В некоторых случаях, методики данного изобретения также могут применяться к кодированию цифровых изображений, не относящихся к видео. То есть кодер цифрового неподвижного изображения может использовать методики данного изобретения для внутрикадрового кодирования цифрового неподвижного изображения, используя большие макроблоки образом, аналогичным кодированию макроблоков с внутрикадровым кодированием в видеокадрах видеопоследовательности.
[0091] Как показано на Фиг. 2, кодер 50 видео принимает текущий видеоблок из видеокадра, который должен быть закодирован. В примере на Фиг. 2, кодер 50 видео включает в себя модуль 35 компенсации движения, модуль 36 оценки движения, модуль 37 внутрикадрового предсказания, модуль 39 выбора режима, хранилище 34 опорных кадров, сумматор 48, модуль 38 преобразования, модуль 40 квантования, модуль 46 энтропийного кодирования. Для воссоздания видеоблока, кодер 50 видео также включает в себя модуль 42 обратного квантования, модуль 44 обратного преобразования и сумматор 51. Также может быть включен деблокинг-фильтр (не показан на Фиг. 2) для фильтрации границ блока по удалению артефактов блочности из воссозданного видео. Если требуется, деблокинг-фильтр мог бы, как правило, фильтровать выходные данные с сумматора 51.
[0092] Во время процесса кодирования, кодер 50 видео принимает видеокадр или вырезку, которая должна быть закодирована. Кадр или вырезка может быть разделена на множество видеоблоков, включая большие макроблоки. Модуль 36 оценки движения и модуль 35 компенсации движения выполняют кодирование с межкадровым предсказанием принятого видеоблока по отношению к одному или более блокам в одном или более опорных кадрах для обеспечения временного сжатия. Модуль 37 внутрикадрового предсказания выполняет кодирование с внутрикадровым предсказанием принятого видеоблока по отношению к одному или более соседним блокам в том же самом кадре или вырезке, в которых находится и блок, который должен быть закодирован, для обеспечения пространственного сжатия.
[0093] Модуль 39 выбора режима может выбрать один из режимов кодирования, внутрикадровый или межкадровый, например, на основании результатов ошибки, и предоставляет итоговый блок с внутрикадровым или межкадровым кодированием сумматору 48 для формирования данных блока остатка и сумматору 51 для воссоздания закодированного блока для использования в качестве опорного кадра. В соответствии с методиками данного изобретения, видеоблок, который должен быть закодирован, может содержать макроблок, который больше предписываемого обычными стандартами кодирования, т.е. больше чем 16×16-пиксельный макроблок. Например, большой видеоблок может содержать 64×64-пиксельный макроблок или 32×32-пиксельный макроблок.
[0094] Модуль 36 оценки движения и модуль 35 компенсации движения могут быть высокоинтегрированными, но проиллюстрированы отдельно в схематических целях. Оценка движения является процессом формирования векторов движения, которые оценивают движение применительно к видеоблокам. Вектор движения, например, может указывать смещение предсказанного блока внутри предсказанного опорного кадра (или другой кодируемой единицы) относительно кодируемого в текущий момент блока внутри текущего кадра (или другой кодируемой единицы). Предсказанным блоком является блок, который определен как наиболее точно совпадающий с блоком, который должен быть закодирован, исходя из разности между пикселями, которая может определяться суммой абсолютных разностей (SAD), суммой квадратичных разностей (SSD) или другими показателями разностей.
[0095] Вектор движения также может указывать смещение раздела большого макроблока. В одном примере, применительно к 64×64-пиксельному макроблоку с разделом 32×64 и двумя разделами 32×32, первый вектор движения может указывать смещение раздела 32×64, второй вектор движения может указывать смещение первого одного из разделов 32×32, а третий вектор движения может указывать смещение второго одного из разделов 32×32, и все по отношению к соответствующим разделам в опорном кадре. Такие разделы также могут считаться видеоблоками в соответствии с тем, как это понятие используется в данном изобретении. Компенсация движения может задействовать осуществление выборки или формирование предсказанного блока на основании вектора движения, определенного оценкой движения. Вновь отметим, что модуль 36 оценки движения и модуль 35 компенсации движения могут быть функционально интегрированы.
[0096] Модуль 36 оценки движения вычисляет вектор движения для видеоблока кадра с межкадровым кодированием посредством сравнения видеоблока с видеоблоками опорного кадра в хранилище 34 опорных кадров. Модуль 35 компенсации движения также может интерполировать близкие к целочисленным пиксели опорного кадра, например I-кадра или P-кадра. Стандарт ITU H.264 обращается к опорным кадрам как к «спискам». Вследствие этого, данные, хранящиеся в хранилище 34 опорных кадров, также могут рассматриваться в качестве списков. Модуль 36 оценки движения сравнивает блоки одного или более опорных кадров (или списков) из хранилища 34 опорных кадров с блоком, который должен быть закодирован в текущем кадре, например, P-кадре или B-кадре. Когда опорные кадры в хранилище 34 опорных кадров включают в себя значения, близкие к целочисленным пикселям, вычисленный модулем 36 оценки движения вектор движения может ссылаться на близкое к целочисленному местоположение пикселя опорного кадра. Модуль 36 оценки движения отправляет вычисленный вектор движения в модуль 46 энтропийного кодирования и модуль 35 компенсации движения. Блок опорного кадра, идентифицируемый вектором движения, может именоваться как предсказанный блок. Модуль 35 компенсации движения вычисляет значения ошибки по отношению к предсказанному блоку опорного кадра.
[0097] Модуль 35 компенсации движения может вычислять данные предсказания на основании предсказанного блока. Кодер 50 видео формирует видеоблок остатка посредством вычитания данных предсказания от модуля 35 компенсации движения из исходного кодируемого видеоблока. Сумматор 48 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к блоку остатка, создавая видеоблок, содержащий значения коэффициентов преобразования остатка. Модуль 38 преобразования может выполнять прочие преобразования, такие как заданные стандартом H.264, которые концептуально аналогичны DCT. Вейвлет-преобразования, целочисленные преобразования, субполосные преобразования или преобразования других типов также могут использоваться. В любом случае, модуль 38 преобразования применяет преобразование к блоку остатка, создавая блок коэффициентов преобразования остатка. Преобразование может трансформировать информацию остатка из значения в диапазоне пикселей в диапазон преобразования, такой как частотный диапазон.
Y
[0098] Модуль 40 квантования квантует коэффициенты преобразования остатка для того, чтобы дополнительно уменьшить скорость передачи битов. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. В одном примере, модуль 40 квантования может устанавливать разную степень квантования для каждого 64×64-пиксельного макроблока в соответствии с параметром квантования яркости, именуемым в данном изобретении как QP. Модуль 40 квантования может дополнительно изменять параметр квантования яркости, используемый во время квантования макроблока 64×64, на основании модификатора параметра квантования, именуемого здесь как «MB64_delta_QP» и ранее закодированного 64×64-пиксельного макроблока.
Y
[0099] Каждый 64х64-пиксельный большой макроблок может содержать индивидуальное значение MB64_delta_QP, в диапазоне от -26 до +25 включительно. В целом, кодер 50 видео может установить значение MB64_delta_QP для конкретного блока на основании требуемой скорости передачи битов для передачи закодированного варианта блока. Значение MB64_delta_QP первого 64×64-пиксельного макроблока может быть равно значению QP кадра или вырезки, которое включает в себя первый 64×64-пиксельный макроблок, например, в заголовке кадра/вырезки. QP для текущего 64х64-пиксельного макроблока может вычисляться в соответствии с формулой
QP
QP
MB64_delta_QP
Y
Y,PREV
=(++52)%52
Y,PREV
Y
Y,PREV
где QP относится к значению QP предшествующего 64×64-пиксельного макроблока в порядке следования кодирования текущей вырезки/кадра, и где «%» относится к оператору по модулю, такому, что N%52 дает результат между 0 и 51, включительно, соответствуя значению остатка от N, деленного на 52. Для первого макроблока в кадре/вырезки, QP может быть установлено равным QP кадра/вырезки, отправляемом в заголовке кадра/вырезки.
[00100] В одном примере, модуль 40 квантования предполагает, что значение MB64_delta_QP равно нулю, когда значение MB64_delta_QP не задано для конкретного 64х64-пиксельного макроблока, включая макроблоки типа «пропуска», такие как макроблоки типа P_Skip и B_Skip. В некоторых примерах, могут быть заданы дополнительные значения delta_QP (как правило, именуемые как значения изменения параметра квантования) для управления квантованием более тонкого дробления разделов внутри 64×64-пиксельного макроблока, как например значения MB32_delta_QP для каждого 32×32-пиксельного раздела в 64×64-пиксельном макроблоке. В некоторых примерах, каждому разделу макроблока 64×64 может быть назначен индивидуальный параметр квантования. Использование индивидуализированных параметров квантования для каждого раздела может привести к более эффективному квантованию макроблока, например, к более хорошей настройке квантования для неоднородных зон, вместо использования единого QP для макроблока 64×64. Каждое значение изменения параметра квантования может включаться в качестве информации синтаксиса с соответствующим закодированным блоком, а декодер может декодировать закодированный блок посредством деквантования, т.е. обратного квантования, закодированного блока в соответствии со значением изменения параметра квантования.
Y
[0100] Вслед за квантованием, модуль 46 энтропийного кодирования осуществляет энтропийное кодирование квантованных коэффициентов преобразования. Например, модуль 46 энтропийного кодирования может выполнить контекстнозависимое адаптивное кодирование с переменной длиной кодового слова (CAVLC), контекстнозависимое адаптивное бинарное арифметическое кодирование (CABAC) или другую методику энтропийного кодирования. Вслед за энтропийным кодированием, выполняемым модулем 40 энтропийного кодирования, закодированное видео может быть передано другому прибору или заархивировано для последующей передачи или получения. Закодированный битовый поток может включать в себя блоки энтропийно закодированных коэффициентов преобразования, векторы движения для таких блоков, значения MB64_delta_QP для каждого 64×64-пиксельного макроблока и прочие элементы синтаксиса, включая, например, значения идентификатора типа макроблока, заголовки кодируемых единиц, указывающие максимальный размер макроблоков в кодируемой единице, значения QP, значения модели кодируемых блоков (CBP), значения, которые указывают метод разделения макроблока или суб-блока, и значения флага размера преобразования, как рассматривается более подробно ниже. В случае контекстнозависимого адаптивного бинарного арифметического кодирования, контекст может основываться на соседних макроблоках.
[0101] В некоторых случаях, модуль 46 энтропийного кодирования или другой модуль кодера 50 видео может быть сконфигурирован для выполнения других функций кодирования в дополнение к энтропийному кодированию. Например, модуль 46 энтропийного кодирования может быть сконфигурирован для определения значений CBP для больших макроблоков и разделов. Модуль 46 энтропийного кодирования может применять схему иерархической CBP для предоставления значения CBP для большого макроблока, которое указывает на то, включает ли в себя какой-нибудь раздел в макроблоке ненулевые значения коэффициента преобразования, и если да, то другие значения CBP для указания того, имеют ли конкретные разделы внутри большого макроблока ненулевые значения коэффициента преобразования. Также в некоторых случаях, модуль 46 энтропийного кодирования может выполнять кодирование длины серий коэффициентов в большом макроблоке или суб-разделе. В частности, модуль 46 энтропийного кодирования может применять зигзагообразное сканирование или другую модель сканирования для сканирования коэффициентов преобразования в макроблоке или разделе, и кодировать серии нулей для дальнейшего сжатия. Модуль 46 энтропийного кодирования также может создавать информацию заголовка с подходящими элементами синтаксиса для передачи в закодированном битовом потоке видео.
[0102] Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для воссоздания блока остатка в диапазоне пикселей, например, для дальнейшего использования в качестве опорного блока. Модуль 35 компенсации движения может вычислить опорный блок посредством сложения блока остатка с предсказанным блоком одного из кадров в хранилище 34 опорных кадров. Модуль 35 компенсации движения также может применить один или более фильтров интерполяции к воссозданному блоку остатка для вычисления значений пикселей, близких к целочисленным. Сумматор 51 складывает воссозданный блок остатка с блоком предсказания после компенсации движения, созданным модулем 35 компенсации движения, для создания воссозданного видеоблока для последующего хранения в хранилище 34 опорных кадров. Воссозданный видеоблок может использоваться модулем 36 оценки движения и модулем 35 компенсации движения в качестве опорного блока для осуществления межкадрового кодирования блока в следующем видеокадре. Большой макроблок может быть 64х64-пиксельным макроблоком, 32×32-пиксельным макроблоком или другим макроблоком, который больше размера, предписываемого обычными стандартами кодирования видео.
[0103] Фиг. 3 является структурной схемой, иллюстрирующей пример декодера 60 видео, который декодирует видеопоследовательность, которая закодирована способом, описанным в данном изобретении. Закодированная видеопоследовательность может включать в себя закодированные макроблоки, которые больше размера, предписываемого обычными стандартами кодирования видео. Например, закодированные блоки могут быть 32×32-пиксельными или 64×64-пиксельными макроблоками. В примере на Фиг. 3 декодер 60 видео включает в себя модуль 52 энтропийного декодирования, модуль 54 компенсации движения, модуль 55 внутрикадрового предсказания, модуль 56 обратного квантования, модуль 58 обратного преобразования, хранилище 62 опорных кадров и сумматор 64. Декодер 60 видео может, в некоторых примерах, выполнять проход декодирования, в целом обратный проходу кодирования, описанному в отношении кодера 50 видео (Фиг. 2). Модуль 54 компенсации движения может формировать данные предсказания на основании векторов движения, принятых от модуля 52 энтропийного декодирования.
Y
[0104] Модуль 52 энтропийного декодирования производит энтропийное декодирование принятого битового потока для формирования квантованных коэффициентов и элементов синтаксиса (например, векторов движения, значений CBP, значений QP, значений флага размера преобразования, значений MB64_delta_QP). Модуль 52 энтропийного декодирования может анализировать битовый поток для идентификации информации синтаксиса в кодируемых единицах, таких как кадры, вырезки и/или заголовки макроблоков. Информация синтаксиса для кодируемой единицы, содержащей множество макроблоков, может указывать максимальный размер макроблоков, например 16×16 пикселей, 32×32 пикселей, 64×64 пикселей или другой более крупный размер макроблоков в кодируемой единице. Информация синтаксиса для блока передается от модуля 52 энтропийного декодирования либо модулю 54 компенсации движения, либо модулю 55 внутрикадрового предсказания, например, в зависимости от режима кодирования блока. Декодер может использовать индикатор максимального размера в синтаксисе кодируемой единицы для выбора декодера синтаксиса для кодируемой единицы. Используя декодер синтаксиса, заданный для максимального размера, декодер затем может правильно интерпретировать и обработать макроблоки большого размера, включенные в кодируемую единицу.
Y
[0105] Модуль 54 компенсации движения может использовать векторы движения, принятые в битовом потоке, для идентификации блока предсказания в опорных кадрах в хранилище 62 опорных кадров. Модуль 55 внутрикадрового предсказания может использовать режимы внутрикадрового предсказания, принятые в битовом потоке, для формирования блока предсказания из соседних в пространстве блоков. Модуль 56 обратного квантования обратно квантует, т.е. осуществляет деквантование, квантованных коэффициентов блока, предоставленных в битовом потоке и декодированных модулем 52 энтропийного декодирования. Процесс обратного квантования может включать в себя обычный процесс, например, как определено стандартом декодирования H.264. Процесс обратного квантования также может включать в себя использование параметра QP квантования, вычисленного кодером 50 для каждого макроблока 64×64 для того, чтобы определить степень квантования, а также степень обратного квантования, которая должна быть применена.
[0106] Модуль 58 обратного преобразования применяет обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально аналогичные процессы обратного преобразования к коэффициентам преобразования, для того чтобы создать блоки остатков в диапазоне пикселей. Модуль 54 компенсации движения создает блоки с компенсированным движением, возможно, выполняя интерполяцию на основании фильтров интерполяции. Идентификаторы фильтров интерполяции, которые должны использоваться для оценки движения с суб-пиксельной точностью, могут включаться в элементы синтаксиса. Модуль 54 компенсации движения может использовать фильтры интерполяции аналогично тому, как они используются кодером 50 видео во время кодирования видеоблока, для вычисления интерполированных значений пикселей, близких к целочисленным опорного блока. Модуль 54 компенсации движения может определить фильтры интерполяции, использованные кодером 50 видео, в соответствии с принятой информацией синтаксиса и использовать фильтры интерполяции для создания предсказанных блоков.
[0107] Модуль 54 компенсации движения использует некоторую информацию синтаксиса для определения размеров макроблоков, использованных при кодировании кадра(ов) закодированной видеопоследовательности, информацию разделов, которая описывает то, каким образом разделен каждый макроблок кадра закодированной видеопоследовательности, режимы, указывающие то, каким образом закодирован каждый раздел, один или более опорных кадров (или списков) для каждого макроблока или раздела с межкадровым кодированием и прочую информацию для декодирования закодированной видеопоследовательности.
[0108] Сумматор 64 суммирует блоки остатков с соответствующими предсказанными блоками, сформированными модулем компенсации движения или модулем внутрикадрового предсказания для формирования декодированных блоков. Если требуется, также может применяться деблокинг-фильтр для фильтрации декодированных блоков, чтобы удалить артефакты блочности. Декодированные видеоблоки затем сохраняются в хранилище 62 опорных кадров, которое предоставляет опорные кадры для последующей компенсации движения и также создает декодированное видео для представления на приборе отображения (таком как прибор 32 с Фиг. 1). Каждый декодированный видеоблок может содержать 64×64-пиксельный макроблок, 32×32-пиксельный макроблок и другие, крупнее стандартных, макроблоки. Некоторые макроблоки могут включать в себя разделы разнообразных размеров разделов.
[0109] Фиг. 4A является концептуальной схемой, иллюстрирующей пример разделения большого макроблока по различным уровням разделения. Блоки каждого уровня разделения включают в себя число пикселей, соответствующее конкретному уровню. Для каждого уровня также показаны четыре схемы разделения, где первая схема разделения включает в себя блок целиком, вторая схема разделения включает в себя два горизонтальных раздела одинакового размера, третья схема разделения включает в себя два вертикальных раздела одинакового размера и четвертая схема разделения включает в себя четыре раздела одинакового размера. На каждом уровне разделения для каждого разделения может быть выбрана одна из схем разделения.
[0110] В примере на Фиг. 4A уровень 0 соответствует разделению 64×64-пиксельного макроблока элементов яркости и связанных элементов цветности. Уровень 1 соответствует 32×32-пиксельному блоку элементов яркости и связанных элементов цветности. Уровень 2 соответствует 16×16-пиксельному блоку элементов яркости и связанных элементов цветности, а уровень 3 соответствует 8х8-пиксельному блоку элементов яркости и связанных элементов цветности.
[0111] В другом примере, могут быть введены дополнительные уровни для использования большего или меньшего числа пикселей. Например, уровень 0 может начинаться со 128×128-пиксельного макроблока, 256×256-пиксельного макроблока или другого макроблока более крупного размера. Уровень с наивысшим номером, в некоторых примерах, может быть настолько тонко раздроблен, что состоять из единичных пикселей, т.е. блока 1×1. Следовательно, от наиболее низкого к наивысшему уровням, разделение может все больше подразделяться, таким образом, что разделяется макроблок, разделы дополнительно разделяются, дополнительные разделы еще дополнительно разделяются и т.д. В некоторых случаях, разделы ниже уровня 1, т.е. разделы разделов, могут именоваться как суб-разделы.
x
x
[0112] Когда блок на одном уровне разделяется при помощи четырех суб-блоков одинакового размера, любой или все суб-блоки могут быть разделены в соответствии со схемой разделения следующего уровня. То есть применительно к блоку N×N, который на уровне  был разделен на четыре одинаковые по размеру суб-блока (N/2)×(N/2), каждый из (N/2)×(N/2) суб-блоков может быть дополнительно разделен в соответствии с любой из схем разделения уровня +1. Таким образом, 32×32-пиксельный суб-блок 64х64-пиксельного макроблока на уровне 0, может быть дополнительно разделен в соответствии с любой из схем, показанных на Фиг. 4A на уровне 1, например, 32×32, 32×16 и 32×16, 16×32 и 16×32, или 16×16, 16×16, 16×16 и 16×16. Подобным образом, где четыре 16×16-пиксельных суб-блока образуются из разделенного 32×32-пиксельного суб-блока, каждый из 16×16-пиксельных суб-блоков может быть дополнительно разделен в соответствии с любой из схем, показанных на Фиг. 4A на уровне 2, где четыре 8х8-пиксельных суб-блока образуются из разделенного 16×16-пиксельного суб-блока, каждый из 8×8-пиксельных суб-блоков может быть дополнительно разделен в соответствии с любой из схем, показанных на Фиг. 4A на уровне 3.
[0113] Используя пример четырех уровней разделения, показанных на Фиг. 4A, большие однородные зоны и отдельные мелкие изменения могут быть адаптивно представлены кодером, реализующим подход и методики данного изобретения. Например, кодер 50 видео может задать разные уровни разделения для разных макроблоков, а также режимы кодирования для применения к этим разделам, например, на основании анализа искажения и скорости. Также, как более подробно описано ниже, кодер 50 видео может кодировать, по меньшей мере, некоторые итоговые разделы по-разному, используя пространственное (P-закодированное или B-закодированное) или временное (I-закодированное) предсказание, например, на основании результатов показателей искажения и скорости или рассмотрения прочих условий.
[0114] Вместо кодирования большого макроблока единообразно, так чтобы все разделы имели один и тот же режим внутрикадрового или межкадрового кодирования, большой макроблок может кодироваться таким образом, что некоторые разделы имеют отличный режим кодирования. Например, некоторые (по меньшей мере, один) разделы могут кодироваться при помощи других режимов внутрикадрового кодирования (например, I_16×16, I_8×8, I_4×4) по отношению к прочим (по меньшей мере, одному) разделам в одном и том же макроблоке. Также, некоторые (по меньшей мере, один) разделы могут быть с внутрикадровым кодированием, в то время как другие (по меньшей мере, один) разделы в том же самом макроблоке - с межкадровым кодированием.
[0115] Например, кодер 50 видео, может для блока 32×32 с четырьмя разделами 16×16 кодировать некоторые разделы 16×16, используя пространственное предсказание, а другие разделы 16×16, используя временное предсказание. В качестве другого примера, кодер 50 видео может, для блока 32×32 с четырьмя разделами 16×16, кодировать один или более разделов 16×16, используя первый режим предсказания (например, I_16×16, I_8×8, I_4×4), а один или более других разделов 16×16, используя другой пространственный режим предсказания (например, один из I_16×16, I_8×8, I_4×4).
[0116] Фиг. 4B является концептуальной схемой, иллюстрирующей назначение разных режимов кодирования разным разделам большого макроблока. В частности, Фиг. 4B иллюстрирует назначение режима внутрикадрового кодирования I_16×16 верхнему левому блоку 16×16 большого макроблока 32×32, режимов внутрикадрового кодирования I_8×8 верхнему правому и нижнему левому блокам 16×16 большого макроблока 32×32, и режима внутрикадрового кодирования I_4×4 нижнему левому блоку 16×16 большого макроблока 32×32. В некоторых случаях, режимы кодирования, проиллюстрированные на Фиг. 4B, могут быть режимами внутрикадрового кодирования H.264 для кодирования яркости.
[0117] Описанным образом, каждый раздел может быть выборочно дополнительно разделен, и каждый итоговый раздел может выборочно кодироваться либо с использованием временного предсказания или пространственного предсказания, либо с использованием выбранного временного или пространственного режима кодирования. Следовательно, существует возможность кодирования большого макроблока при помощи смешанных режимов, так что некоторые разделы в макроблоке - с внутрикадровым кодированием, а другие разделы в том же самом макроблоке - с межкадровым кодированием, или некоторые разделы в одном и том же макроблоке кодируются при помощи других режимов внутрикадрового кодирования или других режимов межкадрового кодирования.
[0118] Кодер 50 видео может дополнительно задать каждый раздел в соответствии с типом макроблока. Тип макроблока может включаться в качестве элемента синтаксиса в кодируемый битовый поток, например в качестве элемента синтаксиса в заголовке макроблока. В целом, тип макроблока может использоваться для идентификации того, каким образом разделен макроблок, и соответствующих способов и режимов кодирования каждого из разделов макроблока, как рассматривалось выше. Способы кодирования разделов могут включать в себя не только внутрикадровое и межкадровое кодирование, но также конкретные режимы внутрикадрового кодирования (например, I_16×16, I_8×8, I_4×4) или межкадрового кодирования (например, P_ или B_16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4).
[0119] Как рассматривается более подробно в отношении примера в таблице 1 ниже применительно к P-блокам и в отношении примера в таблице 2 ниже применительно к B-блокам, блоки уровня разделения 0 могут описываться в соответствии с элементом синтаксиса MB64_типа, представляющего собой макроблок с 64×64 пикселями. Аналогичным образом описания типов могут формироваться для любого MB[N]_типа, где [N] относится к блоку с N×N пикселями, где N является положительным целым числом, которое может быть больше 16. Когда блок N×N имеет четыре раздела размером (N/2)×(N/2), как показано в последнем столбце на Фиг. 4A, то каждый из четырех разделов может получить свои собственные описания типов, например MB[N/2]_тип. Например, для 64×64-пиксельного блока (типа MB64_тип) с четырьмя 32×32-пиксельными разделами, кодер 50 видео может ввести MB32_тип для каждого из четырех 32×32-пиксельных разделов. Этот элемент синтаксиса типа макроблока может помогать декодеру 60 при декодировании больших макроблоков и различных разделов больших макроблоков, как описано в данном изобретении. Каждому N×N-пиксельному макроблоку, где N больше 16, как правило, соответствует уникальное описание типа. Соответственно, кодер может сформировать синтаксис, подходящий для конкретного макроблока, и указать декодеру максимальный размер макроблоков в кодируемой единице, такой как кадр, вырезка или последовательность макроблоков. Таким образом, декодер может принять указание декодера синтаксиса для применения к макроблокам кодируемой единицы. Это также гарантирует то, что декодер может быть обратно совместимым с существующими стандартами кодирования, таким как H.264, в том, что кодер может указать тип декодеров синтаксиса, которые необходимо применять к макроблокам, например, стандарта H.264, или те, что предназначены для обработки больших макроблоков, в соответствии с методиками данного изобретения.
[0120] В целом, каждое описание MB[N]_типа может представлять собой, для соответствующего типа, число пикселей в блоке соответствующего типа (например, 64×64), опорный кадр (или опорный список) блока, число разделов блока, размер каждого раздела блока, то, каким образом закодирован раздел (например, с внутрикадровым или межкадровым кодированием и конкретный режим) и опорный кадр (или опорный список) для каждого раздела блока, когда раздел является разделом с межкадровым кодированием. Применительно к 16×16 и более маленьким блокам, кодер 50 видео может, в некоторых примерах, использовать обычные описания типов в качестве типов блоков, такие как типы, заданные стандартом H.264. В других примерах, кодер 50 видео может применять новые заданные типы блоков для 16×16 и более маленьких блоков.
[0121] Кодер 50 видео может оценивать как обычные способы межкадрового или внутрикадрового кодирования, использующие нормальные размеры макроблоков и разделов, такие как способы, предписываемые ITU H.264, так и способы межкадрового или внутрикадрового кодирования, использующие более крупные макроблоки и разделы, описанные данным изобретением, и сравнивать характеристики искажения и скорости каждого подхода, чтобы определить, какой способ приводит к наилучшей характеристике искажения и скорости. Затем кодер 50 видео может выбрать и применить к блоку, который должен кодироваться, наилучший подход к кодированию, включая межкадровый или внутрикадровый режим, размер макроблока (большой, крупнее или нормальный), и разделение, на основании оптимальных или приемлемых результатов искажения и скорости для подхода к кодированию. В качестве иллюстрации, кодер 50 видео может выбрать для использования макроблоки 64×64, макроблоки 32×32 или макроблоки 16×16 для кодирования конкретного кадра или вырезки на основании результатов искажения и скорости, полученных, когда кодер видео использует такие размеры макроблоков.
[0122] В целом, могут использоваться два разных подхода для компоновки внутрикадровых режимов, использующих большие макроблоки. В качестве одного примера, во время внутрикадрового кодирования, пространственное предсказание может выполняться для блока на основании непосредственно соседствующих блоков. В соответствии с методиками данного изобретения, кодер 50 видео может сформировать пространственно предсказанные блоки 32×32 на основании их непосредственно соседствующих пикселей и сформировать пространственно предсказанные блоки 64×64 на основании их непосредственно соседствующих пикселей. Таким образом, пространственное предсказание может выполняться в большем масштабе в сравнении с внутренними блоками 16×16. Вследствие этого, эти методики могут, в некоторых примерах, привести к некоторой экономии скорости передачи битов, например, при помощи использования меньшего числа блоков или разделов на кадр или вырезку.
[0123] В качестве другого примера, кодер 50 видео может группировать четыре блока N×N вместе для формирования (N*2)×(N*2) блока, а затем кодировать (N*2)×(N*2) блок. Используя существующие режимы внутрикадрового кодирования H.264, кодер 50 видео может группировать четыре блока с внутрикадровым кодированием вместе, тем самым формируя большой макроблок с внутрикадровым кодированием. Например, четыре блока с внутрикадровым кодированием, каждый из которых имеет размер 16×16, могут группироваться вместе для формирования большого блока 32×32 с внутрикадровым кодированием. Кодер 50 видео может кодировать каждый из четырех соответствующих блоков N×N, используя разные режимы кодирования, например, I_16×16, I_8×8, I_4×4 в соответствии с H.264. Таким образом, каждому блоку 16×16 кодером 50 видео может быть назначен свой собственный режим пространственного предсказания, например, чтобы способствовать достижению благоприятных результатов кодирования.
[0124] Кодер 50 видео может компоновать внутрикадровые режимы в соответствии с любым из двух разных рассмотренных выше способов, и анализировать разные способы для определения того, какой из подходов обеспечивает более хорошие результаты кодирования. Например, кодер 50 видео может применять разные подходы внутрикадровых режимов и помещать их в единую совокупность кандидатов, чтобы позволить им конкурировать друг с другом в отношении наилучшей характеристики искажения и скорости. Используя сравнение искажения и скорости между разными подходами, кодер 50 видео может определить то, каким образом кодировать каждый раздел и/или макроблок. В частности, кодер 50 видео может выбрать режимы кодирования, которые дают наилучшую характеристику искажения и скорости для заданного макроблока и применить эти режимы кодирования при кодировании макроблока.
[0125] Фиг. 5 является концептуальной схемой, иллюстрирующей иерархический вид различных уровней разделения большого макроблока. Фиг. 5 также представляет собой взаимосвязи между различными уровнями разделения большого макроблока, как описано в отношении Фиг. 4A. Каждый блок уровня разделения, как проиллюстрировано в примере на Фиг. 5, может иметь соответствующее значение модели кодируемых блоков (CBP). Значение CBP формирует часть информации синтаксиса, которая описывает блок или макроблок. В одном примере, каждое значение CBP является однобитовым значением синтаксиса, которое указывает на то, существуют или нет какие-нибудь ненулевые значения коэффициентов преобразования в заданном блоке после операций преобразования и квантования.
[0126] В некоторых случаях, блок предсказания может быть очень похож по содержимому пикселей на блок, который должен быть закодирован, так, что все коэффициенты преобразования остатка квантуются в ноль, и в этом случае нет необходимости передавать коэффициенты преобразования для кодируемого блока. Вместо этого, значение CBP блока может быть установлено в ноль, чтобы указывать на то, что кодируемый блок не включает в себя ненулевые коэффициенты. В качестве альтернативы, если блок включает в себя, по меньшей мере, один ненулевой коэффициент, то значение CBP может быть установлено в единицу. Декодер 60 может использовать значения CBP для идентификации кодируемых блоков остатков, т.е. с одним или более ненулевыми коэффициентами преобразования, в отличие от блоков, которые не кодируются, т.е. не включающих в себя ненулевые коэффициенты преобразования.
[0127] В соответствии с некоторыми методиками, описанными в данном изобретении, кодер может назначить значения CBP большим макроблокам в иерархическом порядке на основании того, имеют ли эти макроблоки, включая их разделы, по меньшей мере, один ненулевой коэффициент, и назначить значения CBP разделам, чтобы указать, какие разделы имеют ненулевые коэффициенты. Иерархическая CBP для больших макроблоков может способствовать обработке больших макроблоков для более быстрой идентификации кодируемых больших макроблоков и не кодируемых больших макроблоков и разрешить идентификацию кодируемых разделов на каждом уровне разделения большого макроблока для определения того, необходимо ли использовать данные остатка для декодирования блоков.
[0128] В одном примере, 64х64-пиксельный макроблок на уровне ноль может включать в себя информацию синтаксиса, содержащую значение CBP64, например однобитовое значение, для указания того, имеет или нет весь 64х64-пиксельный макроблок, включая любой раздел, ненулевой коэффициент. В одном примере, кодер 50 видео «устанавливает» бит CBP64, например, в значение «1», для того чтобы он представлял собой, что 64×64-пиксельный макроблок включает в себя, по меньшей мере, один ненулевой коэффициент. Таким образом, когда значение CBP64 установлено, например, в значение «1», 64×64-пиксельный макроблок включает в себя, по меньшей мере, один ненулевой коэффициент где-то в макроблоке. В другом примере, кодер 50 видео может «очищать» значение CBP64, например в значении «0», для того чтобы он представлял собой, что 64×64-пиксельный макроблок имеет все нулевые коэффициенты. Таким образом, когда значение CBP64 очищено, например, в значение «0», то тем самым указывается, что 64×64-пиксельный макроблок обладает всеми нулевыми коэффициентами. Макроблоки со значениями CBP64, равными «0», как правило, не требуют передачи данных остатка в битовом потоке, тогда как макроблоки со значением CBP64 равным «1», как правило, требуют передачи данных остатка в битовом потоке для использования при декодировании таких макроблоков.
[0129] 64×64-пиксельному макроблоку, который имеет все нулевые коэффициенты, не требуется включать значения CBP для его разделов и суб-блоков. То есть, так как 64×64-пиксельный макроблок имеет все нулевые коэффициенты, каждый из разделов также обязательно имеет все нулевые коэффициенты. В противоположность этому, 64×64-пиксельный макроблок, который включает в себя, по меньшей мере, один ненулевой коэффициент, может дополнительно включать в себя значения CBP для разделов на следующем уровне разделения. Например, CBP64 со значением, равным единице, может включать в себя дополнительную информацию синтаксиса в виде однобитового значения CBP32 для каждого раздела 32×32 блока 64×64. То есть, в одном примере, каждому 32×32-пиксельному разделу (такому как блоки четырехкратного разделения уровня 1 на Фиг. 5) 64×64-пиксельного макроблока назначено значение CBP32 как часть информации синтаксиса 64×64-пиксельного макроблока. Как и в случае со значением CBP64, каждое значение CBP32 может содержать бит, который устанавливается в значение единицы, когда соответствующий 32×32-пиксельный блок имеет, по меньшей мере, один ненулевой коэффициент, и очищается в значение ноль, когда соответствующий 32×32-пиксельный блок имеет все нулевые коэффициенты. Кодер может дополнительно указать в синтаксисе кодируемой единицы, содержащей множество макроблоков, такой как кадр, вырезка или последовательность, максимальный размер макроблока в кодируемой единице, чтобы указывать декодеру то, каким образом интерпретировать информацию синтаксиса каждого макроблока, например какой декодер синтаксиса использовать для обработки макроблоков в кодируемой единице.
[0130] Таким образом, 64х64-пиксельный макроблок, который имеет все нулевые коэффициенты, может использовать единственный бит для того, чтобы представить тот факт, что макроблок имеет все нулевые коэффициенты, тогда как 64×64-пиксельный макроблок с, по меньшей мере, одним ненулевым коэффициентом может включать в себя информацию синтаксиса CBP, содержащую, по меньшей мере, пять битов: первый бит для представления того, что 64×64-пиксельный макроблок имеет ненулевой коэффициент и четыре дополнительных бита, каждый из которых представляет собой, включает ли в себя соответствующий один из 32×32-пиксельных разделов макроблока, по меньшей мере, один ненулевой коэффициент. В некоторых примерах, когда первые три из четырех дополнительных битов нулевые, четвертый дополнительный бит может не включаться, так что декодер может интерпретировать это как то, что последний раздел имеет единицу. То есть кодер может определить, что последний бит имеет значение единицы, когда первые три бита равны нулю и когда бит, представляющий более высокий иерархический уровень, имеет значение единицы. Например, префикс значения CBP64 в виде «10001» может быть сокращен до «1000», так как первый бит указывает на то, что, по меньшей мере, один из четырех разделов имеет ненулевые коэффициенты, и следующие три нуля указывают на то, что первые три раздела имеют все нулевые коэффициенты. Вследствие этого, декодер может сделать вывод, что именно последний раздел включает в себя ненулевой коэффициент, при отсутствии явного бита, информирующего декодер об этом случае, например, из битовой строки «1000». То есть декодер может интерпретировать префикс CBP в виде «1000» как «10001».
[0131] Подобным образом, однобитное CBP32 может быть установлено в значение «1», когда 32×32-пиксельный раздел включает в себя, по меньшей мере, один ненулевой коэффициент, и в значение «0», когда все из коэффициентов имеют значение, равное нулю. Если 32×32-пиксельный раздел имеет значение CBP, равное 1, тогда разделам этого раздела 32×32 на следующем уровне разделения могут быть назначены значения CBP, чтобы указывать, включают ли в себя соответствующие разделы любые ненулевые коэффициенты. Следовательно, значения CBP могут назначаться иерархическим способом на каждом уровне разделения до тех пор, пока более не останется уровней разделения или не будет существовать разделов, включающих в себя ненулевые коэффициенты.
[0132] Способом, описанным выше, кодеры и/или декодеры могут использовать иерархические значения CBP для представления того, включает ли в себя большой макроблок (например, 64×64 или 32×32) и его разделы, по меньшей мере, один ненулевой коэффициент или все нулевые коэффициенты. Соответственно, кодер может кодировать большой макроблок кодируемой единицы потока цифрового видео таким образом, что для блока макроблока, содержащего больше чем 16×16 пикселей, формируется информация синтаксиса типа блоков, которая указывает размер блока, формируется значение CBP для блока, так что значение CBP идентифицирует то, включает ли в себя блок, по меньшей мере, один ненулевой коэффициент, и, если применимо, формируются дополнительные значения CPB для различных уровней разделения блока.
[0133] В одном примере, иерархические значения CBP могут содержать любой массив битов (например, вектор битов) чья длина зависит от значений префикса. Массив может дополнительно представлять собой иерархию значений CBP, такую как древовидную структуру, как показано на Фиг. 5. Массив может представлять узлы дерева, развернутые в длину, где каждый узел соответствует биту в массиве. Когда узел дерева имеет бит, установленный в значение «1», в одном примере, то узел имеет четыре ответвления (соответствующие четырем разделам), а когда бит очищен в значение «0», то узел не имеет ответвлений.
X
Y
X
[0134] В этом примере, чтобы идентифицировать значения узлов, которые ответвляются от конкретного узла , кодер и/или декодер может определить четыре последовательных бита, начинающиеся с узла , который представляет собой узел, который ответвляется от узла  посредством вычисления
дерево
i
дерева
x
X
дереве
y
Y
X
y
y
y
X
где [] соответствует массиву битов с начальным индексом 0,  является целочисленным индексом в массиве [],  соответствует индексу узла  в [], а  соответствует индексу узла , который является первым узлом-ответвлением узла . Три последующие позиции массива (т.е. +1, +2 и +3) соответствуют другим узлам-ответвлениям узла .
[0135] Кодер, такой как кодер 50 видео (Фиг. 2), может назначить значения CBP для 16×16-пиксельных разделов 32×32-пиксельного раздела с, по меньшей мере, одним ненулевым коэффициентом, используя существующие способы, такие как способы, предписанные ITU H.264 для установки значений CBP блокам 16×16, как части синтаксиса 64×64-пиксельного макроблока. Кодер также может выбрать значения CBP для разделов соответствующих 32×32-пиксельных разделов, которые имеют, по меньшей мере, один ненулевой коэффициент на основании размера разделов, типа блока, соответствующего разделам (например, блок яркости или блок цветности) или прочих характеристик разделов. Примерные способы для установки значения CBP раздела соответствующего 32×32-пиксельного раздела рассматриваются более подробно в отношении Фиг. 8 и 9.
[0136] Фиг. 6-9 являются блок-схемами, иллюстрирующими примерные способы установки различных значений модели кодируемых блоков (CBP) в соответствии с методиками данного изобретения. Несмотря на то, что примерные способы на Фиг. 6-9 рассматриваются применительно к 64×64-пиксельному макроблоку, должно быть понятно, что аналогичные методики могут применяться для назначения иерархических значений CBP макроблокам других размеров. Несмотря на то, что примеры Фиг. 6-9 рассматриваются в отношении кодера 50 видео (Фиг. 2), должно быть понятно, что другие кодеры могут использовать аналогичные способы для назначения значений CBP макроблокам крупнее стандартных. Аналогичным образом, декодеры могут использовать аналогичные, хотя и обратные способы для интерпретации смысла конкретного значения CBP применительно к макроблоку. Например, если принятый в битовом потоке макроблок с межкадровым кодированием имеет значение CBP равное «0», декодер может не принять данные остатка для макроблока и может просто создать предсказанный блок, идентифицируемый вектором движения, в качестве декодированного макроблока, или группу предсказанных макроблоков, идентифицируемую векторами движения, применительно к разделам макроблока.
[0137] Фиг. 6 является блок-схемой, иллюстрирующей примерный способ установки значения CBP64 примерного 64×64-пиксельного макроблока. Аналогичный способ может применяться для макроблоков больше чем 64×64. Изначально, кодер 50 видео принимает (этап 100) 64×64-пиксельный макроблок. Затем модуль 36 оценки движения и модуль 35 компенсации движения могут сформировать один или более векторов движения и один или более блоков остатка для кодирования макроблока соответственно. Выходные данные модуля 38 преобразования, как правило, содержат массив значений коэффициентов преобразования остатка для блока с внутрикадровым кодированием или блок остатка для блока с межкадровым кодированием, чей массив квантуется модулем 40 квантования для создания серий квантованных коэффициентов преобразования.
[0138] Модуль 46 энтропийного кодирования может обеспечивать энтропийное кодирование и прочие функции кодирования, отдельные от энтропийного кодирования. Например, в дополнение к CAVLC, CABAC или другим функциям энтропийного кодирования, модуль 46 энтропийного кодирования или другой модуль кодера 50 видео могут определять значения CBP для больших макроблоков и разделов. В частности, модуль 46 энтропийного кодирования может определять значение CBP64 для 64×64-пиксельного макроблока посредством сначала определения (этап 102) того, имеет ли макроблок, по меньшей мере, один ненулевой, квантованный коэффициент преобразования. Когда модуль 46 энтропийного кодирования определяет, что все коэффициенты преобразования имеют нулевое значение («НЕТ» на этапе 102), модуль 46 энтропийного кодирования очищает значение CBP64 для макроблока 64×64, например сбрасывает (этап 104) бит для значения CBP64 в «0». Когда модуль 46 энтропийного кодирования идентифицирует, по меньшей мере, один ненулевой коэффициент («ДА» на этапе 102) для макроблока 64х64, модуль 46 энтропийного кодирования устанавливает (этап 106) значение CBP64, например устанавливает бит для значения CBP64 в «1».
[0139] Когда макроблок имеет все нулевые коэффициенты, модулю 46 энтропийного кодирования нет необходимости устанавливать какие-либо дополнительные значения CBP для разделов макроблока, что может уменьшить служебные данные. Тем не менее, в одном примере, когда макроблок имеет, по меньшей мере, один ненулевой коэффициент, модуль 46 энтропийного кодирования переходит к определению (этап 108) значений CBP для каждого из четырех 32×32-пиксельных разделов 64×64-пиксельного макроблока. Модуль 46 энтропийного кодирования может использовать способ, описанный в отношении Фиг. 7, четыре раза, один раз для каждого из четырех разделов, чтобы установить четыре значения CBP32, каждое из которых соответствует отличному одному из четырех 32×32-пиксельных разделов макроблока 64х64. Таким образом, когда макроблок имеет все нулевые коэффициенты, модуль 46 энтропийного кодирования может передавать один бит со значением «0», чтобы указать на то, что макроблок имеет все нулевые коэффициенты, тогда как когда макроблок имеет, по меньшей мере, один ненулевой коэффициент, модуль 46 энтропийного кодирования может передать пять битов: один бит для макроблока и четыре бита, каждый из которых соответствует одному из четырех разделов макроблока. В дополнение, когда раздел включает в себя, по меньшей мере, один ненулевой коэффициент, данные остатка для раздела могут отправляться в закодированном битовом потоке. В соответствии с примером CBP64, рассмотренным выше, когда первые три из четырех дополнительных битов нулевые, четвертый дополнительный бит может быть необязательным, так как декодер может определить, что он имеет значение единицы. Таким образом, в некоторых примерах, кодер может отправлять только три нуля, т.е. «000», нежели три нуля и единицу, т.е. «0001».
[0140] Фиг. 7 является блок-схемой, иллюстрирующей примерный способ установки значения CBP32 32×32-пиксельному разделу 64×64-пиксельного макроблока. Изначально, применительно к следующему уровню разделения, модуль 46 энтропийного кодирования принимает (этап 110) 32×32-пиксельный раздел, например один из четырех разделов, упомянутых в отношении Фиг. 6. Затем модуль 46 энтропийного кодирования определяет значение CBP32 для 32×32-пиксельного раздела посредством сначала определения (этап 112) того, включает ли в себя раздел, по меньшей мере, один ненулевой коэффициент. Когда модуль 46 энтропийного кодирования определяет, что все коэффициенты раздела имеют значение, равное нулю («НЕТ» на этапе 112), модуль 46 энтропийного кодирования очищает (этап 114) значение CBP32, например, сбрасывает бит для значения CBP32 в «0». Когда модуль 46 энтропийного кодирования идентифицирует, по меньшей мере, один ненулевой коэффициент раздела («ДА» на этапе 112), модуль 46 энтропийного кодирования устанавливает (этап 116) значение CBP32, например, устанавливает бит для значения CBP32 в значение «1».
[0141] В одном примере, когда раздел имеет все нулевые коэффициенты, модуль 46 энтропийного кодирования не устанавливает какие-либо дополнительные значения CBP для раздела. Тем не менее, когда раздел включает в себя, по меньшей мере, один ненулевой коэффициент, модуль 46 энтропийного кодирования определяет значение CBP для каждого из четырех 16×16-пиксельных разделов 32×32-пиксельного раздела макроблока. Модуль 46 энтропийного кодирования использует способ, описанный в отношении Фиг. 8, чтобы установить четыре значения CBP16, каждое из которых соответствует одному из четырех 16×16-пиксельных разделов.
[0142] Таким образом, когда раздел имеет все нулевые коэффициенты, модуль 46 энтропийного кодирования может установить бит со значением «0», чтобы указать на то, что раздел имеет все нулевые коэффициенты, тогда как, когда раздел имеет, по меньшей мере, один ненулевой коэффициент, модуль 46 энтропийного кодирования может передать пять битов: один бит для раздела и четыре бита, каждый из которых соответствует отличному одному из четырех суб-разделов раздела макроблока. Таким образом, каждый дополнительный уровень разделения может представлять четыре дополнительных бита CBP, когда раздел на предшествующем уровне разделения имеет, по меньшей мере, одно ненулевое значение коэффициента преобразования. В качестве одного примера, если макроблок 64х64 имеет значение CBP, равное 1, и четыре раздела 32×32 имеют значения CBP, равные 1, 0, 1 и 1 соответственно, то итоговым значением CBP на этом уровне является 11011. Дополнительные биты могут добавляться для дополнительных разделов соответствующих разделов 32×32, например в разделах 16×16.
[0143] Фиг. 8 является блок-схемой, иллюстрирующей примерный способ установки значения CBP16 16×16-пиксельного раздела 32×32-пиксельного раздела 64×64-пиксельного макроблока. Для определенных 16×16-пиксельных разделов, кодер 50 видео может использовать значения CBP, как предписано стандартом кодирования видео, таким как ITU H.264, как рассматривается ниже. Для других разделов 16×16, кодер 50 видео может использовать значения CBP в соответствии с другими методиками данного изобретения. Изначально, как показано на Фиг. 8, модуль 46 энтропийного кодирования принимает (этап 120) раздел 16×16, например, один из разделов 16×16 раздела 32×32, описанных в отношении Фиг. 7.
[0144] Затем модуль 46 энтропийного кодирования определяет (этап 122), является ли раздел движения для 16×16-пиксельного раздела большим, чем 8×8-пиксельный блок. Как правило, раздел движения описывает раздел, в котором сосредоточено движение. Например, 16×16-пиксельный раздел с только одним вектором движения может рассматриваться как раздел движения 16×16. Аналогичным образом, для 16×16-пиксельного раздела с двумя разделами 8×16, каждый из которых имеет один вектор движения, каждый из двух разделов 8х16 может рассматриваться как раздел движения 8×16. В любом случае, когда раздел движения не больше, чем 8×8-пиксельный блок («НЕТ» на этапе 122), модуль 46 энтропийного кодирования назначает (этап 124) значение CBP 16×16-пиксельному разделу таким же образом, как и предписывается ITU H.264, в примере на Фиг. 8.
[0145] Когда существует раздел движения для 16×16-пиксельного раздела, который больше чем 8х8-пиксельный блок («ДА» на этапе 122), модуль 46 энтропийного кодирования создает и отправляет (этап 125) значение lumacbp16, используя этапы, следующие за этапом 125. В примере на Фиг. 8, для создания значения lumacbp16, модуль 46 энтропийного кодирования определяет (этап 126), имеет ли 16×16-пиксельный компонент яркости раздела, по меньшей мере, один ненулевой коэффициент. Когда 16×16-пиксельный компонент яркости имеет все нулевые коэффициенты («НЕТ» на этапе 126), модуль 46 энтропийного кодирования назначает (этап 128) значение CBP16 в соответствии с разделом Цветности Модели Кодируемых Блоков по ITU H.264, в примере на Фиг. 8.
[0146] Когда модуль 46 энтропийного кодирования определяет, что 16×16-пиксельный компонент яркости имеет, по меньшей мере, один ненулевой коэффициент («ДА» на этапе 126), модуль 46 энтропийного кодирования определяет (этап 130) флаг размера преобразования для 16×16-пиксельного раздела. Флаг размера преобразования в целом указывает преобразование, использованное в отношении раздела. Преобразование, представляемое флагом размера преобразования, может включать в себя одно из преобразования 4×4, преобразования 8×8, преобразования 16×16, преобразования 16×8 или преобразования 8×16. Флаг размера преобразования может содержать целочисленное значение, которое соответствует пронумерованному значению, которое идентифицирует одно из возможных преобразований. Затем модуль 46 энтропийного кодирования может определить (этап 132), представляет ли флаг размера преобразования размер преобразования, больший или равный 16×8 (или 8×16).
[0147] Когда флаг размера преобразования не указывает на то, что размер преобразования больше и равен 16×8 (или 8×16) («НЕТ» на этапе 132), модуль 46 энтропийного кодирования назначает (этап 134) значение CBP16 в соответствии с ITU H.264, в примере на Фиг. 8. Когда флаг размера преобразования указывает на то, что размер преобразования больше или равен 16×8 (или 8×16) («ДА» на этапе 132), то затем модуль 46 энтропийного кодирования определяет (этап 136), является ли тип применительно к 16×16-пиксельному разделу либо двумя 16х8, либо двумя 8×16-пиксельными разделами.
[0148] Когда тип применительно к 16×16-пиксельному разделу не является двумя 16×8 и не является двумя 8×16-пиксельными разделами («НЕТ» на этапе 138), модуль 46 энтропийного кодирования назначает (этап 140) значение CBP в соответствии с Разделом Кодируемых Блоков Цветности, предписанным ITU H.264, в примере на Фиг. 8. Когда тип применительно к 16×16-пиксельному разделу является либо двумя 16×8, либо двумя 8×16-пиксельными разделами («ДА» на этапе 136), то модуль 46 энтропийного кодирования также использует Модель Кодируемых Блоков Цветности, предписанную ITU H.264, но в дополнение назначает (этап 142) значение CBP16 двухбитного значения luma16×8_CBP, например, в соответствии со способом, описанным в отношении Фиг. 9.
[0149] Фиг. 9 является блок-схемой, иллюстрирующей примерный способ определения значения двухбитного luma16×8_CBP. Модуль 46 энтропийного кодирования принимает (этап 150) 16×16-пиксельный раздел, который дополнительно разделен на два 16×8 или два 8×16-пиксельных раздела. Модуль 46 энтропийного кодирования в целом назначает каждый бит luma16×8_CBP в соответствии с тем, включает ли в себя соответствующий суб-блок 16×16-пиксельного раздела, по меньшей мере, один ненулевой коэффициент.
[0150] Модуль 46 энтропийного кодирования определяет (этап 152), имеет ли первый суб-блок 16×16-пиксельного раздела, по меньшей мере, один ненулевой коэффициент, чтобы определить, имеет ли первый суб-блок, по меньшей мере, один ненулевой коэффициент. Когда первый суб-блок имеет все нулевые коэффициенты («НЕТ» на этапе 152), модуль 46 энтропийного кодирования очищает (этап 154) первый бит luma16×8_CBP, например, назначает luma16×8_CBP[0] значение «0». Когда первый суб-блок имеет, по меньшей мере, один ненулевой коэффициент («ДА» на этапе 152), модуль 46 энтропийного кодирования устанавливает (этап 156) первый бит luma16×8_CBP, например, назначает luma16×8_CBP[0] значение «1».
[0151] Модуль 46 энтропийного кодирования также определяет (этап 158), имеет ли второй суб-раздел 16×16-пиксельного раздела, по меньшей мере, один ненулевой коэффициент. Когда второй суб-раздел имеет все нулевые коэффициенты («НЕТ» на этапе 158), модуль 46 энтропийного кодирования очищает (этап 160) второй бит luma16×8_CBP, например, назначает luma16×8_CBP[1] значение «0». Когда второй суб-блок имеет, по меньшей мере, один ненулевой коэффициент («ДА» на этапе 158), тогда модуль 46 энтропийного кодирования устанавливает (этап 162) второй бит luma16×8_CBP, например, назначает luma16×8_CBP[1] значение «1».
[0152] Следующий псевдокод предоставляет примерный вариант реализации способов, описанных в отношении Фиг. 8 и 9:
[0153] В псевдокоде, «lumacbp16» соответствует операции дополнения однобитного флага, указывающего, имеет или нет весь блок яркости 16×16 ненулевые коэффициенты. Когда «lumacbp16» равно единице, существует, по меньшей мере, один ненулевой коэффициент. Функция «Transform_size_flag» («флаг_размера_преобразования») относится к выполняемому вычислению, результатом которого является указание на использованное преобразование, например, одного из преобразования 4×4, преобразования 8×8, преобразования 16×16 (для раздела движения, равного или большего чем 16×16), преобразования 16×8 (для P_16×8), или преобразования 8×16 (для P_8×16). TRANSFORM_SIZE_GREATER_THAN_16×8 (РАЗМЕР_ПРЕОБРАЗОВАНИЯ_БОЛЬШЕ_ЧЕМ_16×8) является пронумерованным значением (например, «2»), которое используется для указания того, что размер преобразования больше или равен 16×8 или 8×16. Результат функции Transform_size_flag вносится в информацию синтаксиса 64×64-пиксельного макроблока.
[0154] «luma16×8_cbp» относится к вычислению, которое создает двухбитное число, при этом каждый бит указывает, имеет или нет один из двух разделов P_16×8 или P_8×16 ненулевой коэффициент. Двухбитное число, получаемое из luma16×8_cbp, вставляется в синтаксис 64х64-пиксельного макроблока. Значение «chroma_cbp» может быть вычислено таким же образом, что и Модель Кодируемых Блоков Цветности, как предписывается ITU H.264. Вычисленное значение chroma_cbp вставляется в информацию синтаксиса 64×64-пиксельного макроблока. Функция h264_cbp может вычисляться таким же образом, как и CBP, определенное в ITU H.264. Вычисленное значение h264_cbp вставляется в информацию синтаксиса 64×64-пиксельного макроблока.
[0155] В целом, способ в соответствии с Фиг. 6-9 может включать в себя: кодирование, при помощи кодера видео, видеоблока, обладающего размером, большим чем 16×16 пикселей; формирование информации синтаксиса типа блоков, которая указывает размер блока; и формирование значения модели кодируемых блоков для закодированного блока, при этом значение модели кодируемых блоков указывает на то, включает ли в себя закодированный блок, по меньшей мере, один ненулевой коэффициент.
[0156] Фиг. 10 является структурной схемой, иллюстрирующей пример компоновки 64×64-пиксельного макроблока. Макроблок на Фиг. 10 содержит четыре раздела 32×32, обозначенные на Фиг. 10 A, B, C и D. Как рассматривалось в отношении Фиг. 4A, в одном примере, блок может быть разделен любым одним из четырех способов: цельный блок (64х64) без суб-разделов, два горизонтальных раздела одинакового размера (32×64 и 32×64), два вертикальных раздела одинакового размера (64×32 и 64×32) или четыре квадратных раздела одинакового размера (32×32, 32×32, 32×32 и 32×32).
[0157] В примере на Фиг. 10, раздел всего блока содержит каждый из блоков A, B, C и D; первый один из двух горизонтальных разделов одинакового размера содержит A и B, в то время как второй один из двух горизонтальных разделов одинакового размера содержит C и D; первый один из двух вертикальных разделов одинакового размера содержит A и C, в то время как второй один из двух вертикальных разделов одинакового размера содержит B и D; и четыре квадратных раздела одинакового размера соответствуют одному из каждого из A, B, C и D. Аналогичные схемы разделения могут использоваться для любого размера блока, например, более крупного, чем 64×64 пикселей, 32×32 пикселей, 16×16 пикселей, 8×8 пикселей или видеоблоков другого размера.
[0158] Когда видеоблок является блоком с внутрикадровым кодированием, могут использоваться различные способы для разделения видеоблока. Более того, каждый из разделов может быть с разным внутрикадровым кодированием, т.е. с разными режимами, такими как разные внутрикадровые режимы. Например, раздел 32×32, такой как раздел A на Фиг. 10, может быть дополнительно разделен на четыре блока одинакового размера, соответствующие размеру 16×16 пикселей. В качестве одного примера, ITU H.264 описывает три разных способа для внутрикадрового кодирования макроблока 16×16, включая внутрикадровое кодирование на уровне 16×16, внутрикадровое кодирование на уровне 8х8 и внутрикадровое кодирование на уровне 4×4. Тем не менее, ITU H.264 предписывает кодирование каждого раздела макроблока 16×16, используя один и тот же режим внутрикадрового кодирования. Вследствие этого, в соответствии с ITU H.264, если один суб-блок макроблока 16×16 должен быть с внутрикадровым кодированием на уровне 4×4, то каждый суб-блок макроблока 16×16 должен быть с внутрикадровым кодированием на уровне 4×4.
[0159] В противоположность этому, кодер, сконфигурированный в соответствии с методиками данного изобретения, может применять подход со смешанным режимом. Применительно к внутрикадровому кодированию, например, большой макроблок может иметь разные разделы, закодированные при помощи разных режимов кодирования. В качестве иллюстрации, в разделе 32×32, один раздел 16×16 может быть с внутрикадровым кодированием на уровне 4×4 пикселей, в то время как прочие разделы 16×16 могут быть с внутрикадровым кодированием на уровне 8×8 пикселей, а один раздел 16×16 может быть с внутрикадровым кодированием на уровне 16×16, например, как показано на Фиг. 4B.
[0160] Когда видеоблок должен быть разделен на четыре суб-блока одинакового размера для внутрикадрового кодирования, первым блоком, который должен быть закодирован с внутрикадровым кодированием, может быть верхний левый блок, за которым следует блок непосредственно справа от первого блока, за которым следует блок непосредственно ниже первого блока и за которым в итоге следует блок ниже и правее первого блока. Со ссылкой на примерный блок на Фиг. 10, порядок внутрикадрового кодирования мог бы следовать от A к B к C и в итоге к D. Несмотря на то, что Фиг. 10 изображает 64×64-пиксельный макроблок, внутрикадровое кодирование разделенного блока другого размера может следовать точно такому же порядку.
[0161] Когда видеоблок должен быть закодирован с межкадровым кодированием, как часть P-кадра или P-вырезки, то блок может быть разделен на любые из четырех описанных выше разделов, каждый из которых может кодироваться отдельно. То есть каждый раздел блока может кодироваться в соответствии с разными режимами кодирования, либо кодироваться с внутрикадровым кодированием (I-кодируемый), либо кодироваться с межкадровым кодированием со ссылкой на один опорный кадр/вырезку/список (P-кодируемый). Таблица 1 ниже резюмирует информацию межкадрового кодирования применительно к каждому потенциальному разделу блока размером N×N. Там, где Таблица 1 ссылается на «M», M=N/2. В Таблице 1 ниже L0 относится к «списку 0», т.е. опорному кадру/вырезки/списку. При принятии решения о том, каким образом лучше всего разделить блок NxN, кодер, такой как кодер 50 видео, может анализировать информацию затрат искажения и скорости для каждого MB_N_типа (т.е. каждого типа разделения) на основании множителя Лагранжа, как рассматривается более подробно в отношении Фиг. 11, выбирая наименьшие затраты, в качестве наилучшего способа разделения.
Таблица 1
MB_N_тип
Имя MB_N_типа
# частей
Режим Предсказания части 1
Режим Предсказания части 2
Ширина части
Высота части
0
P_L0_N×N
1
Pred_L0
Неприменимо
N
N
1
P_L0_L0_N×M
2
Pred_L0
Pred_L0
N
M
2
P_L0_L0_M×N
2
Pred_L0
Pred_L0
M
N
3
PN_M×M
4
Неприменимо
Неприменимо
M
M
Подразу-мевается
PN_Skip
1
Pred_L0
Неприменимо
N
N
[0162] В таблице 1 выше, элементы столбца «MB_N_тип» являются ключами для каждого типа раздела блока N×N. Элементы столбца «Имя MB_N_типа» являются именами разных типов разделения блока N×N. «P» в имени относится к блоку с межкадровым кодированием, использующим P-кодирование, т.е. по отношению к одному кадру/вырезке/списку. «L0» в имени относится к опорному кадру/вырезке/списку, например «список 0» используется в качестве опорных кадров или вырезок для P кодирования. «N×N» относится к разделению, соответствующему цельному блоку, «N×M» относится к разделению, соответствующему двум разделам шириной N и высотой M, «M×N» относится к разделению, соответствующему двум разделам шириной M и высотой N, «M×M» относится к разделению, соответствующему четырем разделам одинакового размера, каждый из которых шириной M и высотой M.
[0163] В таблице 1, PN_Skip подразумевает, что блок был «пропущен», например из-за того, что блок, получающийся при кодировании, имеет все нулевые коэффициенты. Элементы столбца «Режим предсказания части 1» относятся к опорному кадру/вырезке/списку для суб-раздела 1 раздела, в то время как элементы столбца «Режим Предсказания части 2» относятся к опорному кадру/вырезке/списку для суб-раздела 2 раздела. Так как P_L0_N×N имеет только один раздел, соответствующий элемент «Режима Предсказания части 2» имеет значение «Неприменимо», так как не существует второго суб-раздела. Для PN_M×M существует четыре блока разделения, которые могут кодироваться отдельно. По этой причине, оба столбца режима предсказания для PN_M×M включают в себя «Неприменимо». PN_Skip, как и при P_L0_N×N имеет только одну часть, таким образом соответствующий элемент столбца «Режим Предсказания части 2» соответствует «Неприменимо».
[0164] Таблица 2 ниже включает в себя столбцы и элементы, аналогичные таблице 1. Тем не менее, таблица 2 соответствует различным режимам кодирования для блоков с межкадровым кодированием, использующим двунаправленное предсказание (B-закодированные). Вследствие этого, каждый раздел может кодироваться при помощи либо одного из, либо как первого кадра/вырезки/списка (L0), так и второго кадра/вырезки/списка (L1). «BiPred» относится к соответствующему разделу, предсказанному при помощи как L0, так и L1. В таблице 2, наименование столбцов и значений по смыслу аналогичны тем, что используются в таблице 1.
Таблица 2
MB_N_тип
Имя MB_N_тип
# частей
Режим Предсказания части 1
Режим Предсказания части 2
Ширина части
Высота части
0
B_Direct_N×N
Непри-менимо
Непосредственно
Неприменимо
N
N
1
B_L0_N×N
1
Pred_L0
Неприменимо
N
N
2
B_L1_N×N
1
Pred_L1
Неприменимо
N
N
3
B_Bi_N×N
1
BiPred
Неприменимо
N
N
4
B_L0_L0_N×M
2
Pred_L0
Pred_L0
N
M
5
B_L0_L0_M×N
2
Pred_L0
Pred_L0
M
N
6
B_L1_L1_N×M
2
Pred_L1
Pred_L1
N
M
7
B_L1_L1_M×N
2
Pred_L1
Pred_L1
M
N
8
B_L0_L1_N×M
2
Pred_L0
Pred_L1
N
M
9
B_L0_L1_M×N
2
Pred_L0
Pred_L1
M
N
10
B_L1_L0_N×M
2
Pred_L1
Pred_L0
N
M
11
B_L1_L0_M×N
2
Pred_L1
Pred_L0
M
N
12
B_L0_Bi_N×M
2
Pred_L0
BiPred
N
M
13
B_L0_Bi_M×N
2
Pred_L0
BiPred
M
N
14
B_L1_Bi_N×M
2
Pred_L1
BiPred
N
M
15
B_L1_Bi_M×N
2
Pred_L1
BiPred
M
N
16
B_Bi_L0_N×M
2
BiPred
Pred_L0
N
M
17
B_Bi_L0_M×N
2
BiPred
Pred_L0
M
N
18
B_Bi_L1_N×M
2
BiPred
Pred_L1
N
M
19
B_Bi_L1_M×N
2
BiPred
Pred_L1
M
N
20
B_Bi_Bi_N×M
2
BiPred
BiPred
N
M
21
B_Bi_Bi_M×N
2
BiPred
BiPred
M
N
22
BN_M×M
4
Неприменимо
Неприменимо
M
M
Подразу-мевается
BN_Skip
Непри-менимо
Непосредственно
Неприменимо
M
M
[0165] Фиг. 11 является блок-схемой, иллюстрирующей примерный способ вычисления оптимального разделения и способов кодирования для N×N-пиксельного видеоблока. В целом, способ на Фиг. 11 содержит вычисление затрат для каждого отличного способа кодирования (например, разных пространственных или временных режимов), применяемых к каждому отличному способу разделения, показанному на, например, Фиг. 4A, и выбор сочетания режима кодирования и режима разделения с наилучшими затратами искажения и скорости применительно к N×N-пиксельному видеоблоку. Затраты в целом могут вычисляться с использованием множителя Лагранжа и значений скорости и искажения, таким образом, что затраты искажения и скорости=искажению+λ*скорость, где искажение представляет собой ошибку между исходным блоком и закодированным блоком, а скорость представляет собой скорость передачи битов, необходимую для обеспечения режима кодирования. В некоторых случаях, скорость и искажение могут определяться на уровне макроблока, раздела, вырезки или кадра.
(Режим,
)
(Режим,
)
[0166] Изначально, кодер 50 видео принимает (этап 170) видеоблок N×N, который должен быть закодирован. Например, кодер 50 видео принимает большой макроблок 64×64 или его раздел, такой как, например, раздел 32×32 или 16×16, для которого кодер 50 видео должен выбрать способ кодирования и разделения. Затем кодер 50 видео вычисляет (этап 172) затраты на кодирование блока N×N, используя многообразие разных режимов кодирования, таких как разные режимы внутрикадрового или межкадрового кодирования. Для вычисления затрат на пространственное кодирование блока N×N, кодер 50 видео может вычислить искажение и скорость передачи битов, требуемую для кодирования блока N×N при заданном режиме кодирования, и затем вычислить затраты=искажениюNxN+λ*скоростьNxN. Кодер 50 видео может закодировать макроблок, используя указанную методику кодирования, и определить результирующие затраты скорости передачи битов и искажение. Искажение может определяться на основании разности между пикселями в закодированном макроблоке и пикселями в исходном макроблоке, например, на основании показателя суммы абсолютных разностей (SAD), показателя суммы квадратичных разностей (SSD) или других показателей разности между пикселями.
(Режим, ПЕРВЫЙ РАЗДЕЛ, Nx(N/2))
(Режим, ПЕРВЫЙ РАЗДЕЛ, Nx(N/2))
[0167] Кодер 50 видео затем может разделить блок N×N на два одинакового размера непересекающихся горизонтальных раздела N×(N/2). Кодер 50 видео может вычислить (этап 176) затраты на кодирование каждого из разделов, используя разные режимы кодирования. Например, для вычисления затрат на кодирование первого раздела N×(N/2), кодер 50 видео может вычислить искажение и скорость передачи битов для кодирования первого раздела N×(N/2), и затем вычислить затраты=искажению+λ*скорость.
(Режим, ПЕРВЫЙ РАЗДЕЛ, (N/2)xN)
(Режим, ПЕРВЫЙ РАЗДЕЛ, (N/2)xN)
[0168] Затем кодер 50 видео может разделить блок N×N на два одинакового размера непересекающиеся вертикальные разделы (N/2)×N. Кодер 50 видео может вычислить (этап 178) затраты на кодирование каждого из разделов, используя разные режимы кодирования. Например, для вычисления затрат на кодирование первого раздела (N/2)×N, кодер 50 видео может вычислить искажение и скорость передачи битов для кодирования первого раздела (N/2)×N, и затем вычислить затраты=искажению+λ*скорость. Кодер 50 видео может выполнить аналогичные вычисления применительно к затратам на кодирование второго одного из разделов (N/2)×N макроблока.
(Режим, ВЕРХНИЙ ЛЕВЫЙ, (N/2)х(N/2))
(Режим, ВЕРХНИЙ ЛЕВЫЙ, (N/2)х(N/2))
(Режим, ВЕРХНИЙ ЛЕВЫЙ, (N/2)х(N/2))
[0169] Затем кодер 50 видео может разделить блок N×N на четыре одинакового размера непересекающихся раздела (N/2)×(N/2). Кодер 50 видео может вычислить (этап 180) затраты на кодирование каждого из разделов, используя разные режимы кодирования. Для вычисления затрат на кодирование разделов (N/2)×(N/2), кодер 50 видео может сначала вычислить искажение и скорость передачи битов для кодирования верхнего левого раздела (N/2)×(N/2), и найти затраты на него как затраты=искажению+λ*скорость. Кодер 50 видео может аналогичным образом вычислить затраты для каждого блока (N/2)×(N/2) в порядке: (1) верхний левый раздел, (2) верхний правый раздел, (3) нижний левый раздел, (4) нижний правый раздел. Кодер 50 видео, в некоторых примерах, дополнительно делает рекурсивные вызовы к данному способу по одному или более разделам (N/2)×(N/2) для вычисления затрат на разделение и отдельное кодирование каждого из разделов (N/2)×(N/2), например, как для разделов (N/2)×(N/4), разделов (N/4)×(N/2) и разделов (N/4)×(N/4).
[0170] Далее кодер 50 видео может определить (этап 182), какое сочетание разделения и режима кодирования дает наилучшие, т.е. самые низкие, затраты в отношении скорости и искажения. Например кодер 50 видео может сравнить наилучшие затраты на кодирование двух соседних разделов (N/2)×(N/2) с наилучшими затратами на кодирование раздела N×(N/2), содержащего два соседних раздела (N/2)×(N/2). Когда совокупные затраты на кодирование двух соседних разделов (N/2)×(N/2) превышают затраты на кодирование содержащего их раздела N×(N/2), кодер 50 видео может выбрать вариант с наименьшими затратами кодирования раздела N×(N/2). В целом, кодер 50 видео может применять любое сочетание способа разделения и режима кодирования для каждого раздела, чтобы установить способ разделения и кодирования с наименьшими затратами. В некоторых случаях, кодер 50 видео может быть сконфигурирован для оценки более ограниченного набора сочетаний разделения и режима кодирования.
[0171] По определении наилучших, например с наименьшими затратами, способов разделения и кодирования, кодер 50 видео может закодировать (этап 184) макроблок N×N, используя определенный способ с наилучшими затратами. В некоторых случаях, результатом может быть большой макроблок, имеющий разделы, которые кодируются с использованием разных режимов кодирования. Способность применять смешанный режим кодирования к большому макроблоку, как например применение разных режимов кодирования к разным разделам в большом макроблоке, может предоставить возможность закодировать макроблок со сниженными затратами.
[0172] В некоторых примерах, способ кодирования при помощи смешанных режимов может включать в себя: прием, при помощи кодера 50 видео, видеоблока, обладающего размером, большим чем 16×16 пикселей; разделение блока на разделы; кодирование одного из разделов при помощи первого режима кодирования; кодирование других из разделов при помощи второго режима кодирования, отличного от первого режима кодировании; и формирование информации синтаксиса типа блоков, которая указывает размер блока и идентифицирует разделы и режимы кодирования, использованные для кодирования разделов.
[0173] Фиг. 12 является структурной схемой, иллюстрирующей примерный 64х64-пиксельный большой макроблок с разными разделами и разными выбранными для каждого раздела способами кодирования. В примере на Фиг. 12, каждый раздел помечен при помощи одного из обозначений «I», «P» или «B». Разделы, помеченные как «I», являются разделами, в отношении которых кодер выбрал использование внутрикадрового кодирования, например, на основании оценки искажения и скорости. Разделы, помеченные как «P», являются разделами, в отношении которых кодер выбрал использование одноопорного межкадрового кодирования, например, на основании оценки искажения и скорости. Разделы, помеченные как «B», являются разделами, в отношении которых кодер выбрал использование межкадрового кодирования с двунаправленным предсказанием, например, на основании оценки искажения и скорости. В примере на Фиг. 12, разные разделы внутри одного и того же большого макроблока имеют разные режимы кодирования, включая разные размеры разделов и суб-разделов и разные режимы внутрикадрового и межкадрового кодирования.
[0174] Большой макроблок является макроблоком, идентифицируемым посредством элемента синтаксиса макроблока, который идентифицирует тип макроблока, например mb64_тип или mb32_тип, применительно к заданному стандарту кодирования, такому как улучшение стандарта кодирования H.264. Элемент синтаксиса типа макроблока может обеспечиваться в качестве элемента синтаксиса заголовка макроблока в закодированном битовом потоке видео. I-, P- и B-закодированные разделы, проиллюстрированные на Фиг. 12, могут кодироваться в соответствии с разными режимами кодирования, например режимами внутрикадрового или межкадрового предсказания с разными размерами блоков, включая режимы размера большого блока для больших разделов, размером больше чем 16×16, или режимам H.264, для разделов, которые размером меньше или равны 16×16.
[0175] В одном примере, кодер, такой как кодер 50 видео, может использовать примерный способ, описанный в отношении Фиг. 11, для выбора различных режимов кодирования и размеров разделов для разных разделов и суб-разделов примерного большого макроблока на Фиг. 12. Например, кодер 50 видео может принять макроблок 64×64, выполнить способ с Фиг. 11, и создать в результате примерный макроблок с Фиг. 12 с разными размерами разделов и режимами кодирования. Тем не менее, должно быть понятно, что варианты выбора разделения и режимов кодирования могут проистекать из применения способа с Фиг. 11, например, на основании типа кадра, из которого был выбран макроблок, и на основании входного макроблока, в отношении которого применяется способ. Например, когда кадр содержит I-кадр, каждый раздел будет с внутрикадровым кодированием. В качестве другого примера, когда кадр содержит P-кадр, каждый раздел может быть либо с внутрикадровым кодированием, либо с межкадровым кодированием, основанным на одном опорном кадре (т.е. без двунаправленного предсказания).
[0176] Предполагается, что примерный макроблок на Фиг. 12 был выбран в целях иллюстрации из кадра с двунаправленным предсказанием (B-кадра). В других примерах, если макроблок выбирается из P-кадра, кодер 50 видео не мог бы кодировать раздел, используя двунаправленное предсказание. Аналогичным образом, если макроблок выбирается из I-кадра, кодер 50 видео не мог бы кодировать раздел, используя межкадровое кодирование, как P-кодирование, так и B-кодирование. Тем не менее, в любом случае, кодер 50 видео может выбрать разные размеры разделов для разных разделов макроблока и сделать выбор в отношении кодирования каждого раздела, используя любые доступные режимы кодирования.
[0177] В примере на Фиг. 12, предполагается, что сочетание раздела и выбора режима основано на анализе искажения и скорости, приведшему к одному B-закодированному разделу 32×32, одному P-закодированному разделу 32×32, одному I-закодированному разделу 16×32, одному B-закодированному разделу 32×16, одному P-закодированному разделу 16×16, одному P-закодированному разделу 16×8, одному P-закодированному разделу 8×16, одному P-закодированному разделу 8×8, одному B-закодированному разделу 8×8, одному I-закодированному разделу 8×8, и многочисленным более мелким суб-разделам, имеющим различные режимы кодирования. Пример на Фиг. 12 предоставлен в целях концептуальной иллюстрации смешанного режима кодирования разделов в большом макроблоке и не обязательно должен рассматриваться в качестве фактических результатов кодирования в отношении конкретного большого макроблока 64х64.
[0178] Фиг. 13 является блок-схемой, иллюстрирующей примерный способ определения оптимального размера макроблока для кодирования кадра или вырезки видеопоследовательности. Несмотря на то, что способ описан в отношении выбора оптимального размера макроблока применительно к кадру, способ, аналогичный тому, что описан в связи с Фиг. 13, может использоваться для выбора оптимального размера макроблока применительно к вырезке. Аналогичным образом, несмотря на то, что способ на Фиг. 13 описан в отношении кодера 50 видео, должно быть понятно, что любой кодер может использовать примерный способ с Фиг. 13 для определения оптимального (например, менее затратного) размера макроблока для кодирования кадра видеопоследовательности. В целом, способ на Фиг. 13 содержит выполнение прохода кодирования три раза, один раз для каждого из макроблока 16×16, макроблока 32×32 и макроблока 64×64, и кодер видео может вычислить показатели искажения и скорости для каждого прохода, чтобы определить, какой размер макроблока обеспечивает наилучший показатель искажения и скорости.
16
16
16
16
16
16
16
[0179] Сначала кодер 50 видео может кодировать (этап 190) кадр, используя 16×16-пиксельные макроблоки во время первого прохода кодирования, например, используя функциональное кодирование (кадр, MB16_тип), для создания закодированного кадра F. После первого прохода кодирования, кодер 50 видео может вычислить (этап 192) скорость передачи битов и искажение, основанные на использовании 16×16-пиксельных макроблоков как R и D соответственно. Затем кодер 50 видео может вычислить (этап 194) показатель искажения и скорости в виде затрат при использовании 16×16-пиксельных макроблоков C, используя множитель Лагранжа C=D+λ*R. Режимы кодирования и размеры разделов могут выбираться применительно к 16×16-пиксельным макроблокам, например, в соответствии со стандартом H.264.
32
32
32
32
32
32
32
[0180] Кодер 50 видео затем может кодировать (этап 196) кадр, используя 32×32-пиксельные макроблоки во время второго прохода кодирования, например, используя функциональное кодирование (кадр, MB32_тип), для создания закодированного кадра F. После второго прохода кодирования, кодер 50 видео может вычислить (этап 198) скорость передачи битов и искажение, основанные на использовании 32×32-пиксельных макроблоков как R и D, соответственно. Затем кодер 50 видео может вычислить (этап 200) показатель искажения и скорости в виде затрат при использовании 32×32-пиксельных макроблоков C, используя множитель Лагранжа C=D+λ*R. Режимы кодирования и размеры разделов могут выбираться применительно к 32×32-пиксельным макроблокам, например, используя методики оценки скорости и искажения, как описано в отношении Фиг. 11 и 12.
64
64
64
64
64
64
64
[0181] Кодер 50 видео затем может кодировать (этап 202) кадр, используя 64х64-пиксельные макроблоки во время третьего прохода кодирования, например, используя функциональное кодирование (кадр, MB64_тип) для создания закодированного кадра F. После третьего прохода кодирования, кодер 50 видео может вычислить (этап 204) скорость передачи битов и искажение, основанные на использовании 64×64-пиксельных макроблоков как R и D соответственно. Затем кодер 50 видео может вычислить (этап 206) показатель искажения и скорости в виде затрат при использовании 64×64-пиксельных макроблоков C, используя множитель Лагранжа C=D+λ*R. Режимы кодирования и размеры разделов могут выбираться применительно к 64х64-пиксельным макроблокам, например, используя методики оценки скорости и искажения, как описано в отношении Фиг. 11 и 12.
16
32
64
16
16
32
32
64
64
[0182] Далее, кодер 50 видео может определить (этап 208) какой из показателей C, C, и C является наиболее низким для кадра. Кодер 50 видео может выбрать (этап 210) использование кадра, закодированного с размером макроблока, который дает наиболее низкие затраты. Таким образом, например, когда наиболее низким является C, то кодер 50 видео может передать кадр F, закодированный при помощи макроблоков 16×16, в качестве закодированного кадра в битовом потоке для хранения или передачи декодеру. Когда наиболее низким является C, кодер 50 видео может передать F, закодированный при помощи макроблоков 32×32. Когда наиболее низким является C, кодер 50 видео может передать F, закодированный при помощи макроблоков 64х64.
[0183] В других примерах, кодер 50 видео может выполнять проходы кодирования в любом порядке. Например, кодер 50 видео может начать с прохода кодирования с макроблоком 64×64, вторым выполнить проход кодирования с макроблоком 32×32 и закончить проходом кодирования с макроблоком 16×16. Также, аналогичные способы могут использоваться для кодирования других кодируемых единиц, содержащих множество макроблоков, таких как вырезки с разными размерами макроблоков. Например, кодер 50 видео может применить способ, аналогичный тому, что представлен на Фиг. 13, для выбора оптимального размера макроблока при кодировании вырезок кадра, нежели всего кадра.
[0184] Кодер 50 видео также может передавать идентификатор размера макроблоков для конкретной кодируемой единицы (например, кадра или вырезки) в заголовке кодируемой единицы для последующего использования декодером. В соответствии со способом на Фиг. 13, способ может включать в себя: прием, при помощи кодера цифрового видео, кодируемой единицы потока цифрового видео; вычисление первого показателя искажения и скорости, соответствующего искажению и скорости для кодирования кодируемой единицы с использованием первого множества блоков, при этом каждый из которых содержит 16×16 пикселей; вычисление второго показателя искажения и скорости, соответствующего искажению и скорости для кодирования кодируемой единицы с использованием второго множества блоков, при этом каждый из которых содержит больше чем 16×16 пикселей; и определение того, какой из первого показателя искажения и скорости или второго показателя искажения и скорости является наиболее низким для кодируемой единицы. Способ может дополнительно включать в себя, когда в качестве наиболее низкого определяется первый показатель искажения и скорости, кодирование кодируемой единицы с использованием первого множества блоков, а когда в качестве наиболее низкого определяется второй показатель искажения и скорости, кодирование кодируемой единицы с использованием второго множества блоков.
[0185] Фиг. 14 является структурной схемой, иллюстрирующей примерный прибор 230 беспроводной связи, включающий в себя кодер/декодер (КОДЕК) 234 видео, который может кодировать и/или декодировать данные цифрового видео, используя макроблоки больше стандартных, используя любую из многообразных методик, описанных в данном изобретении. В примере на Фиг. 14, прибор 230 беспроводной связи включает в себя видеокамеру 232, кодер-декодер (КОДЕК) 234 видео, модулятор/демодулятор (модем) 236, приемопередатчик 238, процессор 240, интерфейс 242 пользователя, память 244, прибор 246 хранения данных, антенну 248 и шину 250.
[0186] Компоненты, включенные в прибор 230 беспроводной связи, проиллюстрированный на Фиг. 14, могут быть реализованы при помощи любого приемлемого сочетания аппаратного обеспечения, программного обеспечения и/или встроенного программного обеспечения. В проиллюстрированном примере, компоненты изображены в качестве отдельных модулей. Тем не менее, в других примерах, различные компоненты могут быть объединены в совмещенном модуле внутри общего аппаратного обеспечения и/или программного обеспечения. В качестве одного примера, память 244 может хранить инструкции, исполняемые процессором 240, соответствующие различным функциям КОДЕКа 234 видео. В качестве другого примера, видеокамера 232 может включать в себя КОДЕК видео, который выполняет функции КОДЕКа 234 видео, например, по кодированию и/или декодированию видеоданных.
[0187] В одном примере, видеокамера 232 может соответствовать источнику 18 видео (Фиг. 1). В целом, видеокамера 232 может записывать видеоданные, захваченные массивом датчиков, для формирования данных цифрового видео. Видеокамера 232 может отправлять необработанные, записанные данные цифрового видео на КОДЕК 234 видео для кодирования и затем в прибор 246 хранения данных через шину 250 для сохранения данных. Процессор 240 может отправлять сигналы видеокамере 232 через шину 250 в отношении: режима, в котором должно записываться видео; частоты кадров, с которой должно записываться видео; времени, в которое необходимо завершить запись или изменить режим частоты кадров; времени, когда отправить видеоданные на КОДЕК 234 видео; или сигналы, указывающие прочие режимы или параметры.
[0188] Интерфейс 242 пользователя может содержать один или более интерфейсов, таких как интерфейсы ввода и вывода. Например, интерфейс 242 пользователя может включать в себя сенсорный экран, цифровую клавиатуру, кнопки, экран, который может выступать в роли видоискателя, микрофон, громкоговоритель или прочие интерфейсы. Так как видеокамера 232 принимает видеоданные, процессор 240 может сигнализировать видеокамере 232, отправлять видеоданные интерфейсу 242 пользователя для отображения в видоискателе.
[0189] КОДЕК 234 видео может кодировать видеоданные от видеокамеры 232 и декодировать видеоданные, принятые через антенну 248, приемопередатчик 238 и модем 236. КОДЕК 234 видео в дополнение или в качестве альтернативы может декодировать ранее закодированные данные, принятые от прибора 246 хранения данных, для воспроизведения. КОДЕК 234 видео может кодировать и/или декодировать данные цифрового видео, используя макроблоки, которые больше размера макроблоков, предписанного обычными стандартами кодирования видео. Например, КОДЕК 234 видео может кодировать и/или декодировать данные цифрового видео, используя большой макроблок, содержащий 64х64 пикселей или 32×32 пикселей. Большой макроблок может идентифицироваться при помощи элемента синтаксиса типа макроблоков в соответствии со стандартом видео, таким как улучшение стандарта H.264.
[0190] КОДЕК 234 видео может выполнять функции либо одного из, либо и кодера 50 видео (Фиг. 2) и/или декодера 60 видео (Фиг. 3), а также любые прочие функции кодирования/декодирования или методики, в соответствии с тем, что описано в данном изобретении. Например, КОДЕК 234 может разделять большой макроблок на многообразие разных по размеру, более мелких разделов, и использовать разные режимы кодирования, например пространственный (I) или временной (P или B), для выбранных разделов. Выбор размеров разделов и режимов кодирования может основываться на результатах искажения и скорости, полученных для таких размеров разделов и режимов кодирования. КОДЕК 234 также может использовать иерархические значения модели кодируемых блоков (CBP) для идентификации кодируемых макроблоков и разделов, обладающих ненулевыми коэффициентами, внутри большого макроблока. В дополнение, в некоторых примерах, КОДЕК 234 может сравнивать показатели искажения и скорости для больших и маленьких макроблоков для выбора размера макроблока, обеспечивающего наиболее благоприятные результаты для кадра, вырезки или другой кодируемой единицы.
[0191] Пользователь может взаимодействовать с интерфейсом 242 пользователя для передачи записанной видеопоследовательности в приборе 246 хранения данных на другой прибор, такой как другой прибор беспроводной связи, через модем 236, приемопередатчик 238 и антенну 248. Видеопоследовательность может быть закодирована в соответствии со стандартом кодирования, таким как MPEG-2, MPEG-3, MPEG-4, H.263, H.264 или другим стандартом кодирования видео, поддерживающим улучшения или изменения, описанные в данном изобретении. Например, видеопоследовательность также может быть закодирована с использованием макроблоков крупнее стандартных, как описано в данном изобретении. Прибор 230 беспроводной связи также может принимать закодированную видеопоследовательность и сохранять принятую видеопоследовательность в приборе 246 хранения данных.
[0192] Макроблоки принятой, закодированной видеопоследовательности могут быть крупнее макроблоков, заданных обычными стандартами кодирования видео. Для отображения закодированной видеопоследовательности из прибора 246 хранения данных, такой как записанной видеопоследовательности или принятой видеопоследовательности, КОДЕК 234 видео может декодировать видеопоследовательность и отправить декодированные кадры видеопоследовательности в интерфейс 242 пользователя. Когда видеопоследовательность включает в себя аудиоданные, КОДЕК 234 видео может декодировать аудио, или прибор 230 беспроводной связи может дополнительно включать в себя аудио кодек (не показан) для декодирования аудио. Таким образом, КОДЕК 234 видео может выполнять как функции кодера, так и функции декодера.
[0193] Память 244 прибора 230 беспроводной связи на Фиг. 14 может быть с закодированными компьютерно-читаемыми инструкциями, которые предписывают процессору 240 и/или КОДЕКу 234 видео выполнение разных задач, в дополнение к хранению закодированных видеоданных. Такие инструкции могут загружаться в память 244 из прибора хранения данных, такого как прибор 246 хранения данных. Например, инструкции могут предписывать процессору 240 выполнение функций, описанных в отношении КОДЕКа 234 видео.
[0194] Фиг. 15 является структурной схемой, иллюстрирующей примерную иерархическую модель 260 кодируемых блоков (CBP). Пример CBP 260 в целом соответствует части информации синтаксиса для 64х64-пиксельного макроблока. В примере на Фиг. 15, CBP 260 содержит значение 262 CBP64, четыре значения 264, 266, 268, 270 CBP32, и четыре значения 272, 274, 276, 278 CBP16. Каждый блок CBP 260 может включать в себя один или больше битов. В одном примере, когда значение 262 CBP64 является битом со значением «1», указывающим на то, что существует, по меньшей мере, один ненулевой коэффициент в большом макроблоке, CBP 260 включает в себя четыре значения 164, 266, 268, 270 CBP 32 для четырех разделов 32×32 большого макроблока 64х64, как показано в примере на Фиг. 15.
[0195] В другом примере, когда значение 262 CBP64 является битом со значением «0», CBP 260 может состоять только из CBP64, так как значение «0» может указывать на то, что блок, соответствующий CBP 260, имеет все коэффициенты с нулевыми значениями. Таким образом, все разделы этого блока аналогичным образом будут содержать все коэффициенты с нулевыми значениями. В одном примере, когда CBP64 является битом со значением «1» и одно из значений CBP32 для конкретного раздела 32×32 является битом со значением «1», то значение CBP32 для раздела 32×32 имеет четыре ответвления, представляющих собой значения CBP16, например, как показано в отношении значения 266 CBP32. В одном примере, когда значение CBP32 является битом со значением «0», CBP 32 не имеет каких-либо ответвлений. В примере на Фиг. 15, CBP 260 может иметь пятибитный префикс «10100», указывающий на то, что значение CBP64 является «1», и что один из разделов 32×32 имеет значение CBP32, равное «1», с последовательными битами, соответствующими четырем значениям 272, 274, 276, 278 CBP 16, которые в свою очередь соответствуют разделам 16×16 раздела 32×32 со значением CBP32, равным «1». Несмотря на то, что в примере на Фиг. 15 только одно значение CBP 32 показано как имеющее значение «1», в других примерах, два, три или все четыре раздела 32×32 могут иметь значения CBP32, равные «1», и в этом случае потребуется множество экземпляров четырех разделов 16×16 с соответствующими значениями CBP16.
[0196] В примере на Фиг. 15, четыре значения 272, 274, 276, 278 CBP 16 для четырех разделов 16×16 могут быть вычислены в соответствии с разными способами, например в соответствии со способами на Фиг. 8 и 9. Любое или все значения 272, 274, 276, 278 CBP16 могут включать в себя значение «lumacbp16», Transform_size_flag и/или luma16x8_cbp. Значения 272, 274, 276, 278 CBP16 могут также вычисляться в соответствии со значением CBP, как определено в ITU H.264 или в качестве Модели Кодируемых Блоков Цветности в ITU H.264, как рассматривалось в отношении Фиг. 8 и 9. В примере на Фиг. 15, предполагая, что CBP16 278 имеет значение «1», а другие значения CBP16 272, 274, 276 имеют значение «0», девятибитным значением CBP для макроблока 64х64 будет «101000001», где каждый бит соответствует одному из разделов на соответствующем уровне иерархии CBP/разделов.
[0197] Фиг. 16 является структурной схемой, иллюстрирующей пример древовидной структуры 280, соответствующей CBP 260 (Фиг. 15). Узел 282 CBP64 соответствует значению 262 CBP64, каждый из узлов 284, 286, 288, 290 CBP32 согласуется с соответствующим одним из значений 264, 266, 268, 270 CBP32, а каждый из узлов 292, 294, 296, 298 CBP16 согласуется с соответствующим одним из значений 272, 274, 276, 278 CBP16. Таким образом, значение модели кодируемых блоков, как задано в данном изобретении, может соответствовать иерархической CBP. Каждый узел, порождающий другое ответвление в дереве, согласуется с соответствующим значением CBP, равным «1». В примерах на Фиг. 15 и 16, оба CBP64 282 и CBP32 286 имеют значения, равные «1», и порождают дополнительные разделы при помощи возможных значений CBP равных «1», т.е. где, по меньшей мере, один раздел на следующем уровне разделения включает в себя, по меньшей мере, одно ненулевое значение коэффициента преобразования.
[0198] Фиг. 17 является блок-схемой, иллюстрирующей примерный способ использования информации синтаксиса кодируемой единицы, для указания и выбора кодеров и декодеров синтаксиса, основанных на блоках для видеоблоков кодируемой единицы. В целом, этапы с 300 по 310 на Фиг. 17 могут выполняться кодером видео, таким как кодер 20 видео (Фиг. 1), в дополнение к и совместно с кодированием множества видеоблоков для кодируемой единицы. Кодируемая единица может содержать видеокадр, вырезку или группу изображений (также именуемую как «последовательность»). Этапы с 312 по 316 на Фиг. 17 могут выполняться декодером видео, таким как декодер 30 видео (Фиг. 1), в дополнение и совместно с декодированием множества видеоблоков кодируемой единицы.
[0199] Изначально, кодер 20 видео может принять (этап 300) набор блоков разных размеров для кодируемой единицы, такой как кадр, вырезка или группа изображений. В соответствии с методиками данного изобретения, один или более блоков могут содержать больше чем 16×16 пикселей, например 32×32 пикселей, 64х64 пикселей, и т.д. Тем не менее, каждый блок не обязательно должен содержать одно и то же число пикселей. В целом, кодер 20 видео может кодировать каждый из блоков, используя один и тот же синтаксис, основанный на блоках. Например, кодер 20 видео может кодировать каждый из блоков, используя иерархическую модель кодируемых блоков, как описано выше.
[0200] Кодер 20 видео выбирает синтаксис, основанный на блоках, который должен использоваться, на основании наибольшего блока, т.е. максимального размера блока, в наборе блоков для кодируемой единицы. Максимальный размер блока может соответствовать размеру наибольшего макроблока, включенного в кодируемую единицу. Соответственно, кодер 20 видео может определить (этап 302) блок с наибольшим размером в наборе. В примере на Фиг. 17, кодер 20 видео также может определить (этап 304) блок с наименьшим размером в наборе. Как рассматривалось выше, иерархическая модель кодируемых блоков блока имеет длину, которая соответствует тому, имеют ли разделы блока ненулевые, квантованные коэффициенты. В некоторых примерах, кодер 20 видео может включать значение максимального размера в информацию синтаксиса для кодируемой единицы. В некоторых примерах, значение минимального размера указывает минимальный размер раздела в кодируемой единице. Таким образом, минимальный размер раздела, т.е. наименьший блок в кодируемой единице, может использоваться для определения максимальной длины иерархической модели кодируемых блоков.
[0201] Затем кодер 20 видео может кодировать (этап 306) каждый блок набора для кодируемой единицы в соответствии с синтаксисом, соответствующим наибольшему блоку. Например, предполагая, что наибольший блок содержит 64х64-пиксельный блок, кодер 20 видео может использовать такой синтаксис, как тот, что задан выше для MB64_типа. В качестве другого примера, предполагая, что наибольший блок содержит 32×32-пиксельный блок, кодер 20 видео может использовать такой синтаксис, как тот, что задан выше для MB32_типа.
[0202] Кодер 20 видео также формирует (этап 308) информацию синтаксиса кодируемой единицы, которая включает в себя значения, соответствующие наибольшему блоку в кодируемой единице и наименьшему блоку в кодируемой единице. Затем кодер 20 видео может передать кодируемую единицу, включающую в себя информацию синтаксиса для кодируемой единицы и каждого из блоков кодируемой единицы, декодеру 30 видео.
[0203] Декодер 30 видео может принять (этап 312) кодируемую единицу и информацию синтаксиса для кодируемой единицы от кодера 20 видео. Декодер 30 видео может выбрать (этап 314) кодер синтаксиса, основанного на блоках, на основании указания в информации синтаксиса кодируемой единицы. Например, предполагая, что информация синтаксиса кодируемой единицы указывает, что наибольший блок в кодируемой единице содержит 64х64 пикселей, декодер 30 видео может выбрать декодер синтаксиса для блоков MB64_типа. Затем декодер 30 видео может применить (этап 316) выбранный декодер синтаксиса к блокам кодируемой единицы, чтобы декодировать блоки кодируемой единицы. Декодер 30 видео также может определить, когда блок не имеет дополнительно отдельно закодированных суб-разделов на основании указания в информации кодируемой единицы самого маленького закодированного раздела. Например, если наибольший блок состоит из 64х64 пикселей, а наименьший блок также состоит из 64х64 пикселей, то затем может быть определено, что блоки 64х64 не разделены на суб-разделы, меньшие чем размером 64х64. В качестве другого примера, если наибольший блок состоит их 64х64 пикселей, а наименьший блок состоит из 32×32 пикселей, то затем может быть определено, что блоки 64×64 разделены на суб-разделы размером не менее чем 32×32.
[0204] Таким образом, декодер 30 видео может остаться обратно совместимым с существующими стандартами кодирования, таким как H.264. Например, когда наибольший блок в кодируемой единице содержит 16×16 пикселей, кодер 20 может указать это в информации синтаксиса кодируемой единицы, а декодер 30 видео может применить декодеры синтаксиса, основанные на блоках, стандарта H.264. Тем не менее, когда наибольший блок в кодируемой единице содержит больше 16×16 пикселей, кодер 20 видео может указать это в информации синтаксиса кодируемой единицы, а декодер 30 видео может выборочно применить декодер синтаксиса, основанного на блоках, в соответствии с методиками данного изобретения, для декодирования блоков кодируемой единицы.
[0205] В одном или более примерах, описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении или любом их сочетании. При реализации в программном обеспечении, функции могут храниться или передаваться в качестве одной или более инструкций или кода на компьютерно-читаемом носителе информации. Компьютерно-читаемый носитель информации включает в себя как компьютерный носитель данных, так и средства связи, включая любое средство связи, которое способствует переносу компьютерной программы из одного места в другое. Носитель данных может быть любым приемлемым носителем, доступ к которому можно осуществить посредством компьютера. В качестве примера, а не ограничения, такой компьютерно-читаемый носитель информации может содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптическом диске, накопитель на магнитном диске или другие приборы хранения на магнитном носителе, или любом другом носителе, который может использоваться для переноса или хранения требуемого кода программы в виде инструкций или структур данных, и доступ к которым может быть осуществлен посредством компьютера. Также, любое соединение должным образом определяет компьютерно-читаемый носитель информации. Например, если программное обеспечение передается с веб-узла, сервера или другого удаленного источника с используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL) или беспроводные технологии, такие как инфракрасную, радио или микроволновую, тогда коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная, радио или микроволновая, включены в понятие носителя информации. Используемые здесь магнитные и немагнитные диски включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой диск универсального назначения (DVD), гибкий магнитный диск и диск blue-ray, где магнитные диски обычно воспроизводят данные магнитным образом, в то время как немагнитные диски воспроизводят данные оптически с помощью лазера. Сочетания вышеописанного также должны быть включены в рамки объема понятия компьютерно-читаемого носителя информации.
[0206] Были описаны различные примеры. Эти и прочие примеры находятся в рамках объема нижеследующей формулы изобретения.