РАСШИРЕННАЯ СИГНАЛИЗАЦИЯ РЕЖИМА ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО, ИСПОЛЬЗУЮЩЕГО РЕЖИМ СОСЕДСТВА
ENHANCED INTRA-PREDICTION MODE SIGNALLING FOR VIDEO ENCODING USING NEIGHBORHOOD MODE

[0001] Данная заявка относится к и испрашивает приоритет предварительной заявки на патент США № 61/495332, поданной 9 июня 2011; предварительной заявки на патент США № 61/503712, поданной 1 июля 2011; предварительной заявки на патент США № 61/504664, поданной 5 июля 2011; и предварительной заявки на патент США № 61/533118, поданной 9 сентября 2011, все содержимое каждой из которых тем самым включено по ссылке.
Область техники
[0002] Настоящее описание относится к кодированию видео, и более подробно, к сигнализации характеристик кодирования для кодированных видеоданных.
Уровень техники
[0003] Цифровые возможности видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые плееры аудиовизуальной информации, видеоигровые устройства, консоли видеоигр, сотовые или спутниковые радиотелефоны, устройства организации видеотелеконференций и т.п. Цифровые видеоустройства реализуют способы сжатия видео, такие как описанные в стандартах, определенных посредством MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), и расширениях таких стандартов, чтобы передавать и принимать цифровую видеоинформацию более эффективно.
[0004] Способы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видеопоследовательностям. Для основанного на блоке кодирования видео видео-кадр, картинка, или вырезка могут быть разделены в видеоблоки. Каждый видеоблок может быть далее разделен. Видеоблоки во внутренне кодированном (I) кадре или вырезке кодируются, используя пространственное предсказание относительно соседних видеоблоков в тех же самых кадре, картинке или вырезке. Видеоблоки во внешне кодированном (P или B) кадре или вырезке могут использовать пространственное предсказание относительно соседних макроблоков в том же самом кадре или вырезке или временное предсказание относительно других опорных кадров. Как используются здесь, термины “картинки” могут упоминаться как ссылки на кадры и “опорные картинки” могут быть отнесены к опорным кадрам.
[0005] Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком. Внешне кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточным данным, указывающим разность между закодированным блоком и предсказывающим блоком. Внутренне кодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном множестве, могут быть сканированы, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может быть применено, чтобы достигнуть даже большей степени сжатия.
Сущность изобретения
[0006] В целом настоящее описание описывает способы для сигнализации режимов внутреннего предсказания для кодирования видео. Способы настоящего раскрытия могут улучшить эффективность для сигнализации режима кодирования с внутренним предсказанием, используемого для режима внутреннего кодирования блока видеоданных. Видеоданные включают в себя последовательность кадров (или картинок), воспроизводимых в быстрой последовательности, чтобы моделировать движение. Каждый из кадров может быть разделен на блоки. Способы настоящего раскрытия включают в себя фиксацию многих наиболее вероятных кандидатов режима внутреннего предсказания до больше чем или равных двум для каждого блока в пределах кадра. Таким образом может иметь место относительное повышение эффективности для синтаксического разбора при обработке декодирования и уменьшении использования памяти, используя способы настоящего раскрытия.
[0007] В одном примере предложен способ для кодирования видеоданных, причем способ содержит определение, для блока видеоданных, набора наиболее вероятных режимов внутреннего предсказания таким образом, что набор наиболее вероятных режимов внутреннего предсказания имеет размер, который равен заранее определенному числу, которое больше чем или равно двум. Способ также содержит кодирование значения, представляющего фактический режим внутреннего предсказания для блока, на основании, по меньшей мере частично, набора наиболее вероятных режимов внутреннего предсказания, и кодирование блока, используя фактический режим внутреннего предсказания.
[0008] В другом аспекте устройство для кодирования данных содержит видеокодер, конфигурируемый, чтобы определить, для блока видеоданных, набор наиболее вероятных режимов внутреннего предсказания таким образом, что набор наиболее вероятных режимов внутреннего предсказания имеет размер, который равен заранее определенному числу, которое больше чем или равно двум. Видеокодер также сконфигурирован, чтобы закодировать значение, представляющее фактический режим внутреннего предсказания для блока, на основании, по меньшей мере частично, набора наиболее вероятных режимов внутреннего предсказания. Видеокодер также сконфигурирован для кодирования блока, используя фактический режим внутреннего предсказания.
[0009] В другом аспекте считываемый компьютером носитель содержит считываемый компьютером запоминающий носитель, хранящий на нем инструкции, которые при выполнении заставляют процессор устройства кодирования видео определять, для блока видеоданных, набор наиболее вероятных режимов внутреннего предсказания таким образом, что набор наиболее вероятных режимов внутреннего предсказания имеет размер, который равен заранее определенному числу, которое больше чем или равно двум. Инструкции далее заставляют процессор кодировать значение, представляющее фактический режим внутреннего предсказания для блока, на основании, по меньшей мере частично, набора наиболее вероятных режимов внутреннего предсказания, и кодировать этот блок, используя фактический режим внутреннего предсказания.
[0010] В другом аспекте обеспечено устройство, которое содержит средство для определения, для блока видеоданных, набора наиболее вероятных режимов внутреннего предсказания таким образом, что набор наиболее вероятных режимов внутреннего предсказания имеет размер, который равен заранее определенному числу, которое больше чем или равно двум. Устройство также содержит средство для кодирования значения, представляющего фактический режим внутреннего предсказания для блока, на основании, по меньшей мере частично, набора наиболее вероятных режимов внутреннего предсказания, и средство для кодирования блока, используя фактический режим внутреннего предсказания.
[0011] Способы, описанные в настоящем описании, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализовано в программном обеспечении, программное обеспечение может быть выполнено в процессоре, который может относится к одному или более процессорам, таким как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA), или цифровой сигнальный процессор (DSP), или другая эквивалентная интегральная или дискретная логическая схема. Программное обеспечение, содержащее инструкции выполнять упомянутые способы, может быть первоначально сохранено в считываемом компьютером носителе и загружено и выполнено процессором.
[0012] Соответственно, настоящее описание также рассматривает считываемый компьютером носитель, содержащий инструкции, чтобы заставить процессор выполнять любое множество способов, как описано в настоящем описании. В некоторых случаях считываемый компьютером носитель может быть частью компьютерного программного продукта, который может быть продан изготовителями и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя считываемый компьютером носитель, и в некоторых случаях может также включать в себя упаковочные материалы.
[0013] Настоящее описание может также относиться к электромагнитным сигналам, несущим информацию. Например, электромагнитный сигнал может содержать информацию, касающуюся полной пиксельной поддержки, используемой для интерполяции значения для суб-целочисленного пикселя опорной выборки. В некоторых примерах сигнал может генерироваться от или передан устройством, реализующим способы, описанные здесь. В других примерах настоящее описание может относиться к сигналам, которые могут быть приняты в устройстве, реализующем способы, описанные здесь.
[0014] Подробности одного или более аспектов раскрытия сформулированы в прилагаемых чертежах и описании ниже. Другие признаки, задачи и преимущества способов, описанных в настоящем описании, будут очевидны из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
[0015] Фиг.1 представляет пример трех блоков, включая текущий блок, который должен быть закодирован, и два соседних блока.
[0016] Фиг.2 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы для кодирования синтаксических данных, представляющих режимы внутреннего предсказания для блоков видеоданных.
[0017] Фиг.3 является блок-схемой, иллюстрирующей пример видеокодера, который может реализовать способы для кодирования информации, указывающей режим внутреннего предсказания.
[0018] Фиг.4 является блок-схемой, иллюстрирующей пример видеодекодера, который декодирует кодированную видеопоследовательность.
[0019] Фиг.5 является диаграммой, иллюстрирующей один пример 35 режимов внутреннего предсказания и их соответствующих направлений предсказания.
[0020] Фиг.6 является диаграммой, иллюстрирующей другой пример 35 режимов внутреннего предсказания и их соответствующих направлений предсказания.
[0021] Фиг.7 является последовательностью операций, иллюстрирующей один пример способа для сигнализации режима внутреннего предсказания для видеокодирования.
[0022] Фиг.8 является последовательностью операций, иллюстрирующей один пример способа для определения наиболее вероятных кандидатов режима внутреннего предсказания, когда набор наиболее вероятных режимов внутреннего предсказания равен трем.
Детальное описание
[0023] В целом настоящее описание описывает способы для сигнализации режимов внутреннего предсказания для кодирования видео. Способы настоящего раскрытия могут улучшить эффективность для сигнализации режима кодирования с внутренним предсказанием, используемого для внутреннего кодирования блока видеоданных. Видеокодер, например, может включать в себя набор из двух или более режимов-кандидатов внутреннего предсказания для текущего блока, который включает в себя два (или более) наиболее вероятных режимов внутреннего предсказания, основанных на режимах внутреннего предсказания блоков, граничащих с текущим блоком. Набор кандидатов может включать в себя индексы для двух или более наиболее вероятных режимов внутреннего предсказания. Как используется здесь, термины “режимы” могут использоваться в целом, чтобы ссылаться на “режимы внутреннего предсказания”.
[0024] В некоторых примерах способы настоящего раскрытия обеспечивают различные наборы режимов-кандидатов внутреннего предсказания, на основании типа предсказываемых видеоданных. Например, при некоторых условиях некоторые режимы внутреннего предсказания могут быть включены как вероятный режим внутреннего предсказания, когда набор наиболее вероятных режимов внутреннего предсказания включает в себя 3 или более режимов, такие как плоский или DC режим.
[0025] Видеоданные включают в себя последовательность кадров (или картинок), воспроизводимых в быстрой последовательности, чтобы моделировать движение. Каждый из кадров может быть разделен на блоки. Как используются здесь, термины “кадр” и “картинка” могут быть использованы взаимозаменяемо.
[0026] Видеокодеры кодируют видеоданные, используя пространственную и временную избыточность. Например, видеокодер может использовать пространственную избыточность посредством предсказания блока относительно соседних, ранее кодированных блоков. Аналогично, видеокодер может использовать временную избыточность посредством предсказания блока относительно данных ранее кодированных кадров. В частности, видеокодер предсказывает текущий блок из данных пространственного соседа или из данных одного или более ранее кодированных кадров. Видеокодер затем вычисляет остаточное значение для этого блока как разность между фактическим значением для блока и предсказанным значением для блока. Видеокодер использует единицы предсказания (PU), чтобы представить данные предсказания для единицы кодирования (CU) и единицы преобразования (TU), чтобы представить остаточные данные. Остаточные данные для блока включают в себя значения пиксельные разности пиксель-за-пикселем в пиксельной (или пространственной) области. Видеокодер может далее преобразовать остаточные данные, представляя данные в области преобразования.
[0027] Видеодекодер может принять закодированные данные для закодированного блока. Закодированные данные могут включать в себя представление режима предсказания, используемого, чтобы закодировать блок, а также индикацию разделения единиц PU для этого блока. Таким образом, видеодекодер может использовать одно и то же разделение единиц PU и применить один и тот же режим предсказания, чтобы декодировать этот блок. Чтобы уменьшить количество битов, потребляемых в сигнализации режима предсказания, устройства кодирования видео могут определять вероятности режимов предсказания кодирования для текущего блока, на основании режимов кодирования соседних блоков. Фиг.1 представляет пример трех видеоблоков: А (4), B (6) и C (8). Блок С (8) представляет текущий кодируемый блок, блок А (4) представляет левый соседний ранее кодированный блок относительно блока C (8), и блок B (6) представляет верхний соседний, ранее кодированный блок относительно блока C (8).
[0028] В целях примера на фиг.1, блоки А (4), B (6), и C (8) являются блоками внутренне предсказанной картинки, кадра или вырезки. Устройство кодирования видео, такое как видеокодер или видеодекодер, может определить два или более вероятных режимов внутреннего предсказания для блока C (8) на основании режимов внутреннего предсказания блоков А (4) и B (6). Обычно блок C более вероятно будет предсказан, используя режим или блока А (4) или блока B (6). Как правило, когда блоки А (4) и B (6) имеют один и тот же режим внутреннего предсказания, наиболее вероятный режим внутреннего предсказания для блока C (8) будет режимом внутреннего предсказания блоков А (4) и B (6). С другой стороны, когда блоки А (4) и B (6) имеют различные режимы внутреннего предсказания, устройство кодирования видео должно определить, будет ли режим предсказания для блока C (8), более вероятно, режимом внутреннего предсказания блока А (4) или режимом внутреннего предсказания блока B (6).
[0029] Более подробно, в обычном кодировании видео высокой производительности (HEVC), таблица отображения может использоваться, чтобы отобразить режимы внутреннего предсказания на индексы кодовых слов. Индексы кодовых слов могут быть отображены посредством другой таблицы на коды переменной длины (для CAVLC) или бинаризированные значения (для CABAC). Кроме того, для каждого блока несколько наиболее вероятных режимов могут быть определены, где наиболее вероятным режимам могут быть назначены наименьшие индексы, где наименьшие индексы являются самыми вероятными и таким образом, кодируются с использованием меньшего количества битов. В обычном HEVC количество наиболее вероятных режимов может изменяться на основании того, имеют ли блоки А (4) и B (6) одни и те же или различные режимы внутреннего предсказания.
[0030] Настоящее описание обеспечивает различные способы для улучшения сигнализации режимов внутреннего предсказания для кодирования видео. В одном примере, вместо того, чтобы разрешить нескольким наиболее вероятным режимам изменяться для каждого блока, как описано выше, всегда может быть фиксированное количество наиболее вероятных режимов, которое равно по меньшей мере двум. В то время как количество наиболее вероятных режимов может быть большим чем два, в этих способах количество наиболее вероятных режимов установлено для всех блоков в картинке. Другими словами, устройство кодирования видео может быть сконфигурировано, чтобы использовать заранее определенное количество наиболее вероятных режимов для всех блоков, и это заранее определенное количество может быть большим чем или равным двум.
[0031] В этом примере, если режимы внутреннего предсказания блоков А (4) и B (6) различны, и заранее определенное количество наиболее вероятных режимов для блока C (8), равно двум, то два наиболее вероятных режима внутреннего предсказания для блока C (8) могут соответствовать режимам внутреннего предсказания блоков А (4) и B (6). Однако, если режимы внутреннего предсказания блоков А (4) и B (6) являются одинаковыми, устройство кодирования видео может добавить второй наиболее вероятный режим к набору наиболее вероятных режимов.
[0032] В некоторых примерах, если режимы внутреннего предсказания блоков А (4) и B (6) являются одинаковыми и режимом является режим, отличный от плоского режима, то второй наиболее вероятный режим для блока C (8) выбирается как плоский режим. С другой стороны, если режимы внутреннего предсказания блоков А (4) и B (6) являются одинаковыми, и режим является плоским режимом, то второй наиболее вероятный режим для блока C (8) выбирается как режим DC. В некоторых примерах плоский режим может всегда быть отображен в индексное значение 0.
[0033] Для примеров, где имеется больше чем два наиболее вероятных режима в заранее определенном количестве наиболее вероятных режимов, эти режимы могут соответствовать режимам внутреннего предсказания, которые являются аналогичными по направлению направлениям внутреннего предсказания для блоков А (4) и B (6).
[0034] Примеры, описанные выше, ссылаются на режимы внутреннего предсказания для данных яркости. Для цветности настоящее описание предлагает фиксировать доступное количество режимов внутреннего предсказания таким образом, что некоторые режимы внутреннего предсказания всегда были режимами-кандидатами внутреннего предсказания, в некоторых примерах. Традиционно, шесть режимов доступны для блоков цветности: вертикальный режим, горизонтальный режим, режим DC, плоский режим, основанный на сигнале яркости режим предсказания, и наследование режима предсказания яркости. Наследование режима предсказания яркости позволяет режиму цветности наследовать режим соответствующего блока яркости. Из-за этого два символа, или значения индекса, могут быть назначены на один и тот же режим, например, когда блок яркости предсказывается, используя вертикальный, горизонтальный, DC или плоский режим. В сущности, это означает, что блок цветности может иметь только пять возможных режимов, а не шесть. Таким образом, имеется избыточный сигнал по меньшей мере для одного режима в таких ситуациях.
[0035] Настоящее описание предлагает добавить другой режим внутреннего предсказания для блоков цветности, когда избыточный сигнал доступен, в некоторых примерах. Предполагая, что блок яркости предсказывается, используя один из горизонтального, вертикального, DC или плоского режима, режим, соответствующий значению индекса, которое может иначе указывать наследование режима внутреннего предсказания яркости, может быть отображен на отличный режим, чем режим, используемый для соответствующего блока яркости. Этот дополнительный режим может соответствовать режиму, имеющему аналогичную направленность режиму соответствующего блока яркости, который иначе не является доступным для блока цветности.
[0036] Согласно способам настоящего описания, примерный процесс выведения для режимов внутреннего предсказания яркости может включать в себя следующие входные сигналы: местоположение (xB, yB) яркости, задающее верхнюю левую выборку яркости текущего блока относительно верхней левой выборки яркости текущей картинки текущего блока; переменную, log2TrafoSize, задающую размер текущего блока предсказания; и, если доступен, массив переменных, IntraPredMode, которые получены для смежных единиц кодирования, ранее декодированных в порядке декодирования. Выходной сигнал этого процесса выведения может быть обозначен переменной IntraPredMode [xB] [yB].
[0037] Таблица 1 определяет пример нескольких режимов внутреннего предсказания яркости, intraPredModeNum, в зависимости от log2TrafoSize, размера текущего блока предсказания.
Таблица 1Спецификация intraPredModeNum
log2TrafoSize
intraPredModeNum
2
17
3
34
4
34
5
34
6
3
[0038] Переменная candModeList[x] задает режимы внутреннего предсказания, которые доступны. Переменная NumMPMCand задает количество кандидатов наиболее вероятного режима (MPM). Согласно способам, описанным здесь, количество кандидатов MPM является фиксированным для всех блоков в картинке или кадре. Видеокодер может быть сконфигурирован, чтобы сигнализировать значение, представляющее количество кандидатов MPM в, например, наборе параметров последовательности (SPS) для последовательности картинок, наборе параметров картинки (PPS) для индивидуальной картинки, или другой структуре данных. Аналогично, видеодекодер может определить количество кандидатов MPM, интерпретируя такие сигнализированные значения.
[0039] candModeList[x] и NumMPMCand могут быть получены на основании присутствия и значениях candIntraPredModeN. Если оба candIntraPredModeN не доступны, то индексное значение 2 назначается на candModeList[0], и NumMPMCand устанавливается равным 1. Иначе, если только один candIntraPredModeN доступен, то этот candIntraPredModeN назначается на candModeList [0], и NumMPMCand устанавливается равным 1. Аналогично, если оба candIntraPredModeN являются одинаковыми, один из candIntraPredModeN назначается на candModeList[0] и NumMPMCand устанавливается равным 1. Если оба candIntraPredModeN различны, NumMPMCand устанавливается равным 2 и оба candIntraPredModeN назначаются на список режимов-кандидатов, с меньшими из этих двух кандидатов при candModeList [0] и большем в candModeList[1]. Таблица 2 суммирует, как candModeList[x] и NumMPMCand могут быть получены.
Таблица 2Спецификация intraPredModeNum
candIntraPredModeN
candModeList[0]
NumMPMCand
Оба недоступны
2
1
Доступен только один
candIntraPredModeN
1
Оба одинаковы
candIntraPredModeN
1
Оба различны
Меньший candIntraPredModeN устанавливается как candModeList[0] и больший candIntraPredModeN устанавливается как candModeList[1]
2
[0040] IntraPredMode [xB] [yB] может быть получен, применяя следующую процедуру. Если prev_intra_pred_flag [xB] [yB] является истинным, IntraPredMode [xB] [yB] устанавливается равным candModeList [mpm_idx [xB] [yB]]. Иначе, IntraPredMode [xB] [yB] получают, применяя следующие уравнения:
IntraPredMode [xB] [yB] = rem_intra_luma_pred_mode (1)
for (cIdx = 0; cldx <NumMPMCand; cIdx ++)
if (IntraPredMode [xB] [yB]> candModeList [cIdx]), then (2)
IntraPredMode [xB] [yB] ++
В этих примерах переменная rem_intra_pred_mode сигнализируется посредством бинаризации фиксированной длины с одним контекстом. Переменная cIdx задает компонент цветности текущего блока.
[0041] Для сигнализации режима внутреннего предсказания цветности текущий HEVC разрешает шесть режимов, включая: вертикальный, горизонтальный, DC, плоский, основанное на сигнале яркости предсказание цветности и наследование режима предсказания яркости. Среди всех этих режимов наследование режима предсказания яркости означает, что направление предсказания цветности является таким же как направление предсказания яркости. Из-за этого некоторые избыточные символы удаляются, если режимом яркости является вертикальный, горизонтальный, DC или плоский. В результате кодовые таблицы имеют различные размеры для различного режима предсказания яркости.
[0042] Этот процесс может потребовать дополнительного процесса декодирования при синтаксическом разборе и дополнительной памяти. Во-первых, чтобы синтаксически разобрать intra_pred_mode, декодер должен декодировать intra_pred_mode соседних блоков A и B, чтобы определить candIntraPredModeA и candIntraPredModeB. Кроме того, декодер должен определить candModeList и NumMPMC. Дополнительная память требуется, так как шесть битов необходимы в буфере линии декодера для каждого блока 4×4, чтобы сохранить intra_pred_mode. Далее, кодирование rem_intra_pred_mode не эффективно из-за бинаризации фиксированной длины и ее моделирования контекста. Кроме того, наличие различных размеров кодовых таблиц для режима предсказания цветности требует наличия предшествующего знания режима предсказания яркости перед синтаксическим разбором режима предсказания цветности.
[0043] Фиг.2 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использоваться, чтобы реализовать различные способы, описанные здесь. Как показано на фиг.2, система 10 включает в себя исходное устройство 12, которое передает закодированные видеоданные на устройство 14 назначения через канал связи 16. Исходное устройство 12 и устройство 14 назначения могут содержать любое из широкого диапазона устройств. В некоторых случаях исходное устройство 12 и устройство 14 назначения могут содержать устройства беспроводной связи, такие как беспроводные телефонные трубки, так называемые сотовые или спутниковые радиотелефоны, или любые беспроводные устройства, которые могут передать видеоинформацию по каналу связи 16, когда канал связи 16 является беспроводным.
[0044] Способы настоящего раскрытия, однако, не обязательно ограничены беспроводными приложениями или параметрами настройки. Например, эти способы могут относиться к телевизионному радиовещанию, передачам кабельного телевидения, передачам спутникового телевидения, интернет-передачам видео, кодированному цифровому видео, которое закодировано на носитель данных, или другим сценариям. Соответственно, канал связи 16 может содержать любую комбинацию беспроводных или проводных носителей, подходящих для передачи кодированных видеоданных. Кроме того, канал связи 16 предназначен, чтобы представить только один из многих путей, которыми устройство кодирования видео может передать данные к устройству декодирования видео. Например, в других конфигурациях системы 10 исходное устройство 12 может генерировать кодированное видео для декодирования устройством 14 назначения и сохранить кодированное видео на носителе данных или файл-сервере таким образом, что к закодированному видео может получить доступ устройство 14 назначения, как желательно.
[0045] В примере согласно фиг.2 исходное устройство 12 включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор (модем) 22, и передатчик 24. Устройство 14 назначения включает в себя приемник 26, модем 28, видеодекодер 30 и устройство 32 отображения. В соответствии с этим раскрытием видеокодер 20 из исходного устройства 12 может быть сконфигурирован, чтобы применять способы кодирования синтаксических данных, представляющих режимы внутреннего предсказания для блоков видеоданных. В других примерах исходное устройство и устройство назначения могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принять видеоданные от внешнего видеоисточника 18, такого как внешняя камера. Аналогично, устройство 14 назначения может взаимодействовать с внешним устройством отображения вместо включения интегрированного устройства отображения.
[0046] Иллюстрированная система 10 на фиг.2 является просто одним примером. Способы для кодирования синтаксических данных, представляющих режимы внутреннего предсказания для блоков видеоданных, могут быть выполнены любым цифровым устройством кодирования и/или декодирования видео. Хотя обычно способы настоящего раскрытия выполняются устройством кодирования видео, эти способы могут также быть выполнены кодером/декодером видео, типично называемым как “кодек”. Кроме того, способы настоящего раскрытия могут также быть выполнены препроцессором видео. Исходное устройство 12 и устройство 14 назначения являются просто примерами таких устройств кодирования, в которых исходное устройство 12 генерирует кодированные видеоданные для передачи на устройство 14 назначения. В некоторых примерах устройства 12 и 14 могут работать по существу симметричным способом таким образом, что каждое из устройств 12 и 14 включает в себя компоненты, кодирующие и декодирующие видео. Следовательно, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между видеоустройствами 12, 14, например, для передачи видео в виде потока, воспроизведения видео, радиовещания видео, или видеотелефонии.
[0047] Видеоисточник 18 из исходного устройства 12 может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или подачу видео от поставщика видеоконтента. В качестве дальнейшей альтернативы, видеоисточник 18 может генерировать основанные на компьютерной графике данные как исходное видео, или комбинация живого видео, архивированного видео, и сгенерированного компьютером видео. В некоторых случаях, если видеоисточник 18 является видеокамерой, исходное устройство 12 и устройство 14 назначения могут формировать так называемые камерофоны или видеотелефоны. Как упомянуто выше, однако, способы, описанные в настоящем описании, могут быть применимыми к кодированию видео вообще, и могут быть применены к беспроводным и/или проводным приложениям. В каждом случае захваченное, предварительно захваченное, или сгенерированное компьютером видео может быть закодировано видеокодером 20. Закодированная видеоинформация может затем модулироваться модемом 22 согласно стандарту связи, и передана на устройство 14 назначения через передатчик 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для того, чтобы передать данные, включая усилители, фильтры, и одну или более антенн.
[0048] Приемник 26 в устройстве 14 назначения принимают информацию по каналу 16, и модем 28 демодулирует эту информацию. Снова, процесс кодирования видео может реализовать один или более способов, описанных здесь для кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видеоданных. Информация, переданная по каналу 16, может включать в себя информацию синтаксиса, определенную видеокодером 20, которая также используется видеодекодером 30, которая включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку макроблоков и других закодированных блоков, например, GOP (групп картинок). Устройство 32 отображения отображает декодированные видеоданные пользователю, и может содержать любое множество устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.
[0049] В примере согласно фиг.1 канал связи 16 может содержать любой беспроводной или проводной коммуникационный носитель, такой как из радиочастотного (RF) спектра или одну или более физических линий передачи, или любую комбинацию беспроводных или проводных носителей. Канал связи 16 может быть частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Канал связи 16 в общем случае представляет любой подходящий коммуникационный носитель, или коллекцию различных коммуникационных носителей, для того, чтобы передать видеоданные от исходного устройства 12 на устройство 14 назначения, включая любую подходящую комбинацию беспроводных или проводных носителей. Канал связи 16 может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 на устройство 14 назначения.
[0050] Видеокодер 20 и видеодекодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт ITU-T H.264, альтернативно названный MPEG-4, Part 10, Advanced Video Coding (AVC). Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263. Хотя не показано на фиг.1, в некоторых аспектах видеокодер 20 и видеодекодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX, или другое аппаратное обеспечение и программное обеспечение, чтобы выполнять кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0051] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован группой экспертов по кодированию видео ITU-T (VCEG) вместе с ISO/IEC группой экспертов по движущимся изображениям (MPEG) как продукт коллективного товарищества, известного как объединенная команда видео (JVT). В некоторых аспектах способы, описанные в настоящем описании, могут быть применены к устройствам, которые обычно соответствуют стандарту H.264. Стандарт H.264 описан в Рекомендации H.264 ITU-T, Усовершенствованном кодировании видео для общих аудиовизуальных услуг, группой по изучению ITU-T, и датированные мартом 2005, который может быть упомянут здесь как стандарт H.264 или спецификация H.264, или стандарт или спецификация H.264/AVC. объединенная команда видео (JVT) продолжает работать над расширениями к H.264/MPEG-4 AVC.
[0052] Видеокодер 20 и видеодекодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSPs), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Каждый видеокодер 20 и видеодекодер 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного кодера/декодера (кодек) в соответствующую камеру, компьютер, мобильное устройство, устройство абонента, устройство вещания, телевизионную приставку, сервер или аналогичное.
[0053] Видеопоследовательность типично включает в себя набор видеокадров. Группа картинок (GOP) обычно содержит последовательность из одного или более видеокадров. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовок одного или более кадров GOP, или в другом месте, которое описывает несколько кадров, включенных в GOP. Каждый кадр может включать в себя данные синтаксиса кадра, которые описывают режим кодирования для соответствующего кадра. Видеокодер 20, например, может включать в себя фиксированный набор наиболее вероятных режимов-кандидатов внутреннего предсказания для каждого блока в кадре, или каждого блока в пределах каждого кадра в пределах каждой GOP. Фиксированный набор кандидатов MPM может включать в себя два (или более) наиболее вероятных режимов внутреннего предсказания, основанных на режимах внутреннего предсказания блоков, граничащих с текущим блоком. Видеокодер 20 типично оперирует над видеоблоками в пределах индивидуальных видеокадров, чтобы закодировать видеоданные. Видеоблок может соответствовать блоку, CU, PU, или TU. Видеоблоки могут иметь фиксированный или переменный размеры, и могут отличаться по размеру согласно указанному стандарту кодирования. Каждый видеокадр может включать в себя множество вырезок. Каждая вырезка может включать в себя множество макроблоков, которые могут быть скомпонованы во фрагменты (разделения), также называемые суб-блоками.
[0054] Как пример, стандарт 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 для компонентов яркости и соответствующих масштабированных размеров для компонентов цветности. В настоящем описании “NxN” и “N на N” может использоваться взаимозаменяемо, чтобы ссылаться на пиксельные размерности блока в терминах вертикального и горизонтального измерений, например, 16×16 пикселей или 16 на 16 пикселей. Обычно блок 16×16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок NxN обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть размещены в рядах и колонках. Кроме того, блоки не должны обязательно иметь одинаковое количество пикселей в горизонтальном направлении как в вертикальном направлении. Например, блоки могут содержать пиксели NxM, где М не обязательно равно N.
[0055] Размеры блока, которые меньше чем 16 на 16, могут упоминаться как разделения макроблока 16 на 16. Видеоблоки могут содержать блоки пиксельных данных в пиксельной области, или блоки коэффициентов преобразования в области преобразования, например, после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет преобразование, или концептуально аналогичное преобразование, к остаточным данным видеоблока, представляющим пиксельные разности между закодированными видеоблоками и предсказывающими видеоблоками. В некоторых случаях видеоблок может содержать блоки квантованных коэффициентов преобразования в области преобразования.
[0056] Меньшие видеоблоки могут обеспечить лучшее разрешение, и могут использоваться для определения местоположений видеокадра, которые включают в себя высокие уровни деталей. Обычно макроблоки и различные разделения, иногда называемые суб-блоками, может считаться видеоблоками. Кроме того, вырезка может рассматриваться как множество видеоблоков, таких как макроблоки и/или суб-блоки. Каждая вырезка может быть независимо декодируемой единицей видеокадра. Альтернативно, сами кадры могут быть декодируемыми единицами, или другие части кадра могут быть определены как декодируемые единицы. Термин “кодированная единица” может относиться к любой независимо декодируемой единице видеокадра, такой как весь кадр, вырезка кадра, группа картинок (GOP), также называемая последовательностью, или другой независимо декодируемой единицей, определенной согласно применимым способам кодирования.
[0057] Усилия в настоящее время предпринимаются, чтобы развить новый стандарт кодирования видео, в настоящее время называемый кодирование видеовысокой производительности (HEVC). Появляющийся стандарта HEVC может также упоминаться как H.265. Усилия по стандартизации основаны на модели устройства кодирования видео, называемой тестовая Модель HEVC (HM). HM предполагает несколько возможностей устройств кодирования видео перед устройствам согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM обеспечивает целых тридцать три режима кодирования с внутренним предсказанием, например, на основании размера блока, кодируемым с внутренним предсказанием.
[0058] HM ссылается на блок видеоданных как единицу кодирования (CU). Данные синтаксиса в пределах потока битов могут определить наибольшую единица кодирования (LCU), которая является наибольшей единицей кодирования в терминах количества пикселей. Обычно CU имеет аналогичную цель макроблоку H.264, за исключением того, что CU не имеет отличия в размере. Таким образом, CU может быть расколот в суб-CU. Обычно ссылки в настоящем описании на CU могут относиться к наибольшей единице кодирования картинки или суб-CU в LCU. LCU может быть разделен на единицы суб-CU, и каждая суб-CU может быть разделена на единицы суб-CU. Данные синтаксиса для потока битов могут определить максимальное количество раз, сколько LCU может быть разделен, называемое глубиной CU. Соответственно, поток битов может также определить наименьшую единицу кодирования (SCU). Настоящее описание также использует термин “блок”, чтобы обратиться к любому из CU, единицы предсказания (PU), или единицы преобразования (TU).
[0059] LCU может быть ассоциирован с структурой данных квадродерева. Обычно структура данных квадродерева включает в себя один узел в CU, где корневой узел соответствует LCU. Если CU разделена на четыре суб-CU, узел, соответствующий CU, включает в себя четыре листовых узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных квадродерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделена ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разделена ли CU на суб-CU.
[0060] CU, которая не разделена, может включать в себя одну или более единиц предсказания (PU). Обычно PU представляет все или часть соответствующей CU, и включает в себя данные для извлечения опорной выборки для PU. Например, когда PU является закодированный во внутреннем режиме, эта PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. Например, в соответствии с способами настоящего раскрытия, фиксированный набор наиболее вероятных режимов-кандидатов внутреннего предсказания для каждой PU в CU. Фиксированный набор кандидатов MPM может включать в себя два или более режима-кандидата внутреннего предсказания, на основании режимов внутреннего предсказания блоков, граничащих с текущим блоком. В качестве другого примера, когда PU является кодированной во внешнем режиме, эта PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, одночетвертную пиксельную точность, или одну восьмую пиксельную точность), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для CU, определяющие единицу(ы) PU может также описать, например, разделение CU на одну или более единиц PU. Режимы разделения могут отличаться между тем, является ли CU не кодированной, кодированной в режиме внутреннего предсказания, или кодированный в режим внешнего предсказания.
[0061] CU, имеющая одну или более PU, может также включать в себя одну или более единиц преобразования (TU). Следуя предсказанию, использующему PU, видеокодер может вычислять остаточное значение для части CU, соответствующей этой PU. Набор остаточных значений может быть преобразован, сканирован, и квантован, чтобы определить набор коэффициентов преобразования. TU определяет структуру данных, которая включает в себя коэффициенты преобразования. TU не обязательно ограничена размером PU. Таким образом, TU могут быть большими или меньшими, чем соответствующие PU для той же самой CU. В некоторых примерах максимальный размер TU может соответствовать размеру соответствующей CU.
[0062] В соответствии с способами настоящего раскрытия, видеокодер 20 может кодировать некоторые блоки видеоданных, используя режим кодирования с внутренним предсказанием, и предоставить информацию, указывающую выбранный режим внутреннего предсказания, используемый для кодирования блока. Видеокодер 20 может кодировать с внутренним предсказанием блоки любого типа кадра или вырезки, используя режим внутреннего предсказания, например, I-кадры или I-вырезке, в дополнение к P-кадрам или P-вырезкам и B-кадрам или B-вырезкам. Когда видеокодер 20 определяет, что блок должен быть закодирован в режиме внутреннего предсказания, видеокодер 20 может выполнить анализ искажение - скорость передачи, чтобы выбрать наиболее подходящий режим кодирования с внутренним предсказанием. Например, видеокодер 20 может вычислять значения «искажение - скорость передачи» для одного или более режимов кодирования с внутренним предсказанием, и выбрать один из режимов, имеющих приемлемые характеристики «искажение - скорость передачи».
[0063] Видеокодер 20 может также быть сконфигурирован, чтобы определить контекст кодирования для блока. Контекст может включать в себя различные характеристики блока, такие как, например, размер блока, который может быть определен в терминах размерностей в пикселях, тип единицы предсказания (PU) такой как, в примере HEVC, 2Nx2N, Nx2N, 2NxN, NxN, типы внутреннего предсказания на коротком расстоянии (SDIP), такие как 2NxN/2, N/2x2N, 2Nx1, 1x2N, тип макроблока в примере H.264, глубины единицы кодирования (CU) для блока, или других измерений размера для блока видеоданных. В некоторых примерах контекст может соответствовать тому, как любые из всех из режимов внутреннего предсказания для верхнего граничащего блока, левого граничащего блока, верхнего левого граничащего блока, верхнего правого граничащего блока, или других граничащих блоков. В некоторых примерах контекст может включать в себя оба режима внутреннего предсказания для одного или более блоков, а также информацию размера для текущего закодированного блока.
[0064] В любом случае видеокодер 20 может включать в себя данные конфигурации, которые отображают контекст для блока на различные характеристикам кодирования для текущего блока. Например, на основании контекста для блока, данные конфигурации могут указывать один или более наиболее вероятных режимов внутреннего предсказания. В соответствии со способами настоящего раскрытия, видеокодер 20 может определить один или более наиболее вероятных режимов кодирования для блока, на основании контекста кодирования для блока, а также таблицы индексов внутреннего режима и таблице кодовых слов, на основании контекста кодирования для блока. Таблица кодовых слов может содержать таблицу кодов с переменной длиной слова (VLC) для CAVCL или таблицу бинаризации для адаптивного контекстного двоичного арифметического кодирования (CABAC). В CABAC видеокодер 20 может далее бинарно арифметически кодировать бинаризированное значение, выбранное из таблицы. После выбора режима внутреннего предсказания для использования, чтобы кодировать блок, видеокодер 20 может определить, является ли выбранный режим внутреннего предсказания наиболее вероятным режимом внутреннего предсказания для блока. Если выбранный режим является наиболее вероятным режимом, видеокодер 20 может сигнализировать режим внутреннего предсказания, используя кодовое слово в один бит (например, ′0′ или ′1′). Принимая без потери общности, что кодовое слово в один бит имеет значение ′0′, и что таблица кодовых слов является таблицей VLC, другие кодовые слова в таблице VLC могут начинаться с ′1′, чтобы избежать нарушение требований префикса VLC (то есть, что никакое кодовое слово в таблице не является префиксом другого кодового слова в таблице). В примерах, где выбранный режим внутреннего предсказания является не одним из наиболее вероятных режимов, видеокодер 20 может сигнализировать фактический режим внутреннего предсказания. В некоторых примерах флаг может быть установлен, указывающий, что фактический режим внутреннего предсказания не включен в список кандидатов наиболее вероятных режимов внутреннего предсказания.
[0065] Видеокодер 20, в некоторых примерах, может быть сконфигурирован, чтобы начать анализ для выбора режима кодирования с внутренним предсказанием с наиболее вероятным режимом кодирования, основанным на контексте. Когда наиболее вероятный режим кодирования достигает подходящих характеристик «искажение - скорость передачи», в некоторых примерах видеокодер 20 может выбрать наиболее вероятный режим кодирования. В других примерах видеокодер 20 не должен начинать процесс выбора с наиболее вероятного режима кодирования.
[0066] После кодирования с внутренним предсказанием или с внешним предсказанием, чтобы сформировать предсказывающие данные и остаточные данные, и после любых преобразований (таких как 4×4 или 8×8, целочисленное преобразование, используемое в H.264/AVC или дискретное косинусное преобразование DCT), чтобы сформировать коэффициенты преобразования, квантование коэффициентов преобразования может быть выполнено. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, используемых, чтобы представить коэффициенты. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, значение n-бит может быть округлено в меньшую сторону к m-битового значения во время квантования, где n больше чем m.
[0067] Вслед за квантованием энтропийное кодирование квантованных данных может быть выполнено, например, согласно адаптивному к контенту кодированию с переменной длиной кода (CAVLC), контекстно адаптивному двоичному арифметическому кодированию (CABAC), или другому способу энтропийного кодирования. Блок обработки, конфигурируемый для энтропийного кодирования или другой блок обработки, может выполнить другие функции обработки, такие как кодирование с нулевой длиной серии квантованных коэффициентов и/или генерирование информации синтаксиса, такой как значения шаблона кодрованных блоков (CBP), тип макроблока, режим кодирования, максимальный размер макроблока для кодированного блока (такие как кадр, вырезка, макроблок, или последовательность), или аналогичное.
[0068] Видеодекодер 30 может, в конечном счете, принять кодированные видеоданные, например, от модема 28 и приемника 26. В соответствии с способами настоящего раскрытия, видеодекодер 30 может принять кодовое слово, представляющего режим внутреннего предсказания, используемый для кодирования блока видеоданных. Видеодекодер 30 может быть сконфигурирован, чтобы определить контекст кодирования для блока способом, по существу аналогичном видеокодеру 20. Кроме того, видеодекодер 30 может включать в себя аналогичные данные конфигурации в видеокодере 20, например, индикации наиболее вероятного режима кодирования, таблицы индекса режима внутреннего предсказания, и таблицы VLC для каждого контекста кодирования.
[0069] Используя один наиболее вероятный режим внутреннего предсказания, если кодовое слово содержит однобитовое кодовое слово, видеодекодер 30 может определить, что режим внутреннего предсказания, используемый, чтобы закодировать закодированный блок, был наиболее вероятным режимом внутреннего предсказания. Конечно, как описано выше, однобитовое кодовое слово не должно быть префиксом кодовых слов таблицы VLC. Соответственно, если принятое кодовое слово не является однобитовым кодовым словом, видеодекодер 30 может определить, что режим внутреннего предсказания, используемый для кодирования блока видеоданных в способе, обычно является взаимно обратным таковому из видеокодера 20.
[0070] Видеокодер 20 и видеодекодер 30 каждый может быть реализован как любая из множества подходящих схем кодера или декодера, как применимо, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретные логические схемы, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного видеокодера/декодера (кодек). Устройство, включая видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор, и/или устройство беспроводной связи, такое как сотовый телефон.
[0071] Фиг.3 является блок-схемой, иллюстрирующей пример видеокодера 20, который может реализовать способы для кодирования информации, указывающей режим внутреннего предсказания, и который может использоваться, чтобы реализовать различные способы, описанные выше. Видеокодер 20 может выполнить внутреннее и внешнее кодирование блоков в пределах видеокадров, включая макроблоки, или разделения или подразделения макроблоков. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видеокадра. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров видеопоследовательности. Внутренний режим (I-режим) может относиться к любому из нескольких пространственно-основанных режимов сжатия и внешние режимы, такие как однонаправленное предсказание (P-режим), или двунаправленное предсказание (B-режим) может относиться к любому из нескольких временно-основанных режимов сжатия. Хотя компоненты для кодирования внешнего режима изображены на фиг.3, нужно подразумевать, что видеокодер 20 может также включать в себя компоненты для кодирования во внутреннем режиме. Однако, такие компоненты не иллюстрированы ради краткости и ясности.
[0072] Как показано на фиг.3, видеокодер 20 принимает текущий видеоблок в пределах видеокадра, который должен быть закодирован. В примере на фиг.2 видеокодер 20 включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, память 64, сумматор 50, модуль 52 обработки преобразования, блок 54 квантования, и модуль 56 энтропийного кодирования. Для видеореконструкции блока видеокодер 20 также включает в себя модуль 58 обратного квантования, 60 модуль обратного преобразования, и сумматор 62. Фильтр удаления блочности может также быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности может типично фильтровать выходной сигнал сумматора 62.
[0073] Во время процесса кодирования видеокодер 20 принимает видеокадр или вырезку, которая должны быть закодирована. Кадр или вырезка могут быть разделены на множественные видеоблоки. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют внешнее предсказывающее кодирование принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное сжатие. Модуль 46 внутреннего предсказания может выполнить внутреннее предсказывающее кодирование принятого видеоблока относительно одного или более соседних блоков в том же самом кадре или вырезке как блока, который должен быть закодирован, чтобы обеспечить пространственное сжатие.
[0074] Модуль 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основании результатов ошибки и на основании типа кадра или вырезки для кадра или вырезки, включая кодируемый текущий блок, и выдает результирующий внутри - или внешне кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока и к сумматору 62, чтобы восстановить закодированный блок для использования в опорной вырезке или опорном кадре. Обычно внутреннее предсказание вовлекает предсказание текущего блока относительно соседних, ранее кодированных блоков, в то время как внешнее предсказание вовлекает оценку движения и компенсацию движения, чтобы во времени предсказать текущий блок.
[0075] Модуль 42 оценки движения и модуль 44 компенсации движения представляют элементы внешнего предсказания видеокодера 20. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но иллюстрируются по отдельности в концептуальных целях. Оценка движения является процессом генерирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение предсказывающего блока в пределах предсказывающего опорного кадра (или другой кодированной единицы) относительно текущего блока, закодированного в пределах текущего кадра (или другой кодированной единицы). Предсказывающий блок является блоком, который находят близко соответствующим блоку, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками различия. Вектор движения может также указывать смещение разделения макроблока. Компенсация движения может вовлекать выборку или генерирование предсказывающего блока, на основании вектора движения, определенного оценкой движения. Снова модуль 42 оценки движения и модуль 44 компенсации движения могут функционально быть интегрированы, в некоторых примерах.
[0076] Модуль 42 оценки движения вычисляет вектор движения для видеоблока внешне кодированного кадра, сравнивая видеоблок с видеоблоками опорного кадра в хранилище 64 опорных кадров. Модуль 44 компенсации движения может также интерполировать субцелочисленные пиксели опорного кадра, например, I-кадра или P-кадра. Стандарт ITU H.264 как пример описывает два списка: список 0, который включает в себя опорные кадры, имеющие порядок отображения раньше, чем кодируемый текущий кадр, и список 1, который включает в себя опорные кадры, имеющие порядок отображения позже чем кодируемый текущий кадр. Поэтому, данные, хранившие в хранилище 64 опорных кадров, могут быть организованы согласно этим спискам.
[0077] Модуль 42 оценки движения сравнивает блоки одного или более опорных кадров их хранилища 64 опорных кадров с блоком, который должен быть закодирован текущего кадра, например, P-кадра или B-кадра. Когда опорные кадры в хранилище 64 опорных кадров включают в себя значения для субцелочисленных пикселей, вектор движения, вычисленный блоком 42 оценки движения, может относиться к местоположению субцелочисленного пикселя опорного кадра. Модуль 42 оценки движения и/или модуль 44 компенсации движения могут также быть сконфигурированы, чтобы вычислять значения для позиций субцелочисленных пикселей опорных кадров, сохраненных в хранилище 64 опорных кадров, если никакие значения для позиций субцелочисленных пикселей не сохранены в хранилище 64 опорных кадров. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения. Блок опорного кадра, идентифицированный вектором движения, может упоминаться как предсказывающий блок. Модуль 44 компенсации движения может вычислять данные предсказания, на основании внешнее предсказывающего блока.
[0078] Блок 46 внутреннего предсказания может внутренне предсказать текущий блок, в качестве альтернативы внешнему предсказанию, выполненному блоком 42 оценки движения и блоком 44 компенсации движения, как описано выше. В частности, блок 46 внутреннего предсказания может определить режим внутреннего предсказания, чтобы использовать для кодирования текущего блока. В некоторых примерах блок 46 внутреннего предсказания может кодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и блок 46 внутреннего предсказания (или модуль 40 выбора режима, в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования от проверенных режимов. Например, блок 46 внутреннего предсказания может вычислять значения «искажения - скорость передачи», используя анализ «искажения - скорость передачи» для различных проверенных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий наилучшего характеристики «искажения - скорость передачи» среди проверенных режимов. Анализ «искажения - скорость передачи» обычно определяет величину искажения (или ошибку) между кодированным блоком и первоначальным некодированным блоком, который был закодирован, чтобы сформировать закодированный блок, а также как частоту следования в битах (то есть количество битов), используемых для формирования закодированного блока. Блок 46 внутреннего предсказания может вычислять отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает значение наилучшее значение «искажения - скорость передачи» для этого блока.
[0079] В любом случае после выбора режима внутреннего предсказания для блока, блок 46 внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для блока к модулю 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания, в соответствии с способами настоящего раскрытия. Как иллюстрировано на фиг.3, видеокодер 20 может включать в себя данные 66 конфигурации, которые могут включать в себя множество таблиц индекса режима внутреннего предсказания, и множество таблиц индекса кодового слова (также называемых таблицы отображения кодового слова), определения контекстов кодирования для различных блоков, и индикации наиболее вероятного режима внутреннего предсказания, таблицы индекса режима внутреннего предсказания, и таблицы индекса кодового слова, чтобы использовать для каждого из контекстов.
[0080] В примерах, где количество режимов внутреннего предсказания изменяется на основании размера блока, данные 66 конфигурации могут включать в себя различные таблицы для различных размеров блоков. Соответственно, контекст для кодирования индикации режима внутреннего предсказания, используемого для кодирования блока, может включать в себя размер блока, так же как режимы кодирования, используемые для кодирования соседних блоков. Модуль 56 энтропийного кодирования может выбрать таблицу индексов режима, и таблицу отображения кодового слова, используемых для выбора кодового слова, представляющего выбранный режим внутреннего предсказания, используемого, чтобы закодировать блок, на основании контекста для блока. Кроме того, таблицы индекса режима для блоков конкретного размера могут иметь количества записей, равные количеству режимов внутреннего предсказания для блоков этого размера. Таким образом, таблицы индекса режима для блоков размера 4×4 могут иметь 17 записей, таблицы индекса режима для блоков размера 8×8, 16×16, и 32×32 могут иметь 34 записей, и таблицы индекса режима для блоков размера 64×64 могут иметь 5 записей. Другие размеры блоков, например, 128×128, могут также иметь определенное количество доступных режимов внутреннего предсказания также.
[0081] Режимы внутреннего предсказания, доступные для блоков размера 8×8, 16×16 и 32×32, могут быть одинаковыми и поэтому, одни и те же таблицы индекса режима могут использоваться для блоков размеров 8×8, 16×16 и 32×32. Хотя одни и те же режимы могут быть возможными для блоков этих размеров, вероятность использования конкретного режима для кодирования блока может изменяться на основании размера блока. Соответственно, модуль 56 энтропийного кодирования может определить таблицу отображения кодового слова для конкретной таблицы индекса режима на основании размера блока, для которого режим внутреннего предсказания должен быть сигнализирован, в некоторых примерах.
[0082] Например, видеокодер 20 определяет набор наиболее вероятных режимов. Блок 46 внутреннего предсказания может определить фактический режим внутреннего предсказания соседних блоков текущего блока. Видеокодер 20 может также быть сконфигурирован, чтобы определить первый режим внутреннего предсказания для левого соседнего блока этого блока, определить второй режим внутреннего предсказания для верхнего соседнего блока этого блока, и когда первый режим внутреннего предсказания отличен от второго режима внутреннего предсказания, включать и первый режим внутреннего предсказания и второй режим внутреннего предсказания в набор наиболее вероятных режимов внутреннего предсказания. Например, обращаясь к фиг.1, блок 46 внутреннего предсказания может определить фактические режимы внутреннего предсказания, используемые для соседних блоков А (4) и B (6) относительно текущего блока C (8). На основании режимов внутреннего предсказания, используемых для соседних блоков А (4) и B (6), блок 46 внутреннего предсказания определяет наиболее вероятные режимы для блока C (8). Блок 46 внутреннего предсказания может сравнить фактический режим внутреннего предсказания, используемый для соседнего блока А (4), с фактическим режимом внутреннего предсказания, используемый для соседнего блока B (6). На основании этого сравнения конкретный режим внутреннего предсказания, такой как плоский режим, может быть включен в набор наиболее вероятных режимов для блока C (8). Блок 46 внутреннего предсказания может также определить фактический режим, чтобы использовать, чтобы внутренне предсказать текущий блок C (8).
[0083] Когда первый режим внутреннего предсказания является таким же как второй режим внутреннего предсказания, и когда первый и второй режимы внутреннего предсказания содержат режим, отличный от плоского режима, блок 46 внутреннего предсказания включает плоский режим в набор наиболее вероятных режимов внутреннего предсказания. В другом примере, когда первый режим внутреннего предсказания является таким же как второй режим внутреннего предсказания, и когда первый и второй режимы внутреннего предсказания содержат плоский режим, блок 46 внутреннего предсказания включает плоский режим и режим DC в набор наиболее вероятных режимов внутреннего предсказания.
[0084] В другом примере, когда текущий блок содержит блок яркости, видеокодер 20 определяет, для блока цветности, соответствующего блоку яркости, отображение набора значений на набор режимов внутреннего предсказания, причем набор режимов внутреннего предсказания содержит горизонтальный режим, вертикальный режим, плоский режим, режим DC, и режим предсказания сигнала яркости, когда фактический режим внутреннего предсказания для блока яркости содержит режим, отличный от горизонтального режима, вертикального режима, плоского режима, и режима DC, набор режимов внутреннего предсказания также содержит повторное использование режима внутреннего предсказания яркости, отображенного из первого значения из набора значений. Когда фактический режим внутреннего предсказания для блока яркости содержит один из горизонтального режима, вертикального режима, плоского режима, и режима DC, набор режимов внутреннего предсказания также содержит режим, отличный от горизонтального режима, вертикального режима, плоского режима, и режима DC, отображенного из первого значения из набора значений, видеокодер 20 кодирует значение, представляющее фактический режим внутреннего предсказания для блока цветности, на основании отображения набора значений на набор режимов.
[0085] В другом примере блок 46 внутреннего предсказания определяет направление предсказания фактического режима внутреннего предсказания и включает по меньшей мере один режим внутреннего предсказания, имеющий направление предсказания, самое близкое к направлению предсказания фактического режима внутреннего предсказания, в набор наиболее вероятных режимов внутреннего предсказания.
[0086] В еще одном примере, когда размер набора наиболее вероятных режимов внутреннего предсказания равен трем, блок 46 внутреннего предсказания определяет направление предсказания первого режима внутреннего предсказания, и сравнивает направление предсказания первого режима внутреннего предсказания с направлениями предсказания одного или более других доступных режимов внутреннего предсказания. Блок 46 внутреннего предсказания включает первый режим внутреннего предсказания в набор наиболее вероятных режимов внутреннего предсказания. Далее, на основании сравнения блок 46 внутреннего предсказания включает второй и третий режим внутреннего предсказания из одного или более доступных режимов внутреннего предсказания в набор наиболее вероятных режимов внутреннего предсказания, в котором второй и третий режимы внутреннего предсказания имеют направления предсказания, определенные как самые близкие к направлению предсказания первого режима внутреннего предсказания.
[0087] После предсказания текущего блока, например, используя внутреннее предсказание или внешнее предсказание, видеокодер 20 может сформировать остаточный видеоблок, вычитая данные предсказания, вычисленные блоком 44 компенсации движения или блоком 46 внутреннего предсказания, из первоначального закодированного блока видео. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий остаточные значения коэффициента преобразования. Модуль 52 обработки преобразования может выполнить другие преобразования, такие как определенные по стандарту H.264, которые концептуально аналогичны DCT. Вейвлет преобразования, целочисленные преобразования, суб-полосные преобразования, или другие типы преобразования могут также использоваться. В любом случае модуль 52 обработки преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовать остаточную информацию из области пиксельных значений в область преобразования, такую как частотная область. Блок 54 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшить скорость передачи битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством настройки параметра квантования.
[0088] Вслед за квантованием модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнить адаптивное к контенту кодирование с переменной длиной кода (CAVLC), контекстно адаптивное двоичное арифметическое кодирование (CABAC), или другой способ энтропийного кодирования. После энтропийного кодирования модулем 56 энтропийного кодирования кодированное видео может быть передано на другое устройство или заархивировано для более поздней передачи или поиска. В случае контекстно адаптивного двоичного арифметического кодирования контекст может быть основан на соседних блоках и/или размерах блока.
[0089] В некоторых случаях модуль 56 энтропийного кодирования или другой блок видеокодера 20 может быть сконфигурирован, чтобы выполнить другие функции кодирования, в дополнение к энтропийному кодированию и кодированию режима внутреннего предсказания, как описано выше. Например, модуль 56 энтропийного кодирования может быть сконфигурирован, чтобы определить значения шаблона кодированных блоков (CBP) для блоков и разделений. Кроме того, в некоторых случаях модуль 56 энтропийного кодирования может выполнить кодирование длин серий коэффициентов в макроблоке или его разделении (фрагменте). В частности, модуль 56 энтропийного кодирования может применить зигзагообразное сканирование или другой шаблон сканирования, чтобы сканировать коэффициенты преобразования в макроблоке или разделении и кодировать серии нулей для дальнейшего сжатия. Модуль 56 энтропийного кодирования также может сконструировать информацию заголовка с соответствующими элементами синтаксиса для передачи в закодированном потоке битов видео.
[0090] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области, например, для более позднего использования как опорный блок. Модуль 44 компенсации движения может вычислять опорный блок посредством суммирования остаточного блока к предсказывающему блоку одного из кадров хранилища 64 опорных кадров. Модуль 44 компенсации движения может также применять один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить значения субцелочисленных пикселей для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок к блоку предсказания со скомпенсированным движением, сформированному блоком 44 компенсации движения, чтобы сформировать восстановленный видеоблок для сохранения в хранилище 64 опорных кадров. Восстановленный видеоблок может использоваться блоком 42 оценки движения и блоком 44 компенсации движения как опорный блок, чтобы внешне кодировать блок в последующем видеокадре.
[0091] Таким образом видеокодер 20 представляет пример видеокодера, сконфигурированного, чтобы определить один или более наиболее вероятных режимов кодирования с внутренним предсказанием для текущего блока видеоданных, на основании контекста кодирования для текущего блока, выбирать таблицу кодовых слов, на основании контекста для текущего блока, при этом таблица кодовых слов содержит множество кодовых слов переменной длины, соответствующих индексам кодового слова, которые соответствуют режимам внутреннего предсказания, отличных от наиболее вероятного режима(ов) внутреннего предсказания, на основании контекста, кодировать текущий блок, используя один из режимов внутреннего предсказания, отличный от наиболее вероятного режима кодирования с внутренним предсказанием, определять один из индексов кодовых слов, который соответствует этому одному из режимов внутреннего предсказания, используя таблицу кодовых слов, и выводить кодовое слово из выбранной таблицы кодовых слов, в котором кодовое слово соответствует этому одному из индексов кодовых слов.
[0092] Фиг.4 является блок-схемой, иллюстрирующей пример видеодекодера 30, который декодирует закодированную видеопоследовательность, и который может использоваться, чтобы реализовать различные способы, описанные здесь. В примере на фиг.3, видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, память 82 и сумматор 80. Видеодекодер 30, в некоторых примерах, может выполнить проход декодирования, обычно взаимно обратный проходу кодирования, описанному относительно видеокодера 20 (фиг.3). Модуль 72 компенсации движения может генерировать данные предсказания на основании векторов движения, принятых от модуля 70 энтропийного декодирования.
[0093] Модуль 72 компенсации движения может использовать вектора движения, принятые в потоке битов, чтобы идентифицировать блок предсказания в опорных кадрах в хранилище 82 опорных кадров. Модуль 74 внутреннего предсказания может использовать режимы внутреннего предсказания, принятые в потоке битов, чтобы сформировать блок предсказания из пространственно смежных блоков. В частности, видеодекодер 30 в примере на фиг.4, включает в себя данные 84 конфигурации. Данные 84 конфигурации по существу аналогичны данным 66 конфигурации согласно фиг.3, в которых данные 84 конфигурации включают в себя информацию, описывающую контексты для внутренне предсказанных блоков, так же как одну из множества таблиц отображения индекса внутреннего предсказания для использования для каждого контекста, одну из множества таблиц индексов кодовых слов (или отображение кодовых слов), чтобы использовать для каждого контекста, и наиболее вероятный режим внутреннего предсказания для каждого контекста.
[0094] Модуль 70 энтропийного декодирования может принять кодовое слово, представляющее режим внутреннего предсказания, чтобы использовать для декодирования закодированного блока видеоданных. В некоторых примерах это кодовое слово может быть кодовым словом VLC, или энтропийно кодированным бинаризированным значением, которое является первым энтропийно декодированным, используя CABAC. Модуль 70 энтропийного декодирования может определить контекст для кодированного блока, например, на основании режимов внутреннего предсказания для левого соседнего и верхнего соседнего блока к закодированному блоку и/или размера для кодированного блока. Таким образом, контекст может соответствовать двум или более наиболее вероятным режимам. Кодовые слова обеспечивают индикацию фактического режима внутреннего предсказания для текущего блока. Например, кодовое слово указывает, является ли фактический режим внутреннего предсказания одним из наиболее вероятных режимов, и в противном случае модуль 74 внутреннего предсказания обеспечивает индикацию фактического режима внутреннего предсказания. На основании контекста модуль 70 энтропийного декодирования может определить один или более наиболее вероятных режимов внутреннего предсказания, чтобы использовать для декодирования блока, так же как таблицу индексов внутреннего предсказания и таблицу индексов кодовых слов, чтобы использовать для определения фактического режима внутреннего предсказания, чтобы использовать для декодирования блока.
[0095] Модуль 74 внутреннего предсказания может использовать режим внутреннего предсказания, соответствующий этой индикации, чтобы внутренне предсказать закодированный блок, например, используя пиксели соседних ранее декодированных блоков. Для примеров, в которых блок является кодированным в режиме внешнего предсказания, модуль 72 компенсации движения может принять информацию, определяющую вектор движения, чтобы извлечь данные предсказания с компенсированным движением для кодированного блока. В любом случае модуль 72 компенсации движения или модуль 74 внутреннего предсказания могут предоставить информацию, определяющую блок предсказания, к сумматору 80.
[0096] Модуль 76 обратного квантования, который обратно квантует, то есть деквантует, квантованные коэффициенты блока, предоставленные в потоке битов и декодированные модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя обычный процесс, например, как определено стандартом декодирования H.264 или как выполняется тестовой моделью HEVC. Процесс обратного квантования может также включать в себя использование параметра квантования QPY, вычисленного кодером 50 для каждого макроблока, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено.
[0097] Модуль 58 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области. Модуль 72 компенсации движения формирует данные блоки с компенсированным движением, возможно выполняя интерполяцию, основанную на фильтрах интерполяции. Идентификаторы для фильтров интерполяции, которые должны использоваться для оценки движения с точностью суб-пикселя, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать фильтры интерполяции, которые используется видеокодером 20 во время кодирования видеоблока, чтобы вычислить интерполированные значения для субцелочисленных пикселей опорного блока. Модуль 72 компенсации движения может определить фильтры интерполяции, используемые видеокодером 20, согласно принятой информации синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказывающие блоки.
[0098] Модуль 72 компенсации движения использует некоторое из информации синтаксиса, чтобы определить размеры блоков, используемых для кодирования кадра(ов) кодированной видеопоследовательности, информации разделения, которая описывает, как каждый блок кадра или вырезка закодированной видеопоследовательности разделены, режимов, указывающих, как каждое разделение кодировано, один или более опорных кадров (и списков опорных кадров) для каждого внешне кодированного блока или разделения, и другую информацию для декодирования закодированной видеопоследовательности.
[0099] Сумматор 80 суммирует остаточные блоки с соответствующими блоками предсказания, генерируемыми блоком 72 компенсации движения или блоком 74 внутреннего предсказания, чтобы сформировать декодированные блоки. Если желательно, фильтр удаления блочности также может быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Декодированные видеоблоки затем сохраняются в хранилище 82 опорных кадров, который выдает опорные блоки для последующей компенсации движения и также формирует декодированное видео для представления на устройстве отображения (такого как устройство 32 отображения на фиг.2).
[0100] Таким образом видеодекодер 30 согласно фиг.4 представляют пример видеодекодера, сконфигурированного, чтобы определить один или более наиболее вероятных режимов внутреннего предсказания для кодированного блока видеоданных, на основании контекста для текущего блока, выбрать таблицу кодовых слов, на основании контекста для текущего блока, в котором таблица кодовых слов содержит множество кодовых слов переменной длины, соответствующих индексам кодового слова, которые соответствуют режимам внутреннего предсказания, отличным от наиболее вероятного режима(ов) внутреннего предсказания, на основании контекста, определяют один из индексов кодовых слов, который соответствует принятому кодовому слову, используя таблицу кодовых слов, выбирать режим внутреннего предсказания, отличный от наиболее вероятного режим внутреннего предсказания, чтобы использовать для декодирования закодированного блока, в котором выбранный режим внутреннего предсказания соответствует определенному одному из индексов кодовых слов; и декодировать текущий блок, используя выбранный режим внутреннего предсказания.
[0101] Согласно способам, описанным здесь, видеодекодер 30 определяет набор наиболее вероятных режимов для текущего видеоблока. Модуль 74 внутреннего предсказания может определить фактический режим внутреннего предсказания соседних блоков текущего блока. Видеодекодер 30 может также быть сконфигурирован, чтобы определить первый режим внутреннего предсказания для левого соседнего блока этого блока, определить второй режим внутреннего предсказания для верхнего соседнего блока этого блока, и когда первый режим внутреннего предсказания отличен от второго режима внутреннего предсказания, включать и первый режим внутреннего предсказания и второй режим внутреннего предсказания в набор наиболее вероятных режимов внутреннего предсказания. Например, обращаясь к фиг.1, модуль 74 внутреннего предсказания может определить фактические режимы внутреннего предсказания, используемые для соседних блоков А (4) и B (6) относительно текущего блока C (8). На основании режимов внутреннего предсказания, используемых для соседних блоков А (4) и B (6), модуль 74 внутреннего предсказания определяет наиболее вероятные режимы для блока C (8). Модуль 74 внутреннего предсказания может сравнить фактический режим внутреннего предсказания, используемый для соседнего блока А (4), с фактическим режимом внутреннего предсказания, используемым для соседнего блока B (6). На основании этого сравнения конкретный режим внутреннего предсказания, такой как плоский режим, может быть включен в набор наиболее вероятных режимов для блока C (8). Модуль 74 внутреннего предсказания может также определить фактический режим, чтобы использовать для внутреннего предсказания текущего блока C (8).
[0102] Когда первый режим внутреннего предсказания является таким же как второй режим внутреннего предсказания, и когда первый и второй режимы внутреннего предсказания содержат режим, отличный от плоского режима, модуль 74 внутреннего предсказания включает плоский режим в набор наиболее вероятных режимов внутреннего предсказания. В другом примере, когда первый режим внутреннего предсказания является таким же как второй режим внутреннего предсказания, и когда первый и второй режимы внутреннего предсказания содержат плоский режим, модуль 74 внутреннего предсказания включает плоский режим и режим DC в набор наиболее вероятных режимов внутреннего предсказания.
[0103] В другом примере, когда текущий блок содержит блок яркости, видеодекодер 30 определяет для блока цветности, соответствующего блоку яркости, отображение набора значений в набор режимов внутреннего предсказания, причем набор режимов внутреннего предсказания содержит горизонтальный режим, вертикальный режим, плоский режим, режим DC и режим предсказания сигнала яркости, когда фактический режим внутреннего предсказания для блока яркости содержит режим, отличный от горизонтального режима, вертикального режима, плоского режима, и режима DC, набор режимов внутреннего предсказания далее содержат повторное использование режима внутреннего предсказания яркости, отображенного из первого значения из набора значений. Когда фактический режим внутреннего предсказания для блока яркости содержит один из горизонтального режима, вертикального режима, плоского режима и режима DC, набор режимов внутреннего предсказания также содержит режим, отличный от горизонтального режима, вертикального режима, плоского режима и режима DC, отображенного из первого значения из набора значений, видеодекодер 30 декодирует значение, представляющее фактический режим внутреннего предсказания для блока цветности, на основании отображения набора значений в набор режимов.
[0104] В другом примере модуль 74 внутреннего предсказания определяет направление предсказания фактического режима внутреннего предсказания текущего блока и включает по меньшей мере один режим внутреннего предсказания, имеющий направление предсказания, самое близкое к направлению предсказания фактического режим внутреннего предсказания, в набор наиболее вероятных режимов внутреннего предсказания.
[0105] В еще одном примере, когда размер набора наиболее вероятных режимов внутреннего предсказания равен трем, модуль 74 внутреннего предсказания определяет направление предсказания первого режима внутреннего предсказания и сравнивает направление предсказания первого режима внутреннего предсказания с направлениями предсказания одного или более других доступных режимов внутреннего предсказания. Модуль 74 внутреннего предсказания включает первый режим внутреннего предсказания в набор наиболее вероятных режимов внутреннего предсказания. Далее, на основании сравнения модуль 74 внутреннего предсказания включает второй и третий режим внутреннего предсказания из одного или более доступных режимов внутреннего предсказания в набор наиболее вероятных режимов внутреннего предсказания, в котором второй и третий режимы внутреннего предсказания имеют направления предсказания, определенные как самые близкие к направлению предсказания первого режима внутреннего предсказания.
[0106] Фиг.5 является диаграммой, иллюстрирующей один пример 35 режимов внутреннего предсказания и их соответствующих направлений предсказания. Как определено в этом примере, каждое из 35 значений индекса уникально назначено на различные режимы внутреннего предсказания. В этом примере индексное значение 2 отображено на режим внутреннего предсказания DC, индексное значение 34 отображено на плоский режим внутреннего предсказания, и индексное значение 35, отображено на режим внутреннего предсказания яркости. Остальная часть индексных значений назначены на доступный набор различных режимов внутреннего предсказания, каждый имеющий направление предсказания. Например, модуль 46 внутреннего предсказания из видеокодера 20 может обеспечить одно из пяти значений для элемента синтаксиса, который указывает фактический режим внутреннего предсказания, используемый для кодирования блока яркости. Точно так же модуль 46 внутреннего предсказания из видеокодера 20 может обеспечить одно из шести значений для элемента синтаксиса, который указывает фактический режим внутреннего предсказания, используемый для кодирования блока цветности. Шесть значений могут быть одним из пяти значений, используемых для блока яркости, плюс значение, указывающее имитацию режима внутреннего предсказания, который использовался, чтобы закодировать соответствующий блок яркости.
[0107] Например, режим внутреннего предсказания, отображенный в индексное значение 0, имеет направление предсказания вверх относительно текущего кодированного блока. Таким образом, пиксели, используемые для предсказания текущего блока, берутся из сверху текущего блока, когда выбирается режим, отображенный в индексное значение 0. Для примеров, где номер режима внутреннего предсказания равен 34, режимы внутреннего предсказания, имеющие направления предсказания, самые близкие к режиму внутреннего предсказания, отображенному в индексное значение 0, являются режимами внутреннего предсказания, отображенными на индексные значения 21 и 22. Для примеров, где номер режима внутреннего предсказания равен 17, режимы внутреннего предсказания, имеющие направления предсказания, самые близкие к режиму внутреннего предсказания, отображенному в индексное значение 0, являются режимами внутреннего предсказания, отображенными в индексные значения 11 и 12, так как индексные значения 21 и 22 не доступны для набора 17 режимов внутреннего предсказания.
[0108] В альтернативной схеме нумерации, внутренний плоский режим может соответствовать режиму 0, когда номер режима всех других режимов может быть увеличено на 1. Некоторые из таблиц, используемых в течение настоящего раскрытия, обычно соответствуют этой альтернативной схеме нумерации. Это должно быть ясно, однако, специалисту в данной области техники, что способы настоящего раскрытия не ограничены одной конкретной схемой нумерации.
[0109] Фиг.6 является диаграммой, иллюстрирующей другой пример 35 режимов внутреннего предсказания и их соответствующих направлений предсказания. Как определено в примере на фиг.6, каждое из 35 индексных значений уникально назначено на различные режимы внутреннего предсказания. В этом примере индексное значение 0 отображено на плоский режим внутреннего предсказания, индексное значение 1 отображено на режим внутреннего предсказания DC, и индексное значение 35 отображено на режим внутреннего предсказания яркости. Остальная часть индексных значений назначена на доступный набор отличных режимов внутреннего предсказания, каждый имеющий направление предсказания.
[0110] Диаграмма на фиг.6 показывает, что IntraPredMode [xB] [yB] помеченный 0, 1, 2.., 35 представляет направления предсказаний согласно таблице 3.1. Таблица 3.1 определяет значение для режима внутреннего предсказания и ассоциированные названия. Режим 34, например, является внутренним угловым режимом, который указывает на верхне-правое направление текущего блока, который должен быть кодирован. В некоторых примерах режим 34 является верхне-правым режимом внутреннего предсказания направления.
Таблица 3.1Спецификация режима внутреннего предсказания и ассоциированных названий
Режим внутреннего предсказания
Ассоциированные названия
0
Intra_Planar (внутренний плоский)
1
Intra_DC (внутренний DC)
Другие (2…34)
Intra_Angular (внутренний угловой)
35
Intra_FromLuma (используется только для цветности)
[0111] Входные данные к примерному процессу выведения для режимов внутреннего предсказания яркости включают в себя местоположение (xB, yB) яркости, задающее верхнюю левую выборку яркости текущего блока относительно верхней левой выборки яркости текущей картинки, переменную log2PUSize, задающую размер текущего блока предсказания, и массив переменных IntraPredMode (если доступен), которые являются ранее (в порядке декодирования) полученными для смежных единиц кодирования. Выходными данными примерного процесса выведения для режимов внутреннего предсказания яркости является переменная IntraPredMode [xB] [yB].
[0112] IntraPredMode [xB] [yB] может быть получена как следующие упорядоченные этапы. Во-первых, соседние местоположения (xBA, yBA) и (xBB, yBB) установлены равными (xB-1, yB) и (xB, yB-1), соответственно. Во-вторых, адреса cbAddrA и cbAddrB минимальных блоков кодирования блоков дерева кодирования, покрывающие местоположения (xBA, yBA) и (xBB, yBB) соответственно, где получены следующим образом:
cbAddrA
=MinCbAddrZS [xBA <<Log2MinCbSize] [yBA<< Log2MinCbSize]
cbAddrB
=MinCbAddrZS [xBB <<Log2MinCbSize] [yBB<<Log2MinCbSize]
[0113] В-третьих, процесс пригодности для адреса минимального блока кодирования, заданный вызывается однажды с адресом cbAddrA минимального блока кодирования в качестве ввода и вывода, назначенного на доступный availableA и однажды с адресом cbAddrB минимального блока кодирования в качестве ввода и вывода, назначенного на availableB.
[0114] В-четвертых, для N, заменяемого любым A или B, переменные intraPredModeN получают следующим образом: если availableN равен ЛОЖЬ, intraPredModeN устанавливается равным Intra_DC. Иначе, если единица кодирования, покрывающая (xBN, yBN) не кодирована как внутренний режим, intraPredModeN устанавливается равной Intra_DC, иначе, если yB-1 является меньше, чем yCtb, intraPredModeA устанавливается равной IntraPredMode [xBA] [yBA], и intraPredModeB устанавливается равной Intra_DC. Иначе, intraPredModeN устанавливается равной IntraPredMode [xBN] [yBN], где IntraPredMode является массив переменных, назначенный на единицу кодирования, покрывающую местоположение (xBN, yBN) яркости.
[0115] В-пятых, candModeList[x] с x=0.. 2 получают следующим образом: Если candIntraPredModeB равна candIntraPredModeA, применяется следующее: Если candIntraPredModeA меньше чем 2 (или Intra_Planar или Intra_DC), candModeList[x] с x=0.. 2 получают как:
candModeList [0] = Intra_Planar
candModeList [l] = Intra_DC
candModeList [2] = Intra_Angular (26)
Иначе, candModeList[x] с x=0.. 2 получают как:
candModeList [0] = candIntraPredModeA
candModeList [1] = 2 + ((candIntraPredModeA - 2 - 1) % 32
candModeList [2] = 2 + ((candIntraPredModeA - 2 + 1) % 32
Иначе (candIntraPredModeB не равно candIntraPredModeA), применяется следующее: candModeList [0] и candModeList [1] получают следующим образом:
candModeList [0] = candIntraPredModeA
candModeList [1] = candIntraPredModeB
Если ни один из candModeList [0] и candModeList [1] не равно Intra_Planar, candModeList [2] устанавливается равным Intra_Planar. Иначе, если ни один из candModeList [0] и candModeList [1] не равен Intra_DC, candModeList [2] устанавливается равным Intra_DC. Иначе, candModeList [2] устанавливается равным Intra_Angular (26).
[0116] В-шестых, IntraPredMode [xB] [yB] получают, применяя следующую процедуру. Если prev_intra_pred_flag [xB] [yB] равен ИСТИНА, IntraPredMode [xB] [yB] устанавливается равным candModeList [mpm_idx]. Иначе IntraPredMode [xB] [yB] получают, применяя следующие упорядоченные этапы: Во-первых, массив candModeList[x], x=0.. 2 модифицируют следующим образом: если candModeList [0] больше чем candModeList [1], меняют два значения; если candModeList [0] больше чем candModeList [2], меняют два значения; и если candModeList [1] больше чем candModeList [2], меняют два значения. Во-вторых, IntraPredMode [xB] [yB] получают как следующие упорядоченные этапы: Во-первых, IntraPredMode [xB] [yB] = rem_intra_luma_pred_mode. Когда IntraPredMode [xB] [yB] больше чем или равен candModeList [0], значение IntraPredMode [xB] [yB] увеличивают на один. Когда IntraPredMode [xB] [yB] больше чем или равен candModeList [1], значение IntraPredMode [xB] [yB] увеличивают на один. Когда IntraPredMode [xB] [yB] больше чем или равен candModeList [2], значение IntraPredMode [xB] [yB] увеличивают на один.
[0117] Примерный процесс выведения для режима внутреннего предсказания цветности определен следующим образом. Входными данными для этого процесса является местоположение (xB, yB) яркости, задающее верхнюю левую выборку яркости текущего блока относительно верхней левой выборки яркости текущей картинки. Выходными данными этого процесса является переменная IntraPredModeC. Режим внутреннего предсказания цветности IntraPredModeC получают как определено в таблицах 3.2 или 3.3 с intra_chroma_pred_mode, IntraPredMode [xB] [yB] и chroma_pred_from_luma_enabled_flag в качестве входов.
[0118] Дальнейшие детали относительно процессов кодирования для единиц кодирования, кодированных в режиме внутреннего предсказания, могут быть найдены в кодировании видеовысокой производительности (HEVC) в draft 6 текста спецификации, JCT-VC ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 7th meeting, Geneva, 21-30 November 2011, все содержимое которой включено по ссылке. Дальнейшие детали относительно процессов кодирования для единиц кодирования, кодированных в режиме внутреннего предсказания в соответствии с HEVC, могут быть найдены в draft 7, document HCTVC-I1003, Brass et al., "High Efficiency Video Coding (HEVC) Text Specification Draft 7," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SGI 6 WP3 and ISO/IEC JTC1/SC29/WG11, 9th Meeting: Geneva, Switzerland, April 27, 2012 to May 7, 2012, которые, как 6 июня 2012, были загружены из http://phenix.it- sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-11003-v3.zip.
[0119] Фиг.7 является последовательностью операций, иллюстрирующей один пример способа 100 для сигнализации режима внутреннего предсказания для видеокодирования. Способ 100 может быть выполнен любым из системы 10 согласно фиг.1, видеокодера 20 согласно фиг.3, видеодекодера 30 согласно фиг.4, или любым другим подходящим устройством.
[0120] Способ 100 включает в себя определение, для блока видеоданных, набора наиболее вероятных режимов внутреннего предсказания таким образом, что набор наиболее вероятных режимов внутреннего предсказания имеет размер, который равен заранее определенному числу, которое больше чем или равно двум (102). Способ 100 может также включать в себя кодирование значения, представляющего фактический режим внутреннего предсказания для блока, на основании, по меньшей мере частично, набора наиболее вероятных режимов внутреннего предсказания (104). Далее, способ 100 включает в себя кодирование блока, используя фактический режим внутреннего предсказания (106).
[0121] Способ 100 может включать в себя установку NumMPMC в фиксированный номер для кадра или картинки, который больше или равен 2. Например, если NumMPMC = 3, три режима-кандидата выбирают при всех обстоятельствах для заданной картинки. Относительно блока в этой картинке, если оба candIntraPredModeN являются одинаковыми, определяют направление предсказания для candIntraPredModeN. Из доступных режимов предсказания для этого блока два режима предсказания, которые имеют самые близкие направления предсказания в качестве направления предсказания candIntraPredModeN, назначают быть дополнительными двумя режимами-кандидатами, приводя общее количество наиболее вероятных режимов к фиксированному набору из трех режимов. Если значения для candIntraPredModeN различны, дополнительный режим-кандидат может быть выбран, чтобы быть DC, вертикальным или горизонтальным режимами.
[0122] В другом примере, где NumMPMC = 3, три режима-кандидата выбирают при всех обстоятельствах для заданной картинки, в котором набор из трех наиболее вероятных режимов внутреннего предсказания включает в себя режим DC, вертикальный режим и плоский режим.
[0123] Фиг.8 является последовательностью операций, иллюстрирующей один пример способа 200 для определения наиболее вероятных режимов-кандидатов внутреннего предсказания, когда набор наиболее вероятных режимов внутреннего предсказания равен трем. Способ 200 может быть выполнен видеокодером, таким как видеокодер 20 согласно фиг.2 и 3. В других примерах способ 200 может быть выполнен видеодекодером, таким как видеодекодер 30 согласно фиг.2 и 4.
[0124] Подробности примерного выведения способа 200 является следующими. Во-первых, NumMPMC устанавливается равным трем наиболее вероятным режимам (202). В некоторых примерах видеокодер 20 или видеодекодер 30 устанавливают NumMPMC равным три для текущего блока. В других примерах видеокодер 20 или видеодекодер 30 определяют NumMPMC из ранее кодированного блока относительно текущего блока, в котором ранее кодированный блок является из того же кадра что и текущий блок.
[0125] Видеокодер 20 или видеодекодер 30 определяют, доступны ли оба candIntraPredModeN в наборе доступных режимов внутреннего предсказания (204). Набор доступных режимов внутреннего предсказания может быть основан на intraPredModeNum, и может быть, например, равен 17 или 34. Если оба candIntraPredModeN не доступны, то значение 2 назначают на candModeList [0], значение 0 назначают на candModeList [1], и значение 1 назначают на candModeList [2] (206). Например, если оба candIntraPredModeN не доступны, candModeList [0], назначают на режим DC, candModeList [1] назначают на плоский режим, и candModeList [2] назначают на вертикальный режим. Например, если оба candIntraPredModeN не доступны, то candModeList может быть выбран, чтобы быть DC, вертикальным или горизонтальным. Иначе, если оба candIntraPredModeN являются доступными, видеокодер 20 или видеодекодер 30 определяют, имеют ли оба candIntraPredModeN одно и то же значение, то есть, указывают на один и тот же режим внутреннего предсказания (208).
[0126] Если оба candIntraPredModeN одинаковы, то этот candIntraPredModeN назначается на candModeList [0] (210). CandModeList [1] и candModeList [2] затем получают блоком 46 или 74 внутреннего предсказания, соответственно, применяя следующую процедуру:
preModeMinus1_M [candModeList [0]] назначается на candModeList [1] и PreModePlus1_M [candModeList [0]] назначается на candModeList [2], где M представляет intraPredModeNum (212). Таблицы 3.3, 4.3, и 5.3, представленные ниже, могут использоваться при определении этих значений. Например, используя фиг.5, если intraPredModeNum равно 34, и candModeList [0]=0 (подразумевая, что candIntraPredModeN = 0), то candModeList [1] = preModeMinus1_M [candModeList [0]]=21 и candModeList [2] = PreModePlus1_M [candModeList [0]]=22.
[0127] Возвращаясь к фиг.8, если оба candIntraPredModeN являются одинаковыми (208), то оба candIntraPredModeN назначают на список режимов-кандидатов (214). Например, меньший из этих двух кандидатов назначают на candModeList [0], и большего кандидата назначают на candModeList [1].
[0128] Остающийся третий кандидат, который должен быть включен в набор наиболее вероятных режимов, CandModeList [2], получают, применяя следующую процедуру: видеокодер 20 или видеодекодер 30 определяют, равен ли любой candIntraPredModeN значению 2 (216). Если ни один candIntraPredModeN не равен значению 2, то значение 2 назначают на candModeList [2] (218). Это гарантирует, что значение 2 не повторяется в списке режимов-кандидатов. Если по меньшей мере один из candIntraPredModeN равен значению 2, то видеокодер 20 или видеодекодер 30 определяют, равен ли любой candIntraPredModeN значению 0 (220). Если ни один candIntraPredModeN не равен значению 0, то значение 0 назначают на candModeList [2] (222). Иначе, значение 1 назначают на candModeList [2] (224).
[0129] Таблица 4 предоставляет примерное отображение режимов-кандидатов с переменной intraPredModeNum, установленной в три. В одном примере видеокодер, такой как видеокодер 20 согласно фиг.2 и 3, конфигурируется данными, соответствующими таблице 4.3. Аналогично, видеодекодер, такой как видеодекодер 30 согласно фиг.2 и 4, конфигурируется данными, соответствующими таблице 4.3. Таблица 4.3 обеспечивает отображение между кандидатом (или фактическим) режима внутреннего предсказания и двумя самыми близкими режимами внутреннего предсказания к режиму внутреннего предсказания, когда intraPredModeNum равняется трем. В некоторых примерах самые близкие режимы внутреннего предсказания к режиму внутреннего предсказания могут быть самыми близкими в терминах направления предсказания. Видеокодер может использовать отображение режима-кандидата из таблицы 4.3, чтобы определить, какие режимы внутреннего предсказания включены в список наиболее вероятных режимов-кандидатов для текущего блока, когда intraPredModeNum равен трем.
[0130] Таблица 5.3 предоставляет примерное отображение режимов-кандидатов с переменной intraPredModeNum, установленной в семнадцать. В одном примере видеокодер, такой как видеокодер 20 согласно фиг.2 и 3, конфигурируется данными, соответствующими таблице 5.3. Аналогично, видеодекодер, такой как видеодекодер 30 согласно фиг.2 и 4, конфигурируется данными, соответствующими таблице 5.3. Таблица 5.3 обеспечивает отображение между кандидатом (или фактическим) режимом внутреннего предсказания и двумя самыми близкими режимами внутреннего предсказания к режиму внутреннего предсказания, когда intraPredModeNum равняется семнадцати. В некоторых примерах самые близкие режимы внутреннего предсказания к режиму внутреннего предсказания могут быть самыми близкими в терминах направления предсказания. Видеокодер может использовать отображение режима-кандидата из таблицы 5.3, чтобы определить, какие режимы внутреннего предсказания включены в список наиболее вероятных режимов-кандидатов для текущего блока, когда intraPredModeNum равно семнадцати.
[0131] Таблица 6.3 предоставляет примерное отображение режимов-кандидатов с переменной intraPredModeNum установлено в тридцать четыре. В одном примере видеокодер, такой как видеокодер 20 согласно фиг.2 и 3, конфигурируется данными, соответствующими таблице 6.3. Аналогично, видеодекодер, такой как видеодекодер 30 согласно фиг.2 и 4, конфигурируется данными, соответствующими таблице 6.3. Таблица 6.3 обеспечивает отображение между кандидатом (или фактическим) режимом внутреннего предсказания и двумя самыми близкими режимами внутреннего предсказания к режиму внутреннего предсказания, когда intraPredModeNum равняется тридцать четыре. В некоторых примерах самые близкие режимы внутреннего предсказания к режиму внутреннего предсказания могут быть самыми близкими в терминах направления предсказания. Видеокодер может использовать отображение режима-кандидата из таблицы 6.3, чтобы определить, какие режимы внутреннего предсказания включены в список наиболее вероятных режимов-кандидатов для текущего блока, когда intraPredModeNum равно тридцати четырем.
[0132] В некоторых примерах, когда NumMPMC больше чем или равно двум, один из наиболее вероятных режимов-кандидатов является плоским режимом. Например, если NumMPMC равно четырем, три режима кандидата могут быть определены как описано выше, в то время как четвертый режим установлен в плоский режим. Если один из трех режимов-кандидатов уже равен плоскому режиму, четвертый режим может быть устанавливается равным режиму DC.
[0133] Другой параметр, оставшийся режим внутреннего предсказания, rem_intra_pred_mode, также может быть определен. Согласно способам настоящего описания, rem_intra_pred_mode может иметь множественные контексты. Наиболее вероятный режим может использоваться, чтобы предсказать оставшийся режим внутреннего предсказания. Каждый контейнер закодирован с контекстом, чтобы лучше представить статистическую величину, приводящую к улучшенному выбору наиболее вероятного режима.
[0134] Согласно другим способам может быть предоставлено группирование кодовых слов. Например, все кодовые слова для режимов внутреннего предсказания могут быть разделены на множественные группы. Бинаризация фиксированной или переменной длины может использоваться, чтобы сигнализировать индекс группы. Затем, бинаризация фиксированной или переменной длины может использоваться, чтобы сигнализировать индекс кодового слова в группе.
[0135] Например, три группы кодов сформированы для intraPredModeNum, равного 17 или 34. Все группы, кроме одной имеют 2N строк контейнера, как показано в таблице 7. В одном примере видеокодер, такой как видеокодер 20 согласно фиг.2 и 3, конфигурируется данными, соответствующими таблице 7. Аналогично, видеодекодер, такой как видеодекодер 30 согласно фиг.2 и 4, конфигурируется с данными, соответствующими таблице 7.
[0136] Одно исключение к таблице 7 является тем, что когда отображенный rem_intra_luma_pred_mode больше чем 23, и бинаризация показана в таблице 8. Унарная бинаризация используется, чтобы указать индекс группы отображенного rem_intra_luma_pred_mode. В одном примере видеокодер, такой как видеокодер 20 согласно фиг.2 и 3, конфигурируется данными, соответствующими таблице 8. Аналогично, видеодекодер, такой как видеодекодер 30 согласно фиг.2 и 4, конфигурируется данными, соответствующими таблице 8.
[0137] Индекс кодового слова получают из режима внутреннего предсказания, независимо от того, использует ли видеокодер VLC или CABAC. Индекс кодового слова может отображаться на бинаризированное значение, такое, как показано в таблице 8. Бинаризированное значение является последовательностью битов, которые могут упоминаться как контейнеры. Каждый контейнер может быть кодирован последовательно. Таким образом, две таблицы предоставлены таким образом, что для каждого различного сценария, кодовые слова уже представлены в таблице и не должны быть определены для каждого сценария. Единственная таблица бинаризации предоставлена независимо от того, какие наиболее вероятные режимы внутреннего предсказания включены в список кандидатов.
[0138] Способы, описанные здесь, также обеспечивают фиксированное кодовое слово и кодируют размер таблицы для режима предсказания цветности при различных режимах предсказания яркости. Из-за режима наследования существующий подход удаляет любые избыточные кодовые слова из кодовых таблиц. Таблица кодов фиксированного размера может быть выгодной для процесса синтаксического разбора, так как декодирование режима яркости более не должно быть сделано заранее.
[0139] Два различных подхода могут быть осуществлены, чтобы достигнуть таблицы кодов фиксированного размера. Во-первых, один из режимов внутреннего предсказания запрещается, когда нет избыточного кодового слова, таким образом избыточное кодовое слово создается искусственно. Во-вторых, отличному режиму разрешается заменить избыточный режим, чтобы устранить избыточное кодовое слово. Кроме того, отображение кодового слова и режима внутреннего предсказания может быть различным для различных режимов предсказания яркости.
[0140] В другом примере отображение плоского режима может быть изменено от предыдущего HEVC. Например, плоский режим может быть отображен в индексное значение 0. Затем значение индекса, ассоциированное со всеми другими режимами внутреннего предсказания, может быть увеличено на 1. Это изменение увеличит вероятность получения меньшего rem_intra_luma_pred_mode, так как плоский режим выбирается более часто.
[0141] Способы настоящего раскрытия устанавливают количество доступных режимов внутреннего предсказания цветности. Переменная Intra_Pred_ModeC является режимом внутреннего предсказания цветности. Например, шесть доступных режимов внутреннего предсказания цветности (IntraPredModeC) могут быть сигнализированы. Два режима, предсказание сигнала яркости и повторное использование режима внутреннего предсказания яркости, остаются неизменными. Для других четырех режимов добавляют два выбора режима, которые включают в себя смежные режимы внутреннего предсказания и перпендикулярные смежные режимы внутреннего предсказания. Таблица 9 предоставляет примерное отображение индекса для смежных режимов внутреннего предсказания. Таблица 9 предоставляет примерное отображение индекса для перпендикулярных смежных режимов внутреннего предсказания.
[0142] Другие четыре режима получают следующим образом: если intra_pred_mode равно 2, 0 назначается на intra_chroma_pred_mode [0], 1 назначается на intra_chroma_pred_mode [1], 6 назначается на intra_chroma_pred_mode [2], и 35 назначается на intra_chroma_pred_mode [3]. Если intra_pred_mode равно 35, например, 0 назначается на intra_chroma_pred_mode [0], 1 назначается на intra_chroma_pred_mode [1], 2 назначается на intra_chroma_pred_mode [2], и 6 назначается на intra_chroma_pred_mode [3].
[0143] Если, например, intraPredModeNum равно 18 или 35, intra_chroma_pred_mode [0], intra_chroma_pred_mode [1], и intra_chroma_pred_mode [2] получают, применяя следующую процедуру, используя некоторые из таблиц, таких как Таблицы 8 и 9. PredModeMinus1_M [intra_pred_mode] назначается на intra_chroma_pred_mode [0], PredModePlus1_M [intra_pred_mode] назначается на intra_chroma_pred_mode [1], PredMode_P_M [intra_pred_mode] назначается на intra_chroma_pred_mode [2], и 35 назначается на intra_chroma_pred_mode [3], где М представляет intraPredModeNum. Иначе, 0 назначается на intra_chroma_pred_mode [0], 1 назначается на intra_chroma_pred_mode [1], 2 назначается на intra_chroma_pred_mode [2], и 35 назначается на intra_chroma_pred_mode [3].
[0144] В другом примере, где количество доступных режимов внутреннего предсказания цветности фиксировано, любой избыточный intra_pred_mode в списке режимов-кандидатов внутреннего предсказания может быть заменен заранее заданным режимом внутреннего предсказания.
[0145] В другом примере NumMPMC может быть установлен равным четырем. Таким образом, четыре режима-кандидата выбирают при всех обстоятельствах для заданного видеокадра (то есть NumMPMC = 4). Если оба candIntraPredModeN одинаковы, два доступных режима предсказания, которые являются самыми близкими к candIntraPredModeN в направлении предсказания, назначаются как два дополнительных два режима-кандидата. Если candIntraPredModeN различны, дополнительный режим-кандидат может быть выбран, чтобы быть DC, вертикальным или горизонтальным режимом.
[0146] Выведение примера для списков режимов-кандидатов является следующим, для когда NumMPMC = 4: Если оба candIntraPredModeN не доступны, то значение 3 назначается на candModeList [0], значение 0 назначается на candModeList [1], значение 1 назначается на candModeList [2], и значение 2 назначается на candModeList [3]. Иначе, если оба candIntraPredModeN одинаковы, то этот candIntraPredModeN назначают на candModeList [0]. CandModeList [1] и candModeList [2] получают, применяя следующую процедуру, используя таблицы 3.4, 4.4 и 5.4.
[0147] Как может быть замечено из таблиц 3.4, 4.4 и 5.4, если candModeList [0] не равны, значение 0 назначается на candModeList [1]. Иначе, значение 2 назначается на candModeList [1]. PreModeMinus1_M [candModeList [0]] назначается на candModeList [2], и PreModePlus1_M [candModeList [0]] назначается на candModeList [3], где M представляет intraPredModeNum.
[0148] Иначе, оба candIntraPredModeN назначают на список режимов-кандидатов с меньшим из этих двух кандидатов в candModeList [0] и большим - в candModeList [1]. Переменные candModeList [2], candModeList [3], и candModeList [4] получают, применяя следующую процедуру: Если candIntraPredMode [0]=0, то candModeList [2] = PreModeMinus1_M [candModeList [1]] и candModeList [3] = PreModePlus1_M [candModeList [1]]. Иначе, если candIntraPredMode1 = 0, то candModeList [2] = PreModeMinus1_M [candModeList [0]] и candModeList [3] = PreModePlus1_M [candModeList [0]]. Иначе, candModeList [2]=0, и переменные candModeList [3] и candModeList [4] выбраны первыми двумя доступными элементами из следующего набора:
Режим может быть определен как доступный, когда этот режим ранее не существовал в candModeList.
[0149] Таблицы 3.4, 4.4 и 5.4 представлены ниже, и являются аналогичными таблицам 3.3, 4.3 и 5.3, представленным выше. Таблицы 3.3, 4.3 и 5.3 относятся к примерам, где intraPredModeNum равно 3. Напротив, таблицы 3.4, 4.4 и 5.4 относятся к примерам, где intraPredModeNum равно 4. В частности, таблица 4.4 представляет примерное отображение режима-кандидата, когда intraPredModeNum равно 4.
[0150] Таблица 5.4 представляет примерное отображение режима-кандидата, когда intraPredModeNum равно 18.
[0151] Таблица 6.4 представляет примерное отображение режима-кандидата, когда intraPredModeNum равно 35.
[0152] Согласно другому примеру, NumMPMC может быть равным 5. То есть, пять режимов-кандидатов выбирают при всех обстоятельствах (то есть NumMPMC = 5), за исключением intraPredModeNum = 4, где NumMPMC = 4. Если NumMPMC = 4, выведение candModeList [4] пропускают. В этом примере NumMPMC = 5, плоский режим, как предполагается, установлен в значение 0. Если оба candIntraPredModeN одинаковы, то есть, например, если режимы внутреннего предсказания левого соседнего и верхнего соседнего блоков являются одинаковыми, два доступных режима предсказания, которые являются самыми близкими к candIntraPredModeN в направлении предсказания, могут быть назначены двумя режимами-кандидатами. Если candIntraPredModeN различны, дополнительный режим-кандидат может быть выбран, чтобы быть DC, вертикальным или горизонтальным режимом.
[0153] Деталями выведения примера являются следующие: Если оба candIntraPredModeN не доступны, то значение 3 назначается на candModeList [0], значение 0 назначается на candModeList [1], значение 1 назначается на candModeList [2], значение 2 назначается на candModeList [3], и значение 9 назначается на candModeList [4]. Например, candIntraPredMode0 может соответствовать левому соседнему блоку (блок 6 на фиг.1), и candIntraPredMode1 может соответствовать верхнему соседнему блоку (блок 4 на фиг.1). Иначе, если оба candIntraPredModeN доступны и являются одинаковыми, то значение одного и того же candIntraPredModeN назначается на candModeList [0].
[0154] Значения для candModeList [1] и candModeList [2] выводят, применяя следующую процедуру, используя таблицы 2.4, 3.4 и 4.4. Если candModeList [0] не равно 0 или 2, значение 0 назначается на candModeList [1]. Иначе, значение 2 назначается на candModeList [1]. PreModeMinus1_M [candModeList [0]] назначается на candModeList [2], PreModePlus1_M [candModeList [0]] назначается на candModeList [3], и Last_MPM [candModeList [0]] назначается на candModeList [4], где M представляет intraPredModeNum.
[0155] Иначе, оба candIntraPredModeN назначают на список режимов-кандидатов с меньшим из этих двух кандидатов в candModeList [0] и большим - в candModeList [1]. Переменные candModeList [2], candModeList [3] и candModeList [4] получают, применяя следующую процедуру. Если candIntraPredMode0 = 0, то candModeList [2] = PreModeMinus1_M [candModeList [1]], candModeList [3] = PreModePlus1_M [candModeList [1]], и candModeList [4] = LastMPM_M [candModeList [1]]. Иначе, если candIntraPredMode1 = 0, то candModeList [2] = PreModeMinus1_M [candModeList [0]], candModeList [3] = PreModePlus1_M [candModeList [0]], и candModeList [4] = LastMPM_M [candModeList [0]]. Иначе, candModeList [2] = 0, и candModeList [3] и candModeList [4] выбирают из первых двух доступных элементов из следующего набора:
Режим может быть определен как доступный, когда режим ранее не существовал в candModeList.
[0156] Относительно сигнализации режима внутреннего предсказания цветности современный HEVC разрешает 6 режимов, плоский, вертикальный, горизонтальный, DC, основанное на сигнале яркости предсказание цветности, и наследование режима предсказания Яркости. Назначение индекса для этих режимов может быть следующим: плоский (0), вертикальный 1l), горизонтальный (2), DC (3), и основанное на сигнале яркости предсказание (35) цветности. Однако, в других примерах используются другие назначения индекса. Среди всех наследование режима предсказания яркости означает, что направление предсказания цветности является таким же как направление предсказания яркости.
[0157] Например, 0 назначается на intra_chroma_pred_mode [0], 1 назначается на intra_chroma_pred_mode [1], 2 назначается на intra_chroma_pred_mode [2] и 3 назначается на intra_chroma_pred_mode [3]. Если intra_pred_mode равно 0, 1, 2, или 3 (то есть плоский, вертикальный, горизонтальный, или режим DC), 7 назначается на intra_chroma_pred_mode [intra_pred_mode]. Фиг.6 иллюстрирует другой пример, имеющий отличное отображение индексных значений на режимы внутреннего предсказания для компонентов яркости. Например, на фиг.6, если intra_pred_mode равно 0, 10, 26 или 1 (плоский, вертикальный, горизонтальный, или режим DC, соответственно), то 34 (верхний правый) назначается на intra_chroma_pred_mode [intra_pred_mode]. Таким образом, если intra_pred_mode равно плоский, вертикальный, горизонтальный, или режим DC, то intra_chroma_pred_mode [intra_pred_mode] равно верхнему-правому направленному режиму.
[0158] Конструкция Last_MPM может быть одинаковой для intraPredModeNum = 18 и первых 18 режимов, когда intraPredModeNum = 35, чтобы иметь тот же размер таблицы. Также, когда intraPredModeNum = 35, последние 17 режимов могут быть симметрично с конструированы относительно режима 1, 2, и 4, чтобы также сохранить размер таблицы.
[0159] В другом примере может быть установлено количество доступных режимов внутреннего предсказания цветности. Например, шесть доступных режимов внутреннего предсказания цветности (IntraPredModeC) могут быть сигнализированы. Два режима, предсказание сигнала яркости и повторное использование режима внутреннего предсказания яркости, остаются неизменными. Для других четырех режимов добавляться два выбора, которые являются смежными режимами внутреннего предсказания (таблица 4.4 и таблица 5.4) и режимы перпендикулярного смежного внутреннего предсказания (таблица 8 и таблица 9).
[0160] Другие четыре режима получают, как следует ниже. 0 назначается на intra_chroma_pred_mode [0], 1 назначается на intra_chroma_pred_mode [1], 2 назначается на intra_chroma_pred_mode [2], и 3 назначается на intra_chroma_pred_mode [3]. Если intra_pred_mode равно 0 или 3, 7 назначается на intra_chroma_pred_mode [intra_pred_mode]. Иначе, PredModeMinus1_M [intra_pred_mode] назначается на intra_chroma_pred_mode [0], PredModePlus1_M [intra_pred_mode] назначается на intra_chroma_pred_mode [1], PredMode_P_M [intra_pred_mode] назначается на intra_chroma_pred_mode [2].
[0161] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы по как одна или более инструкций или код по считываемому компьютером носителю и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемые компьютером носители данных, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. Таким образом считываемый компьютером носитель обычно может соответствовать (1) материальным считываемым компьютером носителям данных, которые является невременными или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому могут получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в настоящем описании. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0162] Посредством примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое запоминающее устройство, магнитное дисковое запоминающее устройство, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может использоваться, чтобы сохранить желательный программный код в форме инструкций или структур данных и к которому может получить доступ компьютер. Также, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волокно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии такой как инфракрасная, радио- и микроволновая, то эти коаксиальный кабель, волокно-оптический кабель, витая пара, DSL, или беспроводные технологии такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером носители данных и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на невременные материальные носители данных. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.
[0163] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровые сигнальные процессоры (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется здесь, может относиться к любой известной структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Также, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, сконфигурированных для кодирования и декодирования, или встроенных в объединенный кодек. Также, способы могли быть полностью реализованы в одной или более схемах или логических элементах.
[0164] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули, или блоки описаны в настоящем описании, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнять раскрытые способы, но не обязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0165] Были описаны различные примеры. Эти и другие примеры находятся в рамках ниже следующей формулы изобретения.