ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ
Эта заявка испрашивает приоритет предварительной заявки США №. 62/822 865, поданной 23 марта 2019 г., предварительной заявки США №. 62/824 282, поданной 26 марта 2019 г., и предварительной заявки США №. 62/824360, поданной 27 марта 2019 г., все из которых включены в настоящий документ посредством ссылок.
Область техники
Варианты осуществления настоящей заявки (раскрытие) в целом относятся к области обработки картинок и, в частности, к внутреннему предсказанию.
Уровень техники
Видеокодировка (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы захвата и редактирования видеоконтента и видеокамеры приложений безопасности.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть существенным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются в месте назначения устройством декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео, желательны улучшенные методики сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.
В частности, существует постоянная потребность в снижении нагрузки на процессор в контексте обработки внутреннего предсказания. В данной области техники известно использование списка наиболее вероятных режимов (MPM) для кодировки в режиме внутреннего предсказания. Список MPM уменьшает количество битов, необходимых для кодировки режима внутреннего предсказания текущего блока. Когда режим внутреннего предсказания текущего блока соответствует записи в списке MPM, кодируется индекс, а не фактический режим, в результате чего требуется меньше битов. Однако выбор записей для генерации списка MPM с учетом наиболее эффективной кодировки с внутренним предсказанием по-прежнему является некоторой задачей. Правильный выбор записей сильно влияет на эффективность кодировки с режимом внутреннего предсказания на основе списка MPM.
Ввиду этого цель, лежащая в основе настоящего изобретения, состоит в том, чтобы предоставить методику для получения режима внутреннего предсказания на основе списка MPM, который приводит к более эффективной кодировке по сравнению с уровнем техники.
Сущность изобретения
Варианты осуществления настоящей заявки предоставляют устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.
Вышеупомянутые и другие цели достигаются сущностью изобретения по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
Согласно первому аспекту изобретение относится к способу, выполняемому устройством декодирования. Способ включает в себя: получение значения первой информации указания текущего блока, причем значение первой информации указания указывает, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов; и получение значения опорной строки индекса текущего блока. Набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим. Когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, способ дополнительно включает в себя получение значения второй информации указания текущего блока, причем значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом или нет.
В традиционном способе сложность декодирования для обработки MPM высока. В зависимости от использования инструментов режима внутренней кодировки подразделов (ISP) и множественных опорных строк (MRL) создаются три разных списка MPM (6 записей). В аспектах или любых возможных вариантах осуществления аспектов этого изобретения конструкция списка MPM (5 записей) унифицирована с уменьшенной сложностью декодирования, независимо от того, используется ли инструмент кодировки MRL или ISP.
Кроме того, планарный режим считается особым режимом из-за его высокой частоты, и для проверки того, является ли текущий режим планарным режимом, назначается специальный флаг. Хотя его нет в списке MPM (с придуманными (изобретенными) 5 записями), он всегда проверяется, когда флаг mpm имеет значение true (является истинным). Другими словами, флаг mpm указывает, находится ли режим внутреннего предсказания текущего блока в списке из 6 записей, состоящем из планарного режима и 5 записей списка MPM. Эти 5 записей списка MPM построены на основе режимов внутреннего предсказания левого и верхнего блока).
В качестве реализации первого аспекта первая информация указания указывается первым флагом, например, intra_luma_mpm_flag. Значение опорной строки индекса текущего блока может быть указано с помощью intra_luma_ref_idx. Вторая информация указания может быть указана вторым флагом, например intra_luma_not_planar_flag.
Когда кодировка MRL не задействована, то есть когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, устройства синтаксически анализируют поток битов, чтобы получить значение второй информации указания. Когда кодировка MRL задействована, значение второй информации указания получается значением по умолчанию. В этой ситуации планарный режим исключается, и соответствующий ему флаг (например, intra_luma_not_planar_flag) не анализируется из потока битов, а выводится как значение по умолчанию (например, значение 1). В этом случае сохраняется бит для указания значения планарного флага (т.е. Intra_luma_not_planar), когда MRL задействован).
Согласно второму аспекту изобретение относится к способу, выполняемому аппаратурой кодирования. Способ включает в себя: определение того, входит ли режим внутреннего предсказания текущего блока в набор наиболее вероятных режимов; и определение того, используется ли ближайшая соседняя опорная строка к текущему блоку для внутреннего предсказания. Набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим. Способ дополнительно включает в себя кодирование потока битов, при этом поток битов включает в себя информацию, указывающую, является ли режим внутреннего предсказания текущего блока планарным режимом, когда режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и ближайшая соседняя опорная строка к текущему блоку используется для внутреннего предсказания.
В качестве внедрения второго аспекта поток битов включает в себя первый флаг, указывающий, входит ли режим внутреннего предсказания текущего блока в набор наиболее вероятных режимов, и второй флаг, указывающий, является ли режим внутреннего предсказания текущего блока планарным режимом. Например, первый флаг - это intra_luma_mpm_flag, а второй флаг - intra_luma_not_planar_flag.
Способ согласно первому аспекту изобретения может выполняться устройством декодирования согласно третьему аспекту изобретения. Устройство декодирования включает в себя первый блок получения и второй блок получения. Первый блок получения, сконфигурированный для получения значения опорной строки индекса текущего блока и значения первой информации указания текущего блока, причем значение первой информации указания указывает, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов. Набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим. Второй блок получения, сконфигурированный для получения значения второй информации указания текущего блока, когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, при этом значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом.
Дополнительные признаки и формы реализации способа согласно третьему аспекту изобретения соответствуют особенностям и формам реализации аппаратуры согласно первому аспекту изобретения.
Способ согласно второму аспекту изобретения может выполняться устройством кодирования согласно четвертому аспекту изобретения. Устройство кодирования включает в себя блок определения и блок кодирования. Блок определения, сконфигурированный для определения, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов, и для определения, используется ли ближайшая соседняя опорная строка к текущему блоку для внутреннего предсказания. Набор наиболее вероятных режимов включает 5 кандидатных режимов внутреннего предсказания и планарный режим. Блок кодирования, сконфигурированный для кодирования потока битов, при этом поток битов включает в себя информацию, указывающую, является ли режим внутреннего предсказания текущего блока планарным режимом, когда режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и ближайший соседняя опорная строка к текущему блоку используется для внутреннего предсказания.
Дополнительные признаки и формы реализации способа согласно четвертому аспекту изобретения соответствуют особенностям и формам реализации аппаратуры согласно второму аспекту изобретения.
Согласно пятому аспекту изобретение относится к аппаратуре для декодирования видеопотока, включающей в себя процессор и память. Память хранит инструкции, которые вынуждают процессор выполнять способ согласно первому аспекту.
Согласно шестому аспекту изобретение относится к аппратуре для кодирования видеопотока, включающей в себя процессор и память. Память хранит инструкции, которые вынуждают процессор выполнять способ согласно второму аспекту.
Согласно седьмому аспекту предложен считываемый компьютером носитель, на котором хранятся инструкции, которые при исполнении обеспечивают работу одного или более процессоров, выполненных с возможностью кодирования видеоданных. Инструкции вынуждают один или более процессоров выполнять способ согласно первому или второму аспекту или любому возможному варианту осуществления первого или второго аспекта.
Согласно восьмому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно первому или второму аспекту или любому возможному варианту осуществления первого или второго аспекта при исполнении на компьютере.
Планарный режим имеет высокую частоту, используемую в качестве режима внутреннего предсказания. Эффективность кодировки процесса кодировки может быть повышена за счет использования информации, чтобы указать, является ли режим внутреннего предсказания текущего блока планарным режимом по сравнению с уровнем техники, когда режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, а ближайшая соседняя опорная строка к текущему блоку используется для внутреннего предсказания.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Далее варианты осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:
Фиг. 1A является блок-схемой, показывающей пример системы видеокодировки, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг. Фиг.1B является блок-схемой, показывающей другой пример системы видеокодировки, выполненной с возможностью реализации;
Фиг. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 4 является блок-схемой, иллюстрирующей пример аппаратуры кодирования или аппаратуры декодирования;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример аппаратуры кодирования или аппаратуры декодирования;
Фиг. 6 - блок-схема, иллюстрирующая пример инструмента кодировки множественных опорных строк (MRL);
Фиг. 7 - блок-схема, иллюстрирующая пример разделения блоков 4 × 8 и, 8 × 4;
Фиг. 8 - блок-схема, иллюстрирующая пример разделения всех блоков, кроме 4 × 8, 8 × 4 и 4 × 4;
Фиг. 9 - блок-схема, иллюстрирующая пример контекстного моделирования/кодирования CABAC;
Фиг. 10 - блок-схема, иллюстрирующая пример левого (L) и верхнего (A) соседних блоков текущего блока;
Фиг. 11 - блок-схема, иллюстрирующая режимы внутреннего предсказания;
Фиг. 12A иллюстрирует варианты осуществления способа 1200 внутреннего предсказания текущего блока, реализованного устройством декодирования согласно настоящему изобретению;
Фиг. 12B иллюстрирует варианты осуществления способа 1210 внутреннего предсказания текущего блока, реализованного устройством декодирования согласно настоящему изобретению;
Фиг. 13 иллюстрирует варианты осуществления способа 1300 внутреннего предсказания текущего блока, реализованного устройством кодирования согласно настоящему изобретению;
Фиг. 14 иллюстрирует варианты осуществления устройства 1400 декодирования для использования в декодере изображений согласно настоящему изобретению;
Фиг. 15 иллюстрирует варианты осуществления устройства 1500 кодирования для использования в кодере изображений согласно настоящему изобретению;
Фиг. 16 - блок-схема, показывающая примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента; и
Фиг. 17 является блок-схемой, показывающей структуру примерного терминального устройства.
Следующие одинаковые ссылочные позиции относятся к одинаковым или, по меньшей мере, функционально эквивалентным особенностям, если явно не указано иное.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если КОНКРЕТНО не указано иное.
Видеокодировка обычно относится к обработке последовательности картинок, которые образуют видео или видеопоследовательность. Вместо термина «картинка» термины «кадр» или «изображение» могут использоваться как синонимы в области видеокодировки. Видеокодировка (или кодировка (coding) в целом) содержит две части: видеокодирование (video encoding) и видеодекодирование. Видеокодирование выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеокартинок для сокращения объема данных, требуемого для представления видеокартинок (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне места назначения (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеокартинок (или картинок в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеокартинок или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).
В случае видеокодировки без потерь исходные видеокартинки могут быть восстановлены, т.е. восстановленные видеокартинки имеют такое же качество, что и исходные видеокартинки (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае видеокодировки с потерями выполняется дополнительное сжатие, например посредством квантования, для сокращения объема данных, представляющих видеокартинки, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеокартинок ниже или хуже по сравнению с качеством исходных видеокартинок.
Несколько стандартов видеокодировки принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодировка с 2D преобразованием для применения квантования в области преобразования). Каждая картинка видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодировка обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (интра-картинки) предсказания и/или временного (интер-картинки) предсказания для генерирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут генерировать идентичные предсказания (например, интра- и внешнего предсказания) и/или восстановления для обработки, то есть кодировки (coding), последующих блоков.
В нижеследующих вариантах осуществления системы 10 видеокодировки, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1 по 3.
Фиг. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодировки, например систему 10 видеокодирования (или сокращенно систему 10 кодировки), которая может использовать методики из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 видеокодировки представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методик в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на ФИГ. 1A, система 10 кодировки содержит устройство-источник 12, выполненное с возможностью предоставления закодированных данных 21 картинки, например в устройство-получатель 14 для декодирования закодированных данных 13 картинки.
Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 картинки, препроцессор (или блок препроцессора) 18, например, препроцессор 18 картинки, и интерфейс связи или блок 22 связи.
Источник 16 картинки может содержать или быть устройством захвата картинки любого типа, например камерой для захвата картинки реального мира, и/или устройством генерирования картинки любого типа, например процессором компьютерной графики для генерирования компьютерной анимированной картинки, или любым типом другого устройства для получения и/или предоставления картинки реального мира, генерируемой компьютером картинки (например, содержимого экрана, картинки виртуальной реальности (VR)) и/или любой их комбинации (например, картинки дополненной реальности (AR)). Источником картинки может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых картинок.
В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 препроцессора, картинка или данные 17 картинки также могут именоваться необработанной (raw) картинкой или необработанными данными 17 картинки.
Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 картинки и выполнения предварительной обработки в отношении этих данных 17 картинки для получения предварительно обработанной картинки 19 или предварительно обработанных данных 19 картинки. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 препросессора может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 картинки и предоставления закодированных данных 21 картинки (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).
Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема закодированных данных 21 картинки и передачи этих закодированных данных 21 картинки (или любой их дополнительно обработанной версии) по каналу 13 связи в другое устройство, например, устройство-получатель 14 или любое другое устройство для сохранения или непосредственного восстановления.
Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.
Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема закодированных данных 21 картинки (или любой их дополнительно обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройства хранения закодированных данных картинки, и предоставления закодированных данных 21 картинки в декодер 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема данных 21 закодированной картинки или закодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки данных 21 закодированной картинки в подходящий формат, например, в пакеты, и/или обработки данных закодированной картинки с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.
Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования передачи или обработки и/или распаковки для получения закодированных данных 21 картинки.
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть сконфигурированы как интерфейсы однонаправленной связи, как указано стрелкой для канала 13 связи на Фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например отправки и приема сообщений, например, для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например, передаче закодированных данных картинки.
Декодер 30 выполнен с возможностью приема закодированных данных 21 картинки и предоставления декодированных данных 31 картинки или декодированной картинки 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг.3 или Фиг.5.
Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 картинки (также называемых данными восстановленной картинки), таких как декодированная картинка 31, чтобы получить пост-обработанные данные 33 картинки, например, пост-обработанную картинку 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки декодированных данных 31 картинки для отображения, например, с помощью устройства 34 отображения.
Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 картинки для отображения картинки, например, пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленной картинки, например, интегрированного или внешнего дисплея или монитора. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидкий кристалл на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.
Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать оба или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с использованием отдельного аппаратного и/или программного обеспечения или любой их комбинации.
Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенное видеокодировку или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 с ФИГ. 2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с ФИГ. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на Фиг.5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем долговременном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг.1B.
Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.
В некоторых случаях система 10 видеокодировки, проиллюстрированная на Фиг. 1A, является лишь примером, а методики настоящей заявки могут применяться к настройкам видеокодировки (такого как видеокодирование или видеодекодирование), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективную видеокодировку (HEVC) или на эталонное программное обеспечение универсальной видеокодировки (VVC), стандарт видеокодировки следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодировке (JCT-VC) экспертной группы по видеокодировке ITU-T (VCEG) и экспертной группы по движущимся изображениям ISO/IEC (MPEG). Обычный специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
Фиг. 2 показывает схематичную блок-схему примерного видеокодера 20, который выполнен с возможностью реализации методик настоящей заявки. В примере на фиг.2 видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурной фильтрации, буфер 230 декодированных картинок (DPB), блок 260 выбора режима, блок 270 энтропийного кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разделения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относиться к формированию пути сигнала прямой связи кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут относится к формированию пути сигнала обратной связи видеокодера 20, при этом путь сигнала обратной связи видеокодера 20 соответствует пути сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер (DPB) 230 декодированных картинок, блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20.
Картинки и разделение картинки (картинки и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 картинки 17 (или данных 17 картинки), например, картинки из последовательности картинок, образующих видео или видеопоследовательность. Принятая картинка или данные картинки также могут представлять собой предварительно обработанную картинку 19 (или предварительно обработанные данные 19 картинки). Для простоты нижеследующее описание ссылается на картинку 17. Картинка 17 также может именоваться текущей картинкой или картинкой, которая подлежит кодированию (в частности, при видеокодировке, чтобы отличать текущую картинку от других картинок, например, ранее закодированных и/или декодированных картинок той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущую картинку).
(Цифровая) картинка является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента картинки) или pel (элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или картинки определяет размер и/или разрешение картинки. Для представления цвета обычно используются три цветовые компоненты, т.е. картинка может быть представлена или включать в себя три массива выборок. В формате RBG или цветовом пространстве картинка содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировке каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновой картинке), в то время как две компоненты Cb и Cr цветности (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, картинка в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Картинки в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если картинка является монохромной, она может содержать только массив выборок яркости. Соответственно, картинка может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок разделения картинки (не показан на Фиг. 2), выполненный с возможностью разделения картинки 17 на множество (обычно не перекрывающихся) блоков 203 картинки. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодировки (CTB) или единицами дерева кодировки (CTU) (H.265/HEVC и VVC). Блок разделения картинки может быть выполнен с возможностью использования одинакового размера блока для всех картинок в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между картинками или подмножествами или группами картинок и разделения каждой картинки на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 картинки 17, например одного, нескольких или всех блоков, формирующих картинку 17. Блок 203 картинки также может именоваться текущим блоком картинки или блоком картинки, подлежащим кодированию.
Подобно картинке 17, блок 203 картинки снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем картинка 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромной картинки 17 или массив яркости или цветности в случае цветной картинки) или три массива выборок (например, яркость и два массива цветности в случае цветной картинки 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может представлять собой, например, массив выборок M×N (M-столбец на N-строка) или массив M×N коэффициентов преобразования.
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть выполнены с возможностью кодирования картинки 17 блок за блоком, например кодирование и предсказание выполняется для каждого блока 203.
Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разделена на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования картинки с использованием групп тайлов (мозаичных элементов) (также называемых группами видеовидеотайлов) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разделена на или закодирована с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 картинки и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 картинки, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.
Преобразование
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с некоторым коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе некоторых ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовую глубину коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например блоком 312 обработки обратного преобразования в видеодекодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.
Варианты осуществления видеокодера 20 (соответственно блок 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более точного или более грубого квантования. Меньшие размеры шагов квантования соответствуют более точному квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать точному квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.
Варианты осуществления видеокодера 20 (соответственно блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или закодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например путем применения обратной схемы квантования относительно таковой, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.
Восстановление
Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например посредством сложения - выборка за выборкой - значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или закодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированных картинок
Буфер 230 декодированных картинок (DPB) может быть памятью, в которой хранятся опорные картинки или, в общем, данные опорных картинок для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных картинок может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных картинок может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, той же самой текущей картинки или разных картинок, например, ранее восстановленных картинок, и может предоставлять полные ранее восстановленные, т.е. декодированные, картинки (и соответствующие опорные блоки и выборки) и/или частично восстановленную текущую картинку (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер 230 декодированных картинок (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.
Выбор режима (разделение и предсказание)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и выполнен с возможностью приема или получения данных исходной картинки, например исходного блока 203 (текущего блока 203 текущего картинки 17), и восстановленных данных картинки, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков той же самой (текущей) картинки и/или из одной или множества ранее декодированных картинок, например из буфера 230 декодированных картинок или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленной картинки используются в качестве данных опорной картинки для предсказания, например, внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (включая отсутствие разделения) и режима предсказания (например, режима внутреннего или внешнего предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации коэффициента искажения (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение клэффициента. Такие термины, как «лучший», «минимальный», «оптимальный» и т.д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т.д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.
Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на более мелкие разделения блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделений блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделений блока или субблоков.
Далее более подробно поясняется разделение (например, посредством блока 260 разделения) и обработка предсказания (посредством блока 244 внешнего предсказания и блока 254 внутреннего предсказания), выполняемые примерным видеокодером 20.
Разделение
Блок 262 разделения может разделять (или разбивать) текущий блок 203 на более мелкие разделения, например, блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделения. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например, разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т.д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например, достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два разделения, называется двоичным деревом (BT), дерево, использующее разделение на три разделения, называется троичным деревом (TT), а дерево, использующее разделение на четыре разделения, называется квадродеревом (QT).
Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодировки (CTU), единице кодировки (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодировки (CTB), блоку кодировки (CB), блоку преобразования (TB) или блоку предсказания (PB).
Например, единица дерева кодировки (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности картинки, которая имеет три массива выборок, или CTB выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодировки (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодировки (CU) может быть или содержать блок кодировки выборок яркости, два соответствующих блока кодировки выборок цветности картинки, которая имеет три массива выборок, или блок кодировки выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодировки (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодировки является разделением.
В вариантах осуществления, например, согласно HEVC, единица дерева кодировки (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодировки. Решение о том, следует ли кодировать область картинки с использованием предсказания вне картинки (временного) или внутри картинки (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разделения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодировки для CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом видеокодировки, который называется универсальной видеокодировкой (VVC), для разделения блока кодировки используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодировки (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или тройчной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодировки (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дополнительного разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодировки QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественное разделение, например, разделение троичного дерева.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разделения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Внутреннее предсказание
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в VVC.
Блок 254 внутреннего предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одной и той же текущей картинки для генерации блока 265 внутреннего предсказания согласно режиму внутреннего предсказания набора режимов внутреннего предсказания.
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в данные 21 закодированной картинки, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Внешнее предсказание
Набор (возможных) режимов внешнего предсказания зависит от доступных опорных картинок (то есть предыдущих, по меньшей мере частично декодированных картинок, например, сохраненных в DBP 230) и других параметров внешнего предсказания, например используется ли опорная картинка целиком или только часть, например, область окна поиска вокруг области текущего блока, опорной картинки для поиска наиболее совпадающего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на Фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 картинки (текущего блока 203 картинки текущей картинки 17) и декодированной картинки 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одной или множества других/отличных ранее декодированных картинок 231, для оценки движения. Например, видеопоследовательность может содержать текущую картинку и ранее декодированные картинки 231 или, другими словами, текущая картинка и ранее декодированные картинки 231 могут быть частью или формировать последовательность картинок, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных картинок из множества других картинок и обеспечения опорной картинки (или индекса опорной картинки) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров внешнего предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получения, например, приема параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число кандидатных блоков предсказания, которые могут использоваться для кодирования блока картинки. После приема вектора движения для PU текущего блока картинки блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных картинок.
Блок компенсации движения может также генерировать синтаксические элементы, связанные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков картинки слайса видео. В дополнение или в качестве альтернативы для слайсов и соответствующих синтаксических элементов могут генерироваться или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Энтропийная кодировка
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодировки с переменной длиной (VLC), схемы контекстно-адаптивной VLC (CAVLC), схемы арифметической кодировки, бинаризации, контекстно-адаптивной двоичной арифметической кодировки (CABAC), основанной на синтаксисе контекстно-адаптивной двоичной арифметической кодировке (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого метода или методологии энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения закодированных данных 21 картинки, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
Фиг. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации методик настоящей заявки. Видеодекодер 30 выполнен с возможностью приема закодированных данных 21 картинки (например, кодированного битового потока 21), например, закодированных кодером 20, чтобы получить декодированное изображение 331. Закодированные данные картинки или битовый поток содержит информацию для декодирования закодированных данных картинки, например, данных, которые представляют блоки картинки кодированного слайса видео (и/или тайлов или групп тайлов) и связанные синтаксические элементы.
В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных картинок, блок 360 применения режима, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.
Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 344 внешнего предсказания и блок 354 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных картинок может быть идентичен по функции буферу 230 декодированных картинок. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.
Энтропийное декодирование
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, данных 21 закодированной картинки) и выполнения, например, энтропийного декодирования для данных 21 закодированной картинки, чтобы получить, например, квантованные коэффициенты 309 и/или декодированные параметры кодировки (не показаны на Фиг.3), например, любые или все из параметров внешнего предсказания (например, индекс опорной картинки и вектор движения), параметр внутреннего предсказания (например, индекс или режим внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других синтаксических элементов блоку 360 применения режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из закодированных данных 21 картинки (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированных квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.
Обратное преобразование
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из закодированных данных 21 картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (либо в контуре кодировки, либо после контура кодировки) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любую их комбинацию. Хотя блок 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированных картинок
Декодированные видеоблоки 321 картинки затем сохраняются в буфере 330 декодированных картинок, который сохраняет декодированные картинки 331 в качестве опорных картинок для последующей компенсации движения для других картинок и/или для вывода, соответственно, отображения.
Декодер 30 выполнен с возможностью вывода декодированной картинки 311, например, через вывод 312 для представления или просмотра пользователю.
Предсказание
Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из закодированных данных 21 картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутреннего или внешнего предсказания) для каждого блока на основе восстановленных картинок, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеослайс кодируется как внутренне-кодируемый (I) слайс, блок 354 внутреннего предсказания блока 360 применения режима выполнен с возможностью генерирования блока 365 предсказания для блока картинки текущего видеослайса на основе просигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущей картинки. Когда видеокартинка кодируется как внешне-кодируемый (т.е. B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть созданы из одной из опорных картинок в пределах одного из списков опорных картинок. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя способы построения по умолчанию на основе опорных картинок, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутренне или внешнее предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных картинок для слайса, векторов движения для каждого внешне-кодированного видеоблока слайса, статуса внешнего предсказания для каждого внешне-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.
Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разделена на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеодекодера 30, показанные на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования картинки с использованием групп тайлов (также называемых группами видеотайлов) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разделена на или декодирована с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования закодированных данных 21 картинки. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.
Следует отметить, что дополнительные операции могут применяться к выводимым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth равна 16, диапазон составляет -32768~32767; если bitDepth равна 18, диапазон составляет -131072~131071. Например, значение выводимого вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операций
ux= ( mvx+2bitDepth ) % 2bitDepth (1)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (2)
uy= ( mvy+2bitDepth ) % 2bitDepth (3)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (4)
где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или субблока, а ux и uy указывает промежуточное значение;
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двойки. Дополнением до двойки для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двойки является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).
ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth (5)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (6)
uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth (7)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (8)
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).
Способ 2: удаление MSB переполнения посредством усечения значения
vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где vx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:
Clip3( x, y, z ) =
(где otherwise - иначе).
Фиг. 4 является схематичной блок-схемой устройства 400 видеокодировки согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодировки подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодировки может быть декодером, таким как видеодекодер 30 по ФИГ. 1A, или кодером, таким как видеокодер 20 по ФИГ. 1А.
Устройство 400 видеокодировки содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодировки также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.
Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодировки. Модуль 470 кодировки реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодировки реализует, обрабатывает, подготавливает или предоставляет различные операции кодировки. Следовательно, включение в состав модуля 470 кодировки обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодировки и обеспечивает трансформацию устройства 400 видеокодировки в другое состояние. В качестве альтернативы модуль 470 кодировки реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).
Фиг. 5 является упрощенной блок-схемой аппаратуры 500, которая может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления.
Процессор 502 в аппаратуре 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.
Память 504 в аппаратуре 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в некоторой реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодировки, которое выполняет описанные в данном документе способы.
Аппаратура 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, дисплеем, чевствительным к касанию, который объединяет дисплей с элементом, чувствительным к касанию, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.
Хотя здесь изображена как одна шина, шина 512 аппаратуры 500 может состоять из множественных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами аппаратуры 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, аппаратура 500 может быть реализовано в самых разнообразных конфигурациях.
Уровень техники о кодировке с режимом внутреннего предсказания
В текущей версии VTM 4.0 для кодировки с режимом внутреннего предсказания создается список из 6-MPM (наиболее вероятных режимов). Список MPM вводится для уменьшения количества битов, необходимых для кодировки режима внутреннего предсказания текущего блока. Список 6-MPM строится на основе режимов внутреннего предсказания соседних блоков текущего блока. Когда режим внутреннего предсказания текущего блока попадает в список MPM, кодируется индекс, а не фактический режим, который может использовать меньше битов. Когда режим внутреннего предсказания текущего блока не попадает в список MPM, усеченная бинаризация используется для кодировки режима внутреннего предсказания текущего блока. Список MPM обеспечивает хорошее предсказание для режима внутреннего предсказания текущего блока.
Список MPM для множественных опорных строк (MRL).
В VTM 4.0 инструмент кодировки с множественными опорными строками (MRL) может использовать одну из нескольких соседних опорных строк для предсказания выборок текущего блока. Когда значение индекса строки MRL равно 0 (т.е. используется ближайшая соседняя опорная строка, т.е. опорная строка 0, как показано на Фиг. 6), используется обычный список из 6 MPM, содержащий планарный и DC. Когда значение индекса строки MRL не равно 0, используется список из 6-MPM, за исключением планарного (т.е. значение 0) и DC (т.е. значение 1).
Список MPM для режима внутренней кодировки подразделов (ISP)
Режим внутренней кодировки подразделов (ISP) - это инструмент, недавно принятый в VTM4.0 (JVET-M0102). Блоки с внутренним предсказанием яркости делятся по вертикали или горизонтали на 2 или 4 подраздела, в зависимости от размеров блока, как показано в таблице 1. На Фиг. 7 и 8 показаны примеры двух возможностей. Все подразделы удовлетворяют условию наличия не менее 16 выборок.
Таблица 1: Количество подразделов в зависимости от размера блока
Когда задействован режим внутренней кодировки подразделов, в VTM 4.0 используется другой список MPM, за исключением режима DC. Режим внутреннего подраздела может применяться, когда значение индекса множественных опорных строк равно 0 (т.е. MRL не применяется к текущему блоку внутреннего предсказания). Все подразделы совместно используют один режим внутреннего предсказания, поэтому список MPM создается один раз для внутреннего блока и совместно используется всеми подразделами.
Построение MPM может зависеть от режима разбиения ISP. Определяются два режима разбиения: горизонтальный и вертикальный. Они показаны на Фиг. 7 и 8, где горизонтальное разбиение/разделение показано вверху, а вертикальное разбиение/разделение показано внизу.
В следующей таблице 2 приведены характеристики списка 3 MPM, используемого в VTM 4.0.
Таблица 2: различные 6-MPM, используемые в VTM 4.0 при различных обстоятельствах
Справочная информация о контекстном моделировании/кодировании CABAC.
Как показано на Фиг. 9, кодировка CABAC состоит из бинаризации, контекстного моделирования и двоичной арифметической кодировки. Бинаризация отображает элементы синтаксиса в двоичные символы (бины). Контекстное моделирование оценивает вероятность каждого не обойденного (т.е. регулярно кодированного) бина на основе некоторого конкретного контекста. Наконец, двоичная арифметическая кодировка сжимает бины до битов в соответствии с оцененной вероятностью.
Посредством декомпозиции каждого значения небинарного элемента синтаксиса в последовательность бинов дополнительная обработка каждого значения бина в CABAC зависит от соответствующего решения о режиме кодировки, которое может быть выбрано либо как регулярный, либо как режим с обходом. Последний выбирается для бинов, которые, как предполагается, распределены равномерно и для которых, следовательно, весь процесс регулярного двоичного арифметического кодирования (и декодирования) просто игнорируется. В режиме регулярной кодировки каждое значение бина кодируется с использованием механизма регулярной двоичной арифметической кодировки, где соответствующая вероятностная модель определяется либо фиксированным выбором, на основе типа элемента синтаксиса и позиции бина, либо индекса бина (binIdx) в бинаризованном представлении элемента синтаксиса или адаптивно выбирается из двух или более вероятностных моделей в зависимости от связанной дополнительной информации.
Выбор вероятностной модели называется контекстным моделированием. Каждая вероятностная модель в CABAC адресуется с использованием уникального индекса контекста (ctxIdx), который либо определяется фиксированным назначением, либо вычисляется логикой вывода контекста, с помощью которой, в свою очередь, задается данная контекстная модель.
Уровень техники о том, как определять соседей слева и сверху.
Кодировка с режимом внутреннего предсказания VVC зависит от режимов внутреннего предсказания его соседних блоков. А именно левого и верхнего блоков текущего блока. Их положение показано на Фиг. 10.
Сигнализация индекса MPM
Флаг (т.е. флаг MPM) используется, чтобы указать, находится ли режим внутреннего предсказания текущего блока в списке MPM или нет. Когда флаг MPM имеет значение «истина» (т.е. значение 1), то режим внутреннего предсказания может быть определен с использованием индекса MPM. Индекс MPM кодируется с использованием усеченного унарного кода, как показано в следующей таблице 3, когда длина списка MPM равна 6. Когда флаг MPM не истинен, режим внутреннего предсказания текущего блока отсутствует в списке MPM, и режим кодируется с использованием усеченного двоичного кода. Другой пример индекса MPM, когда список MPM состоит из 5 режимов, показан в таблице 4. Строка бинов для индекса кодировки называется усеченным унарным кодом (не усеченным двоичным кодом для кодировки не-MPM режимов). Обратите внимание, что для усеченного унарного кода бины 0 и 1 взаимозаменяемы без потери общности. В одном примере индекс MPM, когда список MPM состоит из 5 режимов, также может быть закодирован, как показано в таблице 5.
Таблица 3: Кодировка флага MPM и индекса MPM при 6 записях в списке MPM
Таблица 4: Кодировка флага MPM и индекса MPM, когда 5 записей в списке MPM
Таблица 5: Кодировка флага MPM и индекса MPM, когда 5 записей в списке MPM, и альтернативное кодовое слово для индекса MPM
Справочная информация о планарном режиме, DC, горизонтальном, вертикальном и угловом режимах: режимы внутреннего предсказания: планарный (значение 0) и DC (значение 1). Другие режимы внутреннего предсказания называются режимами углового предсказания.
В VTM4.0 следующая структура синтаксиса, показанная в таблице 6, используется для передачи информации о режиме внутреннего предсказания.
Таблица 6: синтаксический анализ в VTM4.0
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 )
intra_luma_ref_idx [x0] [y0] может иметь три значения: 0, 1 или 2, указывающих, какая опорная строка используется. Когда intra_luma_ref_idx [x0] [y0] отсутствует, предполагается, что оно равно 0.
intra_subpartitions_mode_flag [x0] [y0], равное 1, указывает, что текущая единица внутренней кодировки дополнительно разделена (т. е. включен режим ISP). intra_subpartitions_mode_flag [x0] [y0], равное 0, указывает, что текущая единица внутренней кодировки не разделена на прямоугольные подразделы блока преобразования. Когда intra_subpartitions_mode_flag [x0] [y0] отсутствует, предполагается, что оно равно 0.
Элементы синтаксиса intra_luma_mpm_flag [x0] [y0], intra_luma_mpm_idx [x0] [y0] и intra_luma_mpm_remainder [x0] [y0] определяют режим внутреннего предсказания для выборок яркости.
intra_luma_mpm_flag [x0] [y0] указывает, выведен ли режим внутреннего предсказания текущего блока из списка MPM или нет. Если значение intra_luma_mpm_flag [x0] [y0] равно 1, это указывает, что режим внутреннего предсказания текущего блока выведен из списка MPM; Если значение intra_luma_mpm_flag [x0] [y0] равно 0, это указывает, что режим внутреннего предсказания текущего блока не выведен из списка MPM. Когда intra_luma_mpm_flag [x0] [y0] отсутствует, предполагается, что оно равно 1. intra_luma_mpm_flag [x0] [y0] соответствует флагу MPM в таблице 3.
intra_luma_mpm_idx соответствует индексу MPM в таблице 3 и использует усеченный унарный код, как показано в таблице 3.
intra_luma_mpm_remainder представляет усеченный двоичный код режима, которого нет в списке MPM.
В варианте осуществления 1 раскрыты элементы синтаксиса intra_luma_planar_flag и ctx.
Согласно одному варианту осуществления изобретения вводится флаг intra_luma_planar_flag.
Если значение intra_luma_mpm_flag истинно (например, значение равно 1), декодер анализирует intra_luma_planar_flag, чтобы определить, является ли режим внутреннего предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_planar_flag равно 1, режим внутреннего предсказания текущего блока является планарным режимом. Когда значение intra_luma_planar_flag равно 0, режим внутреннего предсказания текущего блока НЕ является планарным режимом. Если intra_luma_planar_flag отсутствует (например, этот флаг не может быть проанализирован из потока битов в случае, если intra_luma_mpm_flag равно 0), значение intra_luma_planar_flag выводится как 0.
Если записан в стиле спецификации рабочего проекта VVC, режим внутреннего предсказания текущего блока
IntraPredModeY [xCb] [yCb] выводится путем применения следующей процедуры:
Если intra_luma_mpm_flag [xCb] [yCb] равно 1,
Если intra_luma_planar_flag [xCb] [yCb] равно 1, intraPredModeY [xCb] [yCb] устанавливается равным INTRA_PLANAR.
В противном случае IntraPredModeY [xCb] [yCb] устанавливается равным candModeList [intra_luma_mpm_idx [xCb] [yCb]].
Если режим внутреннего предсказания не является планарным режимом (то есть значение intra_luma_planar_flag равно 0), декодер дополнительно анализирует элемент синтаксиса intra_luma_mpm_idx.
В одном примере значение intra_luma_planar_flag закодировано контекстом CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, является ли текущий блок нормальным внутренним блоком или нет.
В одном примере значение intra_luma_planar_flag закодировано контекстом CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, является ли текущий блок внутренним блоком с множественными опорными строками (MRL) или нет.
В одном примере значение intra_luma_planar_flag закодировано в контексте CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, является ли текущий блок внутренним блоком с задействованным режимом внутренней кодировки внутри подразделов (ISP).
В примере позиция intra_luma_planar_flag размещена, как в таблице 7.
Таблица 7: синтаксис с intra_luma_planar_flag
Вариант осуществления 2: intra_luma_not_planar_flag и ctx
Согласно одному варианту осуществления изобретения вводится элемент синтаксиса intra_luma_not_planar_flag.
Если значение intra_luma_mpm_flag истинно (например, значение равно 1), декодер анализирует intra_luma_not_planar_flag, чтобы определить, является ли режим внутреннего предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_not_planar_flag равно 1, режим внутреннего предсказания текущего блока НЕ является планарным режимом; когда значение intra_luma_not_planar_flag равно 0, режим внутреннего предсказания текущего блока является планарным режимом. Если intra_luma_not_planar_flag отсутствует в потоке битов, значение intra_luma_not_planar_flag выводится как 1. В примере позиция intra_luma_not_planar_flag размещена, как в Таблице 8.
Если режим внутреннего предсказания текущего блока не является планарным режимом (то есть значение intra_luma_not_planar_flag равно 1), декодер дополнительно анализирует элемент синтаксиса intra_luma_mpm_idx.
Запись в стиле спецификации рабочего проекта VVC, режим внутреннего предсказания текущего блока
IntraPredModeY [xCb] [yCb] выводится путем применения следующей процедуры:
Если intra_luma_mpm_flag [xCb] [yCb] равно 1,
Если intra_luma_not_planar_flag [xCb] [yCb] равно 0, intraPredModeY [xCb] [yCb] устанавливается равным INTRA_PLANAR.
В противном случае IntraPredModeY [xCb] [yCb] устанавливается равным candModeList [intra_luma_mpm_idx [xCb] [yCb]].
В одном примере значение intra_luma_ not_planar_flag закодировано контекстом CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, является ли текущий блок нормальным внутренним блоком или нет.
В одном примере значение intra_luma_ not_planar_flag закодировано в контексте CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, является ли текущий блок внутренним блоком с множественными опорными строками (MRL) или нет.
В одном примере значение intra_luma_ not_planar_flag закодировано контекстом CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, задействован ли текущий блок внутренним блоком с режимом внутренней кодировки подразделов (ISP).
Таблица 8: синтаксис с intra_luma_not_planar_flag
Вариант осуществления 3: intra_luma_planar_flag и MRL и байпасное (с обходом) декодирование
Согласно одному варианту осуществления изобретения вводится флаг intra_luma_planar_flag.
Если значение intra_luma_mpm_flag истинно (например, значение равно 1), декодер анализирует, равно ли значение опорной строки индекса ((intra_luma_ref_idx) 0 или нет. Если значение опорной строки индекса равно 0, значение intra_luma_planar_flag анализируется, чтобы определить, является ли режим внутреннего предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_planar_flag равно 1, режим внутреннего предсказания текущего блока является планарным режимом. Когда значение intra_luma_planar_flag равно 0, режим внутреннего предсказания текущего блока НЕ является планарным режимом. Если intra_luma_planar_flag отсутствует, значение intra_luma_planar_flag выводится как 0.
Если режим внутреннего предсказания текущего блока не является планарным режимом (то есть значение intra_luma_planar_flag равно 0), декодер дополнительно анализирует intra_luma_mpm_idx.
В одном примере значение intra_luma_planar_flag закодировано с обходом CABAC (т.е. не закодировано в контексте CABAC), и декодер анализирует флаг без использования какого-либо контекста CABAC.
Положение intra_luma_planar_flag показано в Таблице 9.
Таблица 9: синтаксис с intra_luma_planar_flag, и он закодирован с обходом
Вариант осуществления 4: intra_luma_not_planar_flag и MRL и байпасное (с обходом) декодирование
Согласно одному варианту осуществления изобретения вводится флаг intra_luma_not_planar_flag.
Если значение intra_luma_mpm_flag истинно (например, значение равно 1), декодер анализирует, равно ли значение опорной строки индекса 0 или нет. Если значение опорной строки индекса равно 0, intra_luma_not_planar_flag анализируется, чтобы определить, является ли режим внутреннего предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_not_planar_flag равно 1, режим внутреннего предсказания текущего блока НЕ является планарным режимом. Когда значение intra_luma_planar_flag равно 0, режим внутреннего предсказания текущего блока является планарным режимом. Если intra_luma_not_planar_flag отсутствует, значение intra_luma_not_planar_flag выводится как 1.
Если режим внутреннего предсказания текущего блока не является планарным режимом (то есть значение intra_luma_not_planar_flag равно 1), декодер дополнительно анализирует intra_luma_mpm_idx.
В одном примере значение intra_luma_not_planar_flag закодировано с обходом CABAC (т.е. не закодировано контекстом CABAC), и декодер анализирует флаг без использования какого-либо контекста CABAC.
Положение intra_not_luma_planar_flag размещено, как в Таблице 10.
Таблица 10: синтаксис с intra_luma_not_planar_flag, и он закодирован с обходом
Вариант 5 осуществления: intra_luma_not_planar_flag и MRL, и контекстное кодирование cabac (отличие от варианта 4 осуществления состоит в том, что intra_luma_not_planar_flag кодируется контекстом cabac, а не кодируется с обходом).
Согласно одному варианту осуществления изобретения вводится флаг intra_luma_not_planar_flag.
Декодер анализирует значение, указывающее индекс используемой опорной строки. Когда значение опорной строки индекса равно 0, декодер анализирует значение intra_luma_mpm_flag.
Если значение intra_luma_mpm_flag истинно (например, значение равно 1), декодер проверяет, равно ли значение опорной строки индекса 0 или нет. Если значение опорной строки индекса равно 0, intra_luma_not_planar_flag анализируется, чтобы определить, является ли режим внутреннего предсказания текущего блока Планарным режимом или нет. Когда значение intra_luma_not_planar_flag равно 1, режим внутреннего предсказания текущего блока НЕ является планарным режимом. Когда значение intra_luma_not_planar_flag равно 0, режим внутреннего предсказания текущего блока является планарным режимом. Если intra_luma_not_planar_flag отсутствует, значение intra_luma_not_planar_flag выводится как 1.
Если режим внутреннего предсказания текущего блока не является планарным режимом (т.е. значение intra_luma_not_planar_flag равно 1), декодер дополнительно анализирует intra_luma_mpm_idx.
В одном примере значение intra_luma_ not_planar_flag закодировано контекстом CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, является ли текущий блок нормальным внутренним блоком или нет.
В одном примере значение intra_luma_ not_planar_flag закодировано в контексте CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, является ли текущий блок внутренним блоком с множественными опорными строками (MRL) или нет.
В одном примере значение intra_luma_ not_planar_flag закодировано контекстом CABAC (т.е. не закодировано с обходом CABAC), и декодер анализирует флаг с использованием контекста на основе того, задействан ли текущий блок внутренним блоком с режимом внутренней кодировки подразделов (ISP).
Положение intra_not_luma_planar_flag показано в Таблице 11.
Таблица 11: синтаксис с intra_luma_not_planar_flag и он закодирован контекстом cabac
Например,
Добавить intra_luma_not_planar_flag
Когда intra_luma_not_planar_flag [x0] [y0] отсутствует, предполагается, что он равен 1.
В приведенной ниже Таблице 12 показан пример назначения ctxInc элементам синтаксиса с контекстно-кодированными бинами.
В варианте осуществления список MPM создается согласно следующему процессу.
8.4.2 Процесс вывода для режима внутреннего предсказания яркости
Входными данными в этот процесс является следующее:
местоположение яркости ( xCb , yCb ), указывающее верхнюю левую выборку текущего блока кодировки яркости относительно верхней левой выборки яркости текущей картинки,
переменная cbWidth, указывающая ширину текущего блока кодировки в выборках яркости,
переменная cbHeight, указывающая высоту текущего блока кодировки в выборках яркости.
В этом процессе выводится режим IntraPredModeY [xCb] [yCb] внутреннего предсказания яркости.
Таблица 13 определяет значение для режима внутреннего предсказания IntraPredModeY [xCb] [yCb] и связанные имена.
Таблица 13 - Спецификация режима внутреннего предсказания и связанные имена
ПРИМЕЧАНИЕ: Режимы внутреннего предсказания INTRA_LT_CCLM, INTRA_L_CCLM и
INTRA_T_CCLM применимы только к компонентам цветности.
IntraPredModeY [xCb] [yCb] выводится следующим образом:
Если intra_luma_not_planar_flag [xCb] [yCb] равно 1, применяются следующие упорядоченные этапы:
1. Соседние местоположения ( xNbA, yNbA ) и ( xNbB, yNbB ) устнавливаются равными ( xCb − 1, yCb+cbHeight − 1 ) и ( xCb+cbWidth − 1, yCb − 1 ), соответственно.
2. Если X заменяется на A или B, переменные candIntraPredModeX выводятся следующим образом:
Вызывается процесс вывода доступности для блока: Процесс проверки доступности соседних блоков вызывается с местоположением (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), установленным равным (xNbX, yNbX) в качестве входных данных, а выход назначается для availableX.
Кандидатный режим внутреннего предсказания candIntraPredModeX выводится следующим образом:
Если истинным является одно или более из следующих условий, candIntraPredModeX устанавливается равным INTRA_PLANAR.
Значением переменной availableX является ЛОЖЬ.
CuPredMode [xNbX] [yNbX] не равен MODE_INTRA, а ciip_flag [xNbX] [yNbX] не равен 1.
pcm_flag [xNbX] [yNbX] равен 1.
X равно B и yCb − 1 меньше, чем ( ( yCb >> CtbLog2SizeY ) << CtbLog2SizeY ).
В противном случае CandIntraPredModeX устанавливается равным IntraPredModeY [xNbX] [yNbX].
где X заменяется либо соседним блоком A, либо B, местоположение яркости (xCb, yCb), определяющее верхнюю левую выборку текущего блока кодировки яркости относительно верхней левой выборки яркости текущей картинки, местоположение (xNbA, yNbA ) соседа A устанавливается равным (xCb - 1, yCb+cbHeight - 1), местоположение (xNbB, yNbB) соседа B устанавливается равным (xCb+cbWidth - 1, yCb - 1), переменная cbWidth, определяющее ширину текущего блока кодировки в выборках яркости, переменная cbHeight, определяющая высоту текущего блока кодировки в выборках яркости, CuPredMode, представляющий текущий режим предсказания, SizeY, представляющий размер Y компонентов блока дерева кодировки.
3. CandModeList [x] с x=0..4 выводится следующим образом:
Если CandIntraPredModeB равен candIntraPredModeA, а candIntraPredModeA больше INTRA_DC, candModeList [x] с x=0..4 выводится следующим образом:
candModeList [0] = candIntraPredModeA (8 10)
candModeList [1] = 2 + ((candIntraPredModeA+61)% 64) (8 12)
candModeList [2] = 2 + ((candIntraPredModeA - 1)% 64) (8 13)
candModeList [3] = INTRA_DC (8 11)
candModeList [4] = 2 + ((candIntraPredModeA+60)% 64) (8 14)
В противном случае, если candIntraPredModeB не равно candIntraPredModeA, а candIntraPredModeA или candIntraPredModeB больше INTRA_DC, применяется следующее:
Переменные minAB и maxAB выводятся следующим образом:
minAB=Мин (candIntraPredModeA, candIntraPredModeB) (8 24)
maxAB=Макс (candIntraPredModeA, candIntraPredModeB) (8 25)
Если candIntraPredModeA и candIntraPredModeB оба больше, чем INTRA_DC, candModeList [x] с x=0..4 выводится следующим образом:
candModeList [0] = candIntraPredModeA (8 27)
candModeList [1] = candIntraPredModeB (8 29)
candModeList [2] = INTRA_DC (8 29)
Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:
candModeList [3] = 2 + ((maxAB+61)% 64) (8 30)
candModeList [4] = 2 + ((maxAB - 1)% 64) (8 31)
Иначе применяется следующее:
candModeList [3] = 2 + ((maxAB+60)% 64) (8 32)
candModeList [4] = 2 + ((maxAB)% 64) (8 33)
В противном случае (candIntraPredModeA или candIntraPredModeB больше, чем INTRA_DC), candModeList [x] с x=0..4 выводится следующим образом:
candModeList [0] = maxAB (8 65)
candModeList [1] = INTRA_D (8 66)
candModeList [2] = 2 + ((maxAB+61)% 64) (8 66)
candModeList [3] = 2 + ((maxAB - 1)% 64) (8 67)
candModeList [4] = 2 + ((maxAB+60)% 64) (8 68)
Иначе применяется следующее:
candModeList [0] = INTRA_DC (8 71)
candModeList [1] = INTRA_ANGULAR50 (8 72)
candModeList [2] = INTRA_ANGULAR18 (8 73)
candModeList [3] = INTRA_ANGULAR46 (8 74)
candModeList [4] = INTRA_ANGULAR54 (8 75)
4. IntraPredModeY [xCb] [yCb] выводится путем применения следующей процедуры:
Если intra_luma_mpm_flag [xCb] [yCb] равно 1, IntraPredModeY [xCb] [yCb] устанавливается равным candModeList [intra_luma_mpm_idx [xCb] [yCb]].
В противном случае IntraPredModeY [xCb] [yCb] выводится путем выполнения следующих упорядоченных этапов:
1. Когда candModeList [i] больше, чем candModeList [j] для i=0..3 и для каждого i, j = (i+1) .. 4, оба значения меняются местами следующим образом:
(candModeList [i], candModeList [j]) = Swap (candModeList [i], candModeList [j]) (8 94)
2. IntraPredModeY [xCb] [yCb] выводится с помощью следующих упорядоченных этапов:
IntraPredModeY [xCb] [yCb] устанавливается равным intra_luma_mpm_remainder [xCb] [yCb].
Значение IntraPredModeY [xCb] [yCb] увеличивается на единицу.
Для i, равного от 0 до 4 включительно, когда IntraPredModeY [xCb] [yCb] больше или равно candModeList [i], значение IntraPredModeY [xCb] [yCb] увеличивается на единицу.
В противном случае (intra_luma_not_planar_flag [xCb] [yCb] равно 0) IntraPredModeY [xCb] [yCb] устанавливается равным INTRA_PLANAR.
Переменная IntraPredModeY [x] [y] с x=xCb..xCb+cbWidth - 1 и y=yCb..yCb+cbHeight - 1 устанавливается равной IntraPredModeY [xCb] [yCb].
В одном примере режим внутреннего предсказания текущего блока (например, имя переменной Luma_intra_mode) не является ни планарным режимом, ни режимом внутреннего предсказания в списке 5-MPM, его значение выводится, и предсказание этого режима внутреннего предсказания выполняется следующим образом:
1. Выводится значение intra_luma_mpm_remainder из потока битов, и luma_intra_mode устанавливается равным значению intra_luma_mpm_remainder.
2. Значение IntraPredModeY [xCb] [yCb] увеличивается на единицу.
3. Для i, равного от 0 до 4 (по сравнению с каждой записью в списке 5-MPM), когда luma_intra_mode больше или равно MPM [i] (здесь MPM [0] соответствует первой записи в списке MPM, MPM [1] соответствует второй записи в списке MPM и так далее), значение luma_intra_mode увеличивается на единицу.
4. Использование выведенного режима внутреннего предсказания (luma_intra_mode) и соответствующих опорных выборок для выполнения внутреннего предсказания.
В одной реализации вышеупомянутых вариантов осуществления планарный режим может неявно рассматриваться как всегда первая запись в неявном списке 6-MPM. Этот неявный список 6-MPM состоит из планарных (всегда первая запись) и 5 других режимов (которые могут быть явно описаны как список 5-MPM).
Это связано с тем, что если планарный режим всегда находится в первой позиции неявного списка 6-MPM, он может быть отделен от неявного списка MPM, и ему назначается специальный флаг (например, флаг intra_luma _planar_flag или флаг intra_luma_not_planar_flag), чтобы указать, является ли режим внутреннего предсказания текущего блока планарным или нет.
В одном примере рассматривается введение intra_luma_not_planar_flag [x0] [y0] в качестве специального флага, чтобы указать, равен ли планарный режим режиму внутреннего предсказания текущего блока. Когда это планарный режим, intra_luma_not_planar_flag устанавливается в 0, в противном случае устанавливается в 1. В этом случае первый бин mpm_idx эквивалентен специальному флагу intra_luma_not_planar_flag.
Когда режим внутреннего предсказания текущего блока является планарным, индекс MPM равен 0, а кодированный бин равен 0. Когда режим внутреннего предсказания текущего блока непланарный, индекс MPM не равен 0, а первый бин индекса MPM всегда равен 1.
В примере, intra_luma_mpm_idx кодируется с использованием усеченного унарного (TR) кода,
Значение TR
Mpm_idx 0 0
Mpm_idx 1 1 0
Mpm_idx 2 1 1 0
Mpm_idx 3 1 1 1 0
Mpm_idx 4 1 1 1 1.
Согласно одному варианту осуществления изобретения (неугловая ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Left_mode - это не угловой режим, а above_mode - не угловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: DC
MPM [2]: вертикальный режим (т.е. 50)
MPM [3]: горизонтальный режим (т.е. 18)
MPM [4]: вертикальный-4 (т.е. 46)
MPM [5]: по вертикали+4 (т.е. 54)
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (неугловая ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Left_mode - это не угловой режим, и above_mode - не угловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: DC
MPM [2]: вертикальный режим (т.е. 50)
MPM [3]: горизонтальный режим (т.е. 18)
MPM [4]: 66
MPM [5]: 2
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (неугловая ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Left_mode - это не угловой режим, и above_mode - не угловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: DC
MPM [2]: вертикальный режим (т.е. 50)
MPM [3]: горизонтальный режим (т.е. 18)
MPM [4]: 2
MPM [5]: 34
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (неугловая ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Left_mode - это не угловой режим, и above_mode - не угловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2] и так далее):
MPM [1]: DC
MPM [2]: вертикальный режим (т.е. 50)
MPM [3]: горизонтальный режим (т.е. 18)
MPM [4]: 66
MPM [5]: 34
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (одноугольная ветвь, один угловой, другой неугловой):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, и режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Один из left_mode и above_mode - угловой режим, другой - неугловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
определить угловой режим как ang и получить следующее:
если left_mode - угловой режим, ang=левый режим
в противном случае (верхний режим - это угловой режим) ang=верхний режим
MPM [1]: ang
MPM [2]: DC
MPM [3]: 2 + ((ang +61)% 64)
MPM [4]: 2 + ((ang - 1)% 64)
MPM [5]: 2 + ((ang +60)% 64).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (одноугольная ветвь, один угловой, другой неугловой):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Один из left_mode и above_mode - угловой режим, другой - неугловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
определить угловой режим как ang и получить следующее:
если left_mode - угловой режим, ang=левый режим
в противном случае (верхний режим - это угловой режим) ang=верхний режим
MPM [1]: DC
MPM [2]: ang
MPM [3]: 2 + ((ang +61)% 64)
MPM [4]: 2 + ((ang - 1)% 64)
MPM [5]: 2 + ((ang +60)% 64).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (одноугольное ветвь, один угловой, другой неугловой):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Один из left_mode и above_mode - угловой режим, другой - неугловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
определить угловой режим как ang и получить следующее:
если left_mode - угловой режим, ang=левый режим
в противном случае (верхний режим - это угловой режим) ang=верхний режим
MPM [1]: ang
MPM [2]: 2 + ((угл+61)% 64)
MPM [3]: DC
MPM [4]: 2 + ((угл - 1)% 64)
MPM [5]: 2 + ((угл+60)% 64)
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (одноугольная ветвь, один угловой, другой неугловой):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Один из left_mode и above_mode - угловой режим, другой - неугловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
определить угловой режим как ang и получить следующее:
если left_mode - угловой режим, ang=левый режим
в противном случае (верхний режим - это угловой режим) ang=верхний режим
MPM [0]: Планарный
MPM [1]: ang
MPM [2]: 2 + ((угл+61)% 64)
MPM [3]: 2 + ((угл - 1)% 64)
MPM [4]: DC
MPM [5]: 2 + ((угл+60)% 64).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (одноугольная ветвь, один угловой, другой неугловой):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
Один из left_mode и above_mode - угловой режим, другой - неугловой режим.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
определить угловой режим как ang и получить следующее:
если left_mode - угловой режим, ang=левый режим
в противном случае (верхний режим - это угловой режим) ang=верхний режим
MPM [1]: ang
MPM [2]: 2 + ((угл+61)% 64)
MPM [3]: 2 + ((угл - 1)% 64)
MPM [4]: 2 + ((угл+60)% 64)
MPM [5]: DC.
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
По одному варианту осуществления изобретения (одноугольная ветвь, два одинаковых угловых):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - оба угловых режима, и они одинаковы.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: левый режим
MPM [2]: 2 + ((левый режим+61)% 64)
MPM [3]: 2 + ((левый режим - 1)% 64)
MPM [4]: DC
MPM [5]: 2 + ((левый режим+60)% 64).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
По одному варианту осуществления изобретения (одноугольная ветвь, два одинаковых угловых):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - оба угловых режима, и они одинаковы.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: DC
MPM [2]: левый режим
MPM [3]: 2 + ((левый режим+61)% 64)
MPM [4]: 2 + ((левый режим - 1)% 64)
MPM [5]: 2 + ((левый режим+60)% 64)
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
По одному варианту осуществления изобретения (одноугольная ветвь, два одинаковых угловых):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - оба угловых режима, и они одинаковы.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: левый режим
MPM [2]: DC
MPM [3]: 2 + ((левый режим+61)% 64)
MPM [4]: 2 + ((левый режим - 1)% 64)
MPM [5]: 2 + ((левый режим+60)% 64)
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
По одному варианту осуществления изобретения (одноугольная ветвь, два одинаковых угловых):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - оба угловых режима, и они одинаковы.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: левый режим
MPM [2]: 2 + ((левый режим+61)% 64)
MPM [3]: DC
MPM [4]: 2 + ((левый режим - 1)% 64)
MPM [5]: 2 + ((левый режим+60)% 64).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
По одному варианту осуществления изобретения (одноугольная ветвь, два одинаковых угловых):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, являются ли режимы внутреннего предсказания соседних блоков угловыми режимами или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - оба угловых режима, и они одинаковы.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: левый режим
MPM [2]: 2 + ((левый режим+61)% 64)
MPM [3]: 2 + ((левый режим - 1)% 64)
MPM [4]: 2 + ((левый режим+60)% 64)
MPM [5]: DC.
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (двухугольная ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, является ли режим внутреннего предсказания соседних блоков угловым режимом или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - два разных угловых режима.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: left_mode
MPM [2]: above_mode
MPM [3]: DC
Переменные minAB и maxAB выводятся следующим образом:
minAB = Min( above_mode, left_mode )
maxAB = Max( above_mode, left_mode ).
Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:
MPM [4] = 2 + ((maxAB+61)% 64) (8-30)
MPM [5] = 2 + ((maxAB - 1)% 64) (8-31)
Иначе применяется следующее:
MPM [4] = 2 + ((maxAB+60)% 64) (8-32)
MPM [5] = 2 + ((maxAB)% 64) (8-33).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (двухугольная ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, является ли режим внутреннего предсказания соседних блоков угловым режимом или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - два разных угловых режима.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: above_mode
MPM [2]: left_mode
MPM [3]: DC
Переменные minAB и maxAB выводятся следующим образом:
minAB = Min( above_mode, left_mode )
maxAB = Max( above_mode, left_mode ).
Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:
MPM [4] = 2 + ((maxAB+61)% 64) (8-30)
MPM [5] = 2 + ((maxAB - 1)% 64) (8-31)
Иначе применяется следующее:
MPM [4] = 2 + ((maxAB+60)% 64) (8-32)
MPM [5] = 2 + ((maxAB)% 64) (8-33).
Этап 6: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.
Согласно одному варианту осуществления изобретения (двухугольная ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, является ли режим внутреннего предсказания соседних блоков угловым режимом или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - два разных угловых режима.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: left_mode
MPM [2]: DC
MPM [3]: above_mode
Переменные minAB и maxAB выводятся следующим образом:
minAB = Min( above_mode, left_mode )
maxAB = Max( above_mode, left_mode ).
Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:
MPM [4] = 2 + ((maxAB+61)% 64) (8-30)
MPM [5] = 2 + ((maxAB - 1)% 64) (8-31)
Иначе применяется следующее:
MPM [4] = 2 + ((maxAB+60)% 64) (8-32)
MPM [5] = 2 + ((maxAB)% 64) (8-33).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
Согласно одному варианту осуществления изобретения (двухугольная ветвь):
Этап 1: получить режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока согласно фиг.10. Если режим внутреннего предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ картинки или соседний блок внешне кодирован), режим внутреннего предсказания соседнего блока устанавливается как планарный. Режим внутреннего предсказания левого соседа обозначен как left_mode, а режим внутреннего предсказания верхнего соседнего блока обозначен как above_mode.
Этап 2: определение того, является ли режим внутреннего предсказания соседних блоков угловым режимом или нет.
Этап 3: если все следующие условия (маркированные пункты) оценены как истинные,
left_mode и above_mode - два разных угловых режима.
затем создается список режимов внутреннего предсказания, который содержит N записей режимов внутреннего предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM [1], 2-я запись соответствует MPM [2], и т.д.):
MPM [1]: above_mode
MPM [2]: DC
MPM [3]: left_mode
Переменные minAB и maxAB выводятся следующим образом:
minAB = Min( above_mode, left_mode )
maxAB = Max( above_mode, left_mode ).
Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:
MPM [4] = 2 + ((maxAB+61)% 64) (8-30)
MPM [5] = 2 + ((maxAB - 1)% 64) (8-31)
Иначе применяется следующее:
MPM [4] = 2 + ((maxAB+60)% 64) (8-32)
MPM [5] = 2 + ((maxAB)% 64) (8-33).
Этап 4: предсказание текущего блока согласно индексу (обозначенному как индекс MPM) и записям построенного списка.
В одной реализации варианта осуществления N установлено равным 6.
В одной реализации варианта осуществления N установлено равным 6. В этом случае упомянутый список режимов внутреннего предсказания включает в себя первые 5 записей, как указано выше, а не шестую запись.
В одной реализации варианта осуществления N установлено равным 4. В этом случае упомянутый список режимов внутреннего предсказания включает в себя первые 4 записи, как указано выше, а не пятую запись и шестую запись.
В одной реализации варианта осуществления упомянутый список режимов внутреннего предсказания называется списком MPM.
В одной реализации упомянутый индекс списка (индекс MPM) сигнализируется в потоке битов как индикатор. Преимущественно индекс MPM можно кодировать с помощью контекстно-адаптивного энтропийного кодера (CABAC). Индекс MPM может быть закодирован в соответствии с различным количеством вероятностных моделей (другими словами, контекстом) с помощью CABAC.
Например, первый бин кодированного слова для mpm_index кодируется контекстом CABAC.
В одном примере его контекст определяется на основе того, применяется ли текущий внутренний блок с множественными опорными строками, ISP или обычными внутренними блоками. Всего создается три контекста для контекста CABAC первого бина кодового слова для mpm_index.
Если список MPM содержит как планарный, так и DC режим, то список MPM, исключающий планарный режим и режим DC из созданного списка MPM, используется инструментом кодировки множественных опорных строк. В этом случае список 4-MPM используется при кодировке в режиме внутреннего предсказания с множественными опорными строками. В одном примере список MPM: {Planar (значение 0), DC (значение 1), VER (значение 50), HOR (значение 18), VER-4 (значение 46), VER+4 (значение 54)} после построения списка MPM, тогда список 4-MPM из {VER, HOR, VER-4, VER+4} используется кодировкой в режиме внутреннего предсказания, когда задействована множественная опорная строка.
Если список MPM содержит планарный режим, но без режима DC, то список MPM, исключающий планарный из созданного списка MPM, используется инструментом кодировки множественных опорных строк. В этом случае список 5-MPM используется при кодировке в режиме внутреннего предсказания с множественными опорными строками. В одном примере список MPM равен {Planar, VER, HOR, 43, 60, 3} после построения списка MPM, тогда список 5-MPM из {VER, HOR, 43, 60, 3} используется кодировкой режима внутреннего предстказания при задействовании множественных опорных строк.
В другом примере может потребоваться модификация синтаксиса для списка MPM без режима DC. Если список MPM не содержит DC, вероятно, режим DC будет очень часто использоваться в ветви, отличной от MPM (т. е. флаг mpm ложный). В этом случае вводится новый синтаксис DC_mode. DC_mode равно 1, указывает, что режим внутреннего предсказания текущего блока является режимом DC. DC_mode, равное 0, указывает, что режим внутреннего предсказания текущего блока не является режимом DC.
А именно, старый синтаксис не-MPM изменен с
Если (mpm_flag)
…
иначе
intra_mode (с использованием TB)
на
Если (mpm_flag)
…
иначе
DC_mode
Если (DC_mode == 0)
intra_mode (с использованием TB)
Синтаксис DC_mode может быть закодирован с помощью контекстно-адаптивного энтропийного кодера (CABAC). DC_mode может быть закодирован в соответствии с различным количеством вероятностных моделей (другими словами, контекстом) с помощью CABAC. С введением DC_Mode максимальное значение для усеченного двоичного файла составляет 60, т. Е. 67 (общее количество режимов) - 6 (MPM) -1 (DC). В то время как без введения DC_mode максимальное значение для усеченного двоичного файла составляет 61, то есть 67 (общее количество режимов) - 6 (MPM).
В частности, здесь предоставляются следующие способы кодировки с предсказанием текущего блока, реализованные устройством декодирования или устройством кодирования. Устройство декодирования может быть видеодекодером 30 на фиг.1А или декодером 30 на фиг.3. Устройство кодирования может быть видеокодером 20 на фиг. 1A или кодировщиком 20 на фиг. 2.
Согласно варианту 1200 осуществления (см. Фиг. 12A) способ внутреннего предсказания текущего блока, реализованный устройством декодирования, включает в себя следующие этапы. На этапе 1201 устройство получает значение первой информации указания текущего блока, причем значение первой информации указания указывает, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов. Набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим. Первая информация указания указывается первым флагом, например intra_luma_mpm_flag. Как описано выше, когда значение intra_luma_mpm_flag равно 1, режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов.
На этапе 1202 устройство получает значение опорной строки индекса текущего блока. Значение опорной строки индекса текущего блока может быть указано с помощью intra_luma_ref_idx. Когда значение опорной строки индекса текущего блока равно 0, то есть intra_luma_ref_idx [x0] [y0] = = 0, используется ближайшая соседняя опорная строка к текущему блоку. Между этапами 1201 и 1202 нет последовательности.
На этапе 1203 устройство определяет, указывает ли значение первой информации указания, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов.
На этапе 1204 устройство определяет, указывает ли значение опорной строки индекса, что используется ближайшая соседняя опорная строка к текущему блоку. Между этапами 1203 и 1204 нет последовательности.
Этап 1205, устройство получает значение второй информации указания текущего блока, когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом или нет. Значение второй информации указания представляет собой контекстно-адаптивную двоичную арифметическую кодировку (CABAC), декодированную по контексту. Вторая информация указания может быть указана вторым флагом, например intra_luma_not_planar_flag. Устройство анализирует второй флаг с использованием контекста на основе того, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутри подраздела (ISP) или нет.
Когда кодировка MRL не задействована, то есть когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, устройства анализируют поток битов, чтобы получить значение второй информации указания.
Установлено, что планарный режим неэффективен при включенном MRL (т. е. индекс опорной строки не равен 0) в традиционном способе. В варианте осуществления изобретения, когда кодировка MRL задействована, значение второй информации указания получается значением по умолчанию. В этой ситуации режим Planar исключается, и соответствующий ему флаг (например, intra_luma_not_planar_flag) не анализируется из потока битов, а выводится как значение по умолчанию (например, значение 1). В этом случае сохраняется бит для указания значения планарного флага (т.е. Intra_luma_not_planar), когда MRL задействован).
Подробная информация об этом варианте 1200 осуществления показана в вышеупомянутых вариантах осуществления.
Согласно варианту 1210 осуществления (см. Фиг. 12B) способ внутреннего предсказания текущего блока, реализованный устройством декодирования, включает в себя следующие этапы.
На этапе 1211 устройство получает значение опорной строки индекса текущего блока. Значение опорной строки индекса текущего блока может быть указано с помощью intra_luma_ref_idx. Когда значение опорной строки индекса текущего блока равно 0, то есть intra_luma_ref_idx [x0] [y0] = = 0, используется ближайшая соседняя опорная строка к текущему блоку.
На этапе 1212 устройство определяет, указывает ли значение опорной строки индекса, что используется ближайшая соседняя опорная строка к текущему блоку.
Этап 1213, когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, устройство получает значение первой информации указания текущего блока, значение первой информации указания указывает, Режим предсказания текущего блока содержится в наборе наиболее вероятных режимов. Набор наиболее вероятных режимов включает 5 кандидатных режимов внутреннего предсказания и планарный режим. Первая информация указания указывается первым флагом, например intra_luma_mpm_flag. Как описано выше, когда значение intra_luma_mpm_flag равно 1, режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов.
На этапе 1214 устройство определяет, указывает ли значение первой информации указания, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов.
Этап 1215, устройство получает значение второй информации указания текущего блока, когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом или нет. Значение второй информации указания представляет собой контекстно-адаптивную двоичную арифметическую кодировку (CABAC), декодированную по контексту. Вторая информация указания может быть указана вторым флагом, например intra_luma_not_planar_flag. Устройство анализирует второй флаг с использованием контекста на основе того, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутри подраздела (ISP) или нет.
Подробная информация об этом варианте 1210 осуществления показана в вышеупомянутых вариантах осуществления.
Согласно варианту осуществления 1300 (см. Фиг. 13) способ внутреннего предсказания текущего блока, реализованный устройством кодирования, включает в себя следующие этапы. На этапе 1301 устройство определяет, содержится ли режим внутреннего предсказания текущего блока в набор наиболее вероятных режимов. Набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим. На этапе 1302 устройство определяет, используется ли ближайшая к текущему блоку опорная строка для внутреннего предсказания. Между этапами 1301 и 1302 нет последовательности.
Этап 1303, устройство кодирует поток битов, при этом поток битов включает в себя информацию, указывающую, является ли режим внутреннего предсказания текущего блока планарным режимом, когда режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и ближайшая соседняя опорная строка к текущиму блоку используется для внутреннего предсказания и отправки закодированного битового потока на устройство декодирования.
Битовый поток включает в себя первый флаг, указывающий, входит ли режим внутреннего предсказания текущего блока в набор наиболее вероятных режимов, и второй флаг, указывающий, является ли режим внутреннего предсказания текущего блока планарным режимом. Как описано выше, в качестве примера первым флагом является intra_luma_mpm_flag. Когда значение intra_luma_mpm_flag равно 1, режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов.
Значение второй информации указания представляет собой контекстно-адаптивную двоичную арифметическую кодировку (CABAC), декодированное по контексту. Вторая информация указания может быть указана вторым флагом, например intra_luma_not_planar_flag. Устройство анализирует второй флаг с использованием контекста на основе того, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутри подраздела (ISP) или нет.
Битовый поток также может включать в себя указание для указания значения опорной строки индекса текущего блока. Значение опорной строки индекса текущего блока указывается, например, с помощью intra_luma_ref_idx. Когда значение опорной строки индекса текущего блока равно 0, то есть intra_luma_ref_idx [x0] [y0] = = 0, используется ближайшая соседняя опорная строка к текущему блоку.
Подробная информация об этом варианте 1300 осуществления показана в вышеупомянутых вариантах осуществления.
Фиг. 14 иллюстрирует варианты осуществления устройства 1400 декодирования. Устройство 1400 декодирования может быть видеодекодером 30 на фиг.1А или декодером 30 на фиг.3. Устройство 1400 декодирования может использоваться для реализации варианта 1200 и других вариантов осуществления, описанных выше.
Устройство включает в себя первый блок 1401 получения и второй блок 1402 получения. Первый блок 1401 получения, сконфигурированный для получения значения опорной строки индекса текущего блока и значения первой информации указания текущего блока, причем значение первой информации указания указывает, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов. Набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим. Второй блок 1402 получения сконфигурирован для получения значения второй информации указания текущего блока, когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, при этом значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом.
Устройство 1400 дополнительно включает в себя блок 1403 синтаксического анализа (не показан на фиг. 14). Блок 1403 синтаксического анализа сконфигурирован для синтаксического анализа второго флага с использованием контекста на основе того, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутреннего подраздела (ISP) или нет.
Фиг. 15 иллюстрирует варианты осуществления устройства 1500 кодирования для внутреннего предсказания. Устройство 1500 кодирования может быть видеокодером 20 на фиг. 1A или кодером 20 на фиг. 2. Устройство 1500 кодирования можно использовать для реализации варианта 1300 осуществления и других вариантов осуществления, описанных выше.
Устройство 1500 включает в себя блок 1501 определения и блок 1502 кодирования. Блок 1501 определения, сконфигурированный для определения того, входит ли режим внутреннего предсказания текущего блока в набор наиболее вероятных режимов, и для определения того, используется ли ближайшая соседняя опорная строка к текущему блоку для внутреннего предсказания. Набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим. Блок 1502 кодирования, сконфигурированный для кодирования потока битов, при этом поток битов включает в себя информацию, указывающую, является ли режим внутреннего предсказания текущего блока планарным режимом, когда режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и ближайшая соседняя опорная строка к текущему блоку используется для внутреннего предсказания.
Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.
Фиг. 16 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и необязательно включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по-отдельности.
В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.
Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования картинки или устройство декодирования картинки, как показано в вышеупомянутых вариантах осуществления.
Фиг. 17 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.
После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.
Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, необязательно, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в синхронный блок 3212. Аудиодекодер 3208 декодирует аудио ES для генерации аудиокадра и подает эти данные в синхронный блок 3212. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. Y) перед его подачей в синхронный блок 3212. Точно так же аудиокадр может сохраняться в буфере (не показан на ФИГ. Y) перед его подачей в синхронный блок 3212.
Синхронный блок 3212 синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, синхронный блок 3212 синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления закодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования снимка, либо устройство декодирования снимка в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.
Математические операторы
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.
Арифметические операторы
Следующие арифметические операторы определены следующим образом:
Логические операторы
Следующие логические операторы определены следующим образом:
x && y Булево логическое "и" для x и y
х || y Булево логическое "или" для x и y
! Булево логическое «не»
x?y:z Если x равен ИСТИНЕ или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.
Операторы отношения
Следующие операторы отношения определены следующим образом:
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно
= == Равно
!=Не равно.
Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.
Побитовые операторы
Следующие побитовые операторы определены следующим образом:
& Побитовое «и». При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
| При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
^ При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
x >> y Арифметический сдвиг вправо целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.
x << y Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Следующие арифметические операторы определены следующим образом:
= Assignment operator
+ ++ + Приращение, т.е. x+ + эквивалентно x=x+1; при использовании в индексе массива оценивается в значение переменной до операции приращения.
− − Уменьшение, т.е. x− − эквивалентно x=x - 1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.
+=+ = Приращение на указанную величину, т.е. x += 3 эквивалентно x=x+3, а x += (−3) эквивалентно x=x + (−3).
−=− = Уменьшение на указанную величину, т.е. x −= 3 эквивалентно x=x − 3, а x −= (−3) эквивалентно x=x − (−3).
Обозначение диапазона
Следующее обозначение используется для указания диапазона значений:
x=y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y.
Математические функции
Определены следующие математические функции:
Abs( x ) =
Asin( x ) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от - до включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан.
Atan( x ) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан.
Atan2( y, x ) =
Ceil( x ) наименьшее целое больше чем или равно x
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
Clip3( x, y, z ) =
Cos( x ) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.
Floor( x ) наибольшее целое число, меньшее или равное x.
GetCurrMsb( a, b, c, d ) =
Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 281 828...).
Log2( x )
Log10( x ) логарифм x по основанию 10.
Min( x, y ) =
Max( x, y ) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + )
Sign( x ) =
Sin( x ) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан.
Sqrt( x ) =
Swap( x, y ) = ( y, x )
Tan( x ) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.
Порядок приоритетности операций
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
-- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.
-- Операции с одинаковым приоритетом оцениваются последовательно слева направо.
В таблице 14 ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице 14 указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.
Таблица 14: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы)
Текстовое описание логических операций
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
если ( условие 0 ) определение 0 иначе, если ( условие 1 ) определение 1 ... иначе /* информативный комментарий по оставшемуся условию */ определение n
может быть описано следующим образом:
... как указано ниже / ... применяется следующее:
- если условие 0, определение 0
- Иначе, если условие 1, определение 1
- ...
-- Иначе (информативный комментарий по оставшемуся условию), определение n.
Каждое определение «если ... Иначе если ... Иначе, ...» в тексте вводится словами «... как указано ниже» или «...применяется следующее», за которым сразу следует «если ...». Последним условием «если ... Иначе если ... Иначе, ...» всегда является «Иначе, ...». Чередование определений «если ... Иначе если ... Иначе, ...» могут быть идентифицированы путем сопоставления «... как указано ниже» или «... применяется следующее» с завершающим «Иначе, ...».
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
если (условие 0a && условие 0b)
определение 0
иначе, если (условие 1a | | условие 1b)
определение 1
...
иначе определение n
может быть описано следующим образом:
... как указано ниже / ... применяется следующее:
-- Если все из следующих условий истинны, определение 0:
- condition 0a
- condition 0b
-- Иначе, если истинными являются одно или более из следующих условий, определение 1:
- condition 1a
- condition 1b
- ...
- Иначе определение n
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
если (условие 0)
определение 0
если (условие 1)
определение 1
может быть описано следующим образом:
Когда условие 0, определение 0
Когда условие 1, определение 1.
Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодировки, следует отметить, что варианты осуществления системы 10 кодировки, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодировки неподвижной картинки, т.е. обработки или кодировки отдельной картинки независимо от любой предшествующей или последующей картинки, как при видеокодировке. В общем, только блоки 244 внешнего предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодировка для обработки картинки ограничена одной картинкой 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных картинок, например, вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, внутреннего предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийной кодировки 270 и энтропийного декодирования 304.
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской строки (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs)воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.
Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.
Изобретение относится к области кодирования или декодирования видеосигнала и, в частности, к внутреннему предсказанию. Техническим результатом является повышение эффективности и скорости кодирования, в частности повышение эффективности определения режима внутреннего предсказания текущего блока. Предложены устройства и способы для внутреннего предсказания. Способ включает в себя: получение значения первой информации указания текущего блока, причем значение первой информации указания указывает, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов; и получение значения опорной строки индекса текущего блока. Когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, способ дополнительно включает в себя получение значения второй информации указания текущего блока, причем значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом или нет. 8 н. и 18 з.п. ф-лы, 19 ил., 14 табл.
1. Способ внутреннего предсказания, реализуемый устройством декодирования, содержащий:
получение значения первой информации указания текущего блока, причем значение первой информации указания указывает, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов, при этом набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим;
получение значения опорной строки индекса текущего блока;
когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, получение значения второй информации указания текущего блока, причем значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом или нет,
причем первая информация указания указывается первым флагом intra_luma_mpm_flag, а вторая информация указания указывается вторым флагом intra_luma_not_planar_flag,
когда значение второй информации указания текущего блока указывает, что режим внутреннего предсказания текущего блока не является планарным режимом, синтаксически анализируется intra_luma_mpm_idx, соответствующий индексу 5 кандидатных режимов внутреннего предсказания; и
предсказание текущего блока на основе режима внутреннего предсказания текущего блока.
2. Способ по п.1, в котором значение второй информации указания является контекстно-адаптивной двоичной арифметической кодировкой (CABAC), декодированной по контексту.
3. Способ по п. 1, в котором, когда значение intra_luma_mpm_flag равно 1, режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и
когда значение опорной строки индекса текущего блока равно 0, используется ближайшая соседняя опорная строка к текущему блоку.
4. Способ по любому из пп. 3-5, причем способ дополнительно содержит:
синтаксический анализ второго флага с использованием контекста на основе того, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутреннего подраздела (ISP) или нет.
5. Способ по любому из пп. 1-4, в котором, когда значение второй информации указания текущего блока указывает, что режим внутреннего предсказания текущего блока не является планарным режимом, и когда одно или несколько из следующих условий истинны, кандидатный режим внутреннего предсказания candIntraPredModeX устанавливается равным INTRA_PLANAR:
значением переменной availableX является ЛОЖЬ;
CuPredMode [xNbX] [yNbX] не равно MODE_INTRA; или
X равно B и yCb − 1 меньше, чем (( yCb >> CtbLog2SizeY ) << CtbLog2SizeY),
причем X заменяется либо соседним блоком A, либо B, местоположение (xCb, yCb) яркости указывает верхнюю левую выборку текущего блока кодировки яркости относительно верхней левой выборки яркости текущей картинки, местоположение (xNbA, yNbA) соседа A устанавливается равным (xCb - 1, yCb+cbHeight -1), местоположение (xNbB, yNbB) соседа B устанавливается равным (xCb+cbWidth - 1, yCb - 1), переменная cbWidth указывает ширину текущего блока кодировки в выборках яркости, переменная cbHeight указывает высоту текущего блока кодировки в выборках яркости, CuPredMode представляет текущий режим предсказания, SizeY представляет размер Y компонентов блока дерева кодировки.
6. Способ по любому из пп. 1-5, в котором, когда режим внутреннего предсказания левого соседнего блока и режим внутреннего предсказания верхнего соседнего блока оба являются неугловыми режимами, список MPM содержит:
candModeList [0] = INTRA_DC
candModeList [1] = INTRA_ANGULAR50
candModeList [2] = INTRA_ANGULAR18
candModeList [3] = INTRA_ANGULAR46
candModeList [4] = INTRA_ANGULAR54.
7. Способ по любому из пп. 1-6, в котором этап получения значения второй информации указания содержит:
синтаксический анализ битового потока для получения значения второй информации указания.
8. Способ по любому из пп. 1-8, когда задействована кодировка с множественными опорными строками (MRL), значение второй информации указания получают по значению по умолчанию.
9. Способ внутреннего предсказания, реализуемый устройством кодирования, содержащий:
Определение, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов, при этом набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим;
определение, используется ли ближайшая соседняя опорная строка к текущему блоку для внутреннего предсказания;
кодирование потока битов, при этом поток битов включает в себя информацию, указывающую, является ли режим внутреннего предсказания текущего блока планарным режимом, когда режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и ближайшая соседняя опорная строка к текущему блок используется для внутреннего предсказания,
причем поток битов включает в себя первый флаг intra_luma_mpm_flag, указывающий, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов, и второй флаг intra_luma_not_planar_flag, указывающий, является ли режим внутреннего предсказания текущего блока планарным режимом;
когда значение второго флага, указывающего, что режим внутреннего предсказания текущего блока не является планарным режимом, поток битов включает в себя intra_luma_mpm_idx, соответствующий индексу 5 кандитатных режимов внутреннего предсказания.
10. Способ по п. 9, в котором, когда значение intra_luma_mpm_flag равно 1, режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и
когда значение опорной строки индекса текущего блока равно 0, ближайшая соседняя опорная строка к текущему блоку используется для внутреннего предсказания.
11. Способ по любому из пп. 9-10, в котором упомянутая информация указывает, является ли режим внутреннего предсказания текущего блока контекстно-зависимой двоичной арифметической кодировкой (CABAC), закодированной по контексту.
12. Способ по п. 11, в котором контекст включает в себя, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутреннего подраздела (ISP).
13. Устройство декодирования для внутреннего предсказания, содержащее:
первый блок получения, сконфигурированный для получения значения опорной строки индекса текущего блока и значения первой информации указания текущего блока, причем значение первой информации указания указывает, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов, при этом набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим;
второй блок получения, сконфигурированный для получения значения второй информации указания текущего блока, когда значение первой информации указания указывает, что режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и когда значение опорной строки индекса указывает, что используется ближайшая соседняя опорная строка к текущему блоку, при этом значение второй информации указания текущего блока указывает, является ли режим внутреннего предсказания текущего блока планарным режимом,
причем первая информация указания указывается первым флагом intra_luma_mpm_flag, а вторая информация указания указывается вторым флагом intra_luma_not_planar_flag,
когда значение второй информации указания текущего блока указывает, что режим внутреннего предсказания текущего блока не является планарным режимом, синтаксически анализируется intra_luma_mpm_idx, соответствующий индексу 5 кандидатных режимов внутреннего предсказания; и
блок предсказания, сконфигурированный для предсказания текущего блока на основе режима внутреннего предсказания текущего блока.
14. Устройство по п. 13, причем значение второй информации указания представляет собой контекстно-адаптивную двоичную арифметическую кодировку (CABAC), декодированную по контексту.
15. Устройство по п. 13, причем, когда значение intra_luma_mpm_flag равно 1, режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и
когда значение опорной строки индекса текущего блока равно 0, используется ближайшая соседняя опорная строка к текущему блоку.
16. Устройство по любому из пп. 13-15, причем устройство дополнительно содержит:
блок синтаксического анализа, сконфигурированный для синтаксического анализа второго флага с использованием контекста на основе того, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутреннего подраздела (ISP) или нет.
17. Устройство по любому из пп. 13-16, в котором второй блок получения сконфигурирован для получения значения второй информации указания путем синтаксического анализа потока битов.
18. Устройство по любому из пп. 13-16, в котором второй блок получения сконфигурирован для установки значения по умолчанию в качестве значения второй информации указания, когда задействована кодировка с множественными опорными строками (MRL).
19. Устройство кодирования для внутреннего предсказания, содержащее:
блок определения, сконфигурированный для определения, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов, и для определения, используется ли ближайшая соседняя опорная строка к текущему блоку для внутреннего предсказания, при этом набор наиболее вероятных режимов содержит 5 кандидатных режимов внутреннего предсказания и планарный режим;
блок кодирования, сконфигурированный для кодирования потока битов, при этом поток битов включает в себя информацию, указывающую, является ли режим внутреннего предсказания текущего блока планарным режимом, когда режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и ближайший соседняя опорная строка к текущему блоку используется для внутреннего предсказания,
причем поток битов включает в себя первый флаг intra_luma_mpm_flag, указывающий, содержится ли режим внутреннего предсказания текущего блока в наборе наиболее вероятных режимов, и второй флаг intra_luma_not_planar_flag, указывающий, является ли режим внутреннего предсказания текущего блока планарным режимом;
когда значение второго флага, указывающего, что режим внутреннего предсказания текущего блока не является планарным режимом, поток битов включает в себя intra_luma_mpm_idx, соответствующий индексу 5 кандитатных режимов внутреннего предсказания.
20. Устройство по п. 19, причем, когда значение intra_luma_mpm_flag равно 1, режим внутреннего предсказания текущего блока содержится в наборе наиболее вероятных режимов, и
когда значение опорной строки индекса текущего блока равно 0, ближайшая соседняя опорная строка к текущему блоку используется для внутреннего предсказания.
21. Устройство по любому из пп. 19-20, причем информация, указывающая, является ли режим внутреннего предсказания текущего блока контекстно-зависимой двоичной арифметической кодировкой (CABAC), закодированной по контексту.
22. Устройство по п.21, в котором контекст включает в себя, является ли текущий блок внутренним блоком с задействованным режимом кодировки внутреннего подраздела (ISP).
23. Декодер (30), содержащий схему обработки для выполнения способа по любому из пунктов с 1 по 8.
24. Кодер (20), содержащий схему обработки для выполнения способа по любому из пунктов с 9 по 12.
25. Декодер для внутреннего предсказания, содержащий:
один или более процессоров; и
долговременный считываемый компьютером носитель, подсоединенный к процессорам и хранящий программу для исполнения упомянутыми процессорами, причем программа, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-8.
26. Кодер для внутреннего предсказания, содержащий:
один или более процессоров; и
долговременный считываемый компьютером носитель, подсоединенный к процессорам и хранящий программу для исполнения упомянутыми процессорами, причем программа, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 9-12.
B | |||
WANG еt al., CE3-related: A unified MPM list for intra mode coding, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-N0185-r2, 14th Meeting: Geneva, 19-27 March 2019 | |||
BENJAMIN BROSS et al., Versatile Video Coding (Draft 4), Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, |
Авторы
Даты
2023-07-26—Публикация
2020-03-23—Подача