КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ Российский патент 2024 года по МПК H04N19/52 

Описание патента на изобретение RU2824186C2

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ

Данная заявка на патент испрашивает приоритет по отношению к заявке на патент Индии №. IN201931024825, поданной 21 июня 2019 г. Раскрытие вышеупомянутой заявки на патент включено в данный документ посредством ссылки в полном объеме.

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

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

УРОВЕНЬ ТЕХНИКИ

Видеокодирование (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.

Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео, желательны улучшенные методики сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.

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

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

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

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

Предоставляется способ кодирования битового видеопотока, содержащего кодированные данные для множества снимков, реализованных в устройстве кодирования, при этом способ содержит:

определение, задействовано ли уточнение вектора движения декодера (DMVR) интер-бипредсказание для по меньшей мере одной области текущего снимка из множества снимков; установку значения флага отключения (например, 1-битного флага) для DMVR на более низком иерархическом уровне синтаксической структуры, чем уровень набора параметров последовательности (SPS) на основе результата определения того, задействовано ли основанное на DMVR интер-бипредсказание, при этом значение флага отключения указывает, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка.

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

При этом способ кодирования может дополнительно содержать: кодирование значения флага отключения для DMVR на более низком иерархическом уровне синтаксической структуры в битовый видеопоток. В качестве альтернативы, кодирование значения флага отключения для DMVR может выполняться напрямую без установки значения флага отключения (например, 1-битного флага) для DMVR.

Например по меньшей мере одна область текущего снимка является текущим снимком, и флаг отключения установлен на уровне набора параметров снимка (PPS). Согласно другому примеру по меньшей мере одна область текущего снимка является сегментом текущего снимка, и флаг отключения установлен на уровне заголовка сегмента.

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

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

Согласно другому аспекту определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, содержит: определение того, присутствует ли содержимое экрана в, по меньшей мере, области текущего снимка, и при этом по меньшей мере одно предварительно заданное условие содержит то, что определено, что содержимое экрана присутствует в по меньшей мере одной области текущего снимка. Применение этого условия также может привести к надежному процессу принятия решений в отношении эффективности кодирования.

Конкретный вариант определения, доступно ли содержимое экрана, заключается в следующем. Определение того, присутствует ли содержимое экрана в по меньшей мере одной области текущего снимка, содержит вычисление N-битных хеш-значений для блоков по меньшей мере одной области текущего снимка, начиная с каждого из M дискретных отсчетов по меньшей мере одной области текущего снимка, соответственно, при этом N, M и K являются целочисленными значениями; построение хеш-таблицы с K записями, в которой каждая из K записей содержит значение счетчика блоков, для которых вычисляются N-битовые хеш-значения, которые равны предварительно заданному значению; и определение суммы записей, содержащих значение счетчика больше 1; и при этом определяется, что содержимое экрана присутствует в по меньшей мере одной области текущего снимка, когда определенная сумма записей превышает предварительно заданное пороговое значение. Названные блоки могут состоять из 4х4 дискретных отсчетов. Подходящая предварительно заданное пороговое значение задается пороговым значением, представляющей предварительно заданный процент от общего количества дискретных отсчетов по меньшей мере одной области текущего снимка. С помощью этой процедуры можно надежно решить, присутствует ли значимое содержимое экрана.

Согласно одному аспекту определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, содержит: вычисление первой суммы затрат по остаткам предсказания единичных блоков кодирования по меньшей мере одной области без выполнения основанного на уточнении вектора движения декодера интер-бипредсказания; вычисление второй суммы затрат по остаткам предсказания единичных блоков кодирования по меньшей мере одной области с выполнением уточнения вектора движения; и при этом определяется, что основанное на DMVR интер-бипредсказание отключено, когда вычисленная вторая сумма больше, чем вычисленная первая сумма. Затраты могут быть основанными на абсолютных преобразованных разностях (SATD) затратах. Этот критерий также может привести к эффективному кодированию. В частности, когда упомянутая по меньшей мере одна область текущего снимка является текущим снимком, может быть определено, что интер-бипредсказание DMVR не должно быть задействовано для последующих снимков текущего снимка, когда вычисленная вторая сумма больше, чем вычисленная первая сумма. Применение этого условия также может привести к надежному процессу принятия решений в отношении эффективности кодирования.

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

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

Что касается решения о том, задействована ли или нет обработка двунаправленного оптического потока (BDOF), то аналогичные процедуры, описанные выше, могут выполняться с теми же или аналогичными предоставленными преимуществами. Соответственно, предоставляется способ кодирования битового видеопотока, содержащего кодированные данные для множества снимков, реализуемый в устройстве кодирования, причем способ содержит:

определение, задействовано ли интер-предсказание двунаправленного оптического потока (BDOF) для по меньшей мере одной области текущего снимка из множества снимков;

установку значения флага отключения (например, 1-битного флага) для BDOF на более низком иерархическом уровне синтаксической структуры, чем уровень набора параметров последовательности (SPS) на основе результата определения, задействовано ли интер-предсказание BDOF, значение флага отключения указывает, задействовано ли интер-предсказание BDOF для по меньшей мере одной области текущего снимка.

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

Опять же, по меньшей мере одна область текущего снимка может быть текущим снимком, и флаг отключения может быть установлен на уровне набора параметров снимка (PPS), или по меньшей мере одна область текущего снимка может быть сегментом текущего снимка, и флаг отключения может быть установлен на уровне заголовка сегмента.

Может быть определено, что интер-предсказание BDOF отключено, когда выполнено по меньшей мере одно предварительно заданное условие. Подходящие условия включают в себя следующее. Способ может содержать определение разностей векторов движения относительно по меньшей мере одной области текущего снимка и по меньшей мере одной области опорного снимка на одной стороне по меньшей мере одной области текущего снимка и по меньшей мере одной области другого опорного снимка на другой стороне по меньшей мере одной области текущего снимка, и при этом по меньшей мере одно предварительно заданное условие содержит то, что определенные разности векторов движения не имеют ни одинаковых абсолютных значений, ни противоположных знаков.

Опять же, способ может дополнительно содержать установку значения флага задействования для BDOF на уровне SPS, при этом значение флага задействования указывает, задействовано ли или нет интер-предсказание BDOF для множества снимков.

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

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

Вышеупомянутые задачи также решаются посредством предоставления способа декодирования битового видеопотока, реализуемого устройством декодирования, при этом битовый видеопоток включает в себя кодированные данные для множества снимков, способ декодирования содержит: анализ флага задействования для уточнения вектора движения декодера (DMVR) из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли или нет основанное на DMVR интер-бипредсказание для множества снимков, связанных с набором параметров последовательности; анализ флага отключения (например, 1-битного флага) для DMVR из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для DMVR указывает, задействовано ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, при этом текущий снимок принадлежит множеству снимков; и выполнение основанного на DMVR интер-бипредсказания для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что основанное на DMVR интер-бипредсказание задействовано.

Предоставляется аналогичная процедура в отношении задействования или отключения обработки двунаправленного оптического потока, а именно способ декодирования битового видеопотока, реализуемый устройством декодирования, при этом битовый видеопоток включает в себя кодированные данные для множества снимков, способ декодирования содержит: анализ флага задействования для двунаправленного оптического потока (BDOF) из набора параметров последовательности битового видеопотока, при этом флаг задействования для BDOF указывает, задействовано ли интер-предсказание BDOF для множества снимков, связанных с набором параметров последовательности; анализ флага отключения (например, 1-битного флага) для BDOF из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для BDOF указывает, отключено ли или нет интер-предсказание BDOF для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, причем текущий снимок принадлежит множеству снимков; и выполнение интер-предсказания BDOF для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что интер-предсказание BDOF задействовано.

Упомянутая по меньшей мере одна область текущего снимка может быть текущим снимком, синтаксическая структура может быть набором параметров снимка (PPS). По меньшей мере одна область текущего снимка может быть сегментом текущего снимка, синтаксическая структура может быть заголовком сегмента.

Согласно одному аспекту, основанное на DMVR интер-бипредсказание выполняется для текущего блока, когда проанализированное значение флага задействования для DMVR указывает, что DMVR задействовано.

Согласно другому аспекту, по меньшей мере одно предварительно заданное условие (дополнительно) содержит то, что проанализированное значение флага задействования для DMVR указывает, что DMVR задействовано.

Согласно другому аспекту, интер-предсказание BDOF выполняется для текущего блока, когда проанализированное значение флага задействования для BDOF указывает, что BDOF задействован.

Согласно другому аспекту, по меньшей мере одно предварительно заданное условие (дополнительно) содержит то, что проанализированное значение флага задействования для BDOF указывает, что BDOF задействован.

Флаг отключения для DMVR может быть проанализирован, когда проанализированное значение флага задействования для DMVR указывает, что DMVR задействовано. То, анализируется ли флаг отключения для DMVR, может основываться на проанализированном значении флага задействования для DMVR.

Точно так же флаг отключения для BDOF может анализироваться, когда проанализированное значение флага задействования для BDOF указывает, что BDOF задействован. То, анализируется ли флаг отключения для BDOF, может основываться на проанализированном значении флага задействования для BDOF.

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

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

Предоставляется устройство (может использоваться в кодере изображения), сконфигурированное для кодирования битового видеопотока, содержащего кодированные данные для множества снимков, при этом устройство содержит: модуль определения уточнение вектора движения декодера (DMVR), выполненный с возможностью определения того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка из множества снимков; модуль установки первого флага DMVR, выполненный с возможностью установки значения флага отключения (например, 1-битного флага) для DMVR на более низком иерархическом уровне синтаксической структуры, чем уровень набора параметров последовательности (SPS) на основе результата определения, задействовано ли основанное на DMVR интер-бипредсказание, при этом значение флага отключения указывает, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка.

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

По меньшей мере одна область текущего снимка может быть текущим снимком, и флаг отключения может быть установлен на уровне набора параметров снимка (PPS). По меньшей мере одна область текущего снимка может быть сегментом текущего снимка, и флаг отключения может быть установлен на уровне заголовка сегмента.

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

Определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, может содержать: определение того, присутствует ли содержимое экрана в, по меньшей мере, области текущего снимка, и при этом по меньшей мере одно предварительно заданное условие содержит то, что определено, что содержимое экрана присутствует в по меньшей мере одной области текущего снимка.

Определение того, присутствует ли содержимое экрана в по меньшей мере одной области текущего снимка, может содержать: вычисление N-битных хеш-значений для блоков по меньшей мере одной области текущего снимка, начиная с каждого из M дискретных отсчетов по меньшей мере одной области текущего снимка, соответственно, при этом N, M и K являются целочисленными значениями; построение хеш-таблицы с K записями, в которой каждая из K записей содержит значение счетчика блоков, для которых вычисляются N-битовые хеш-значения, которые равны предварительно заданному значению; определение суммы записей, содержащих значение счетчика больше 1; и при этом определяется, что содержимое экрана присутствует в по меньшей мере одной области текущего снимка, когда определенная сумма записей превышает предварительно заданное пороговое значение. Здесь блоки могут состоять из 4х4 дискретных отсчетов. Кроме того, предварительно заданное пороговое значение может представлять предварительно заданный процент от общего количества дискретных отсчетов по меньшей мере одной области текущего снимка.

Согласно дополнительному аспекту, определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, содержит: вычисление первой суммы затрат на остатках предсказания единичных блоков кодирования по меньшей мере одной области без выполнения основанного на уточнении вектора движения декодера интер-бипредсказания; вычисление второй суммы затрат по остаткам предсказания единичных блоков кодирования по меньшей мере одной области с выполнением уточнения вектора движения; и при этом определяется, что основанное на DMVR интер-бипредсказание отключено, когда вычисленная вторая сумма больше, чем вычисленная первая сумма. Затраты могут быть основанными на абсолютных преобразованных разностях (SATD) затратах.

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

Согласно одному аспекту, устройство содержит модуль установки второй флага DMVR (который может быть частью или идентичным с модулем установки первого флага DMVR), выполненный с возможностью установки значения флага задействования для DMVR на уровне SPS, при этом значение флага задействования указывает, задействовано ли основанное на DMVR интер-бипредсказание для множества снимков.

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

Предлагается аналогичное устройство, которое позволяет принимать подходящее решение о том, задействован ли двунаправленный оптический поток. Это устройство легко объединяется с описанным выше.

В частности, предоставляется устройство (может использоваться в кодере изображений), сконфигурированное для кодирования битового видеопотока, содержащего кодированные данные для множества снимков, при этом устройство содержит: модуль определения интер-предсказания двунаправленного оптического потока (BDOF), выполненный с возможностью определения, задействовано ли интер-предсказание BDOF для по меньшей мере одной области текущего снимка из множества снимков;

модуль установки первого флага BDOF, выполненный с возможностью установки значения флага отключения (например, 1-битного флага) для BDOF на более низком иерархическом уровне синтаксической структуры, чем уровень набора параметров последовательности (SPS) на основе результата определения задействовано ли интер-предсказание BDOF, значение флага отключения указывает, задействовано ли интер-предсказание BDOF для по меньшей мере одной области текущего снимка.

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

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

Согласно одному аспекту модуль определения интер-предсказания BDOF выполнен с возможностью определения того, что интер-предсказание BDOF отключено, когда выполнено по меньшей мере одно предварительно заданное условие.

Для этого устройство может дополнительно содержать модуль определения разностей векторов движения (который может быть частью модуля определения BDOF), выполненный с возможностью определения разностей векторов движения относительно по меньшей мере одной области текущего снимка и по меньшей мере одной области опорного снимка на одной стороне по меньшей мере одной области текущего снимка и по меньшей мере одной области другого опорного снимка на другой стороне по меньшей мере одной области текущего снимка, и при этом по меньшей мере одно предварительно заданное условие содержит то, что определенные разности векторов движения не имеют ни одинаковых абсолютных значений, ни противоположных знаков.

Устройство может дополнительно содержать модуль установки второй флага BDOF (который может быть частью или идентичным с модулем установки первого флага BDOF), выполненный с возможностью установки значения флага задействования для BDOF на уровне SPS, при этом значение флага задействования указывает, задействовано ли интер-предсказание BDOF для множества снимков.

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

Флаг отключения, как правило, может быть 1-битным флагом.

Кроме того, предоставляется устройство (может использоваться в декодере изображений), сконфигурированное для декодирования битового видеопотока, содержащего кодированные данные для множества снимков, при этом устройство содержит: первый модуль анализа, выполненный с возможностью анализа флага задействования для уточнения вектора движения декодера (DMVR) из набора параметров последовательности битового видеопотока, причем флаг задействования для DMVR указывает, задействовано ли или нет основанное на DMVR интер-бипредсказание для множества снимков, связанных с набором параметров последовательности; второй модуль анализа, выполненный с возможностью анализа флага отключения (например, 1-битного флага) для DMVR из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, причем текущий снимок принадлежит множеству снимков; и модуль выполнения DMVR, выполненный с возможностью выполнения основанного на DMVR интер-бипредсказания для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что задействовано основанное на DMVR интер-бипредсказание.

Точно так же предоставляется устройство (может использоваться в декодере изображений), сконфигурированное для декодирования битового потока видео, содержащего кодированные данные для множества снимков, при этом устройство содержит: первый модуль анализа, выполненный с возможностью анализа флага задействования для двунаправленного оптического потока (BDOF) из набора параметров последовательности битового видеопотока, причем флаг задействования для BDOF указывает, задействовано ли интер-предсказание BDOF для множества снимков, связанных с набором параметров последовательности; второй модуль анализа, выполненный с возможностью анализа флага отключения для BDOF из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для BDOF указывает, отключено ли или нет интер-предсказание BDOF для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, при этом текущий снимок принадлежит множеству снимков; и модуль выполнения BDOF, выполненный с возможностью выполнения интер-предсказания BDOF для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что интер-предсказание BDOF задействовано.

Опять же, по меньшей мере одна область текущего снимка может быть текущим снимком, синтаксическая структура может быть набором параметров снимка (PPS), или, альтернативно, по меньшей мере одна область текущего снимка может быть сегментом текущего снимка, синтаксическая структура может быть заголовком сегмента.

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

Согласно другому аспекту, по меньшей мере одно предварительно заданное условие (дополнительно) содержит то, что проанализированное значение флага задействования для DMVR указывает, что DMVR задействовано.

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

Согласно другому аспекту, по меньшей мере одно предварительно заданное условие (дополнительно) содержит то, что проанализированное значение флага задействования для BDOF указывает, что BDOF задействован.

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

Опять же, флаг отключения, как правило, может быть 1-битным флагом.

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

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

Обеспечивается закодированный битовый поток для видеосигнала посредством включения в него множества синтаксических элементов, при этом множество синтаксических элементов содержит флаг отключения для DMVR любого из описанных выше вариантов осуществления.

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

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

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

Обеспечивается закодированный битовый поток для видеосигнала посредством включения в него множества синтаксических элементов, при этом множество синтаксических элементов содержит флаг отключения для BDOF любого из описанных выше вариантов осуществления.

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

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

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

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

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

В следующих вариантах осуществления настоящего изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:

Фиг.1A является блок-схемой, показывающей пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления настоящего изобретения;

Фиг.1B является блок-схемой, показывающей другой пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления настоящего изобретения;

Фиг.2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления настоящего изобретения;

Фиг.3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления настоящего изобретения;

Фиг.4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;

Фиг.5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;

Фиг.6 иллюстрирует расширенную область CU, используемую в BDOF;

Фиг.7 иллюстрирует уточнение вектора движения на стороне декодера;

Фиг.8 иллюстрирует способ кодирования битового видеопотока согласно одному варианту осуществления.

Фиг.9 иллюстрирует способ кодирования битового видеопотока согласно другому варианту осуществления.

Фиг.10 иллюстрирует способ декодирования битового видеопотока согласно одному варианту осуществления.

Фиг.11 иллюстрирует способ декодирования битового видеопотока согласно другому варианту осуществления.

Фиг.12 иллюстрирует устройство для использования в кодере изображения согласно одному варианту осуществления.

Фиг.13 иллюстрирует устройство для использования в кодере изображений согласно другому варианту осуществления.

Фиг.14 иллюстрирует устройство для использования в декодере изображений согласно одному варианту осуществления.

Фиг.15 иллюстрирует устройство для использования в декодере изображений согласно другому варианту осуществления.

Фиг.16 является блок-схемой, показывающей примерную структуру системы 3100 предоставления контента, которая реализует службу доставки контента.

Фиг.17 является блок-схемой, показывающей структуру примерного терминального устройства.

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

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

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

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

Видеокодирование обычно относится к обработке последовательности снимков, которые образуют видео или видеопоследовательность. Вместо термина «снимок» можно использовать термин «кадр» или «изображение» как синонимы в области видеокодирования. Видеокодирование (или кодирование в общем смысле) содержит две части видеокодирование и декодирование видео. Видеокодирование выполняется на стороне источника, обычно содержащее обработку (например, посредством сжатия) исходных видеоснимков для уменьшения объема данных, необходимых для представления видеоснимков (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоснимков. Варианты осуществления, относящиеся к «кодированию» видеоснимков (или снимков в целом, следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеоснимков или соответственных видеопоследовательностей. Объединение кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).

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

Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области дискретных отсчетов и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждый снимок видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутри снимка) (интра) предсказания и/или временного (между снимками) (интер) предсказания для генерации блока предсказания, вычитая блок предсказания из текущего блока (блок, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжатие), тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, интра- и интер-предсказание) и/или реконструкцию для обработки, то есть кодирования, последующих блоков.

В следующих вариантах осуществления системы 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 снимка также могут называться необработанным снимком или данными 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 и устройство 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 с постобработкой, например снимка 33 с постобработкой. Постобработка, выполняемая модулем 32 постобработки, может включать в себя, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную дискретизацию, или любую другую обработку, например, для подготовки данных декодированного снимка 31 для отображения, например, с помощью устройства 34 отображения.

Устройство 34 отображения устройства-получателя 14 выполнено с возможностью приема данных 33 снимка с постобработкой для отображения снимка, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного снимка, например интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (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, буфер 230 (DPB) декодированных снимков, модуль 244 интер-предсказания и модуль 254 интра-предсказания также относятся к формированию «Встроенного декодера» видеокодера 20.

Снимки и разбиение снимков (снимки и блоки)

Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 снимка 17 (или данных 17 снимка), например снимка из последовательности снимков, образующих видео или видеопоследовательность. Принятый снимок или данные снимка также могут представлять собой предварительно обработанный снимок 19 (или предварительно обработанные данные 19 снимка). Для простоты нижеследующее описание ссылается на снимок 17. Снимок 17 также может именоваться текущим снимком или снимком, который подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущий снимок от других снимков, например, ранее кодированных и/или декодированных снимков той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущий снимок).

(Цифровой) снимок представляет собой или может рассматриваться как двумерный массив или матрица дискретных отсчетов со значениями интенсивности. Дискретный отсчет в массиве также может называться пикселем (сокращенная форма элемента снимка) или пикселем. Количество дискретных отсчетов в горизонтальном и вертикальном направлении (или по оси) массива или снимка определяет размер и/или разрешение снимка. Для представления цвета обычно используются три цветовых компонента, то есть снимок может быть представлен или включать в себя три массива дискретных отсчетов. В формате RBG или цветовом пространстве снимок содержит соответствующий массив дискретных отсчетов красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или короткой яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновом снимке), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, снимок в формате 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. Соответственно, блок может, например, массив дискретных отсчетов MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.

Варианты осуществления видеокодера 20, как показано на Фиг.2, могут быть выполнены с возможностью кодирования снимка 17 блок за блоком, например, кодирование и предсказание выполняются для каждого блока 203.

Варианты осуществления видеокодера 20, как показано на фиг.2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования снимка с использованием сегментов (также называемых видеосегментами), при этом снимок может быть разделен или кодировано с использованием одного или более сегментов. (обычно без перекрытия), и каждый сегмент может содержать один или более блоков (например, CTU). Сегмент может содержать совокупность прямоугольных клеток или может быть совокупностью строк CTU порядка растра внутри клетки. Клетка делится на один или более фрагментов, каждый из которых состоит из некоторого количества строк 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) может быть блоком NxN дискретных отсчетов для некоторого значения N, так что разбиение компонента на CTB является разбиением. Единичный блок кодирования (CU) может быть или содержать блок кодирования дискретных отсчетов яркости, два соответствующих блока кодирования дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или блок кодирования дискретных отсчетов монохромного снимка или снимка, который кодируется с использованием трех отдельных цветовых плоскости и синтаксические структуры, используемые для кодирования дискретных отсчетов. Соответственно, блок кодирования (CB) может быть блоком MxN дискретных отсчетов для некоторых значений 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 различных режимов интра-предсказания, например ненаправленные режимы, такие как режим постоянного (или среднего) и планарный режим, или направленные режимы, например, как определено в HVEC, или может содержать 67 различных режимов интра-предсказания, например, ненаправленные режимы, такие как режим постоянного тока (или среднего) и планарный режим, или направленные режимы, например, как определено для VVC.

Модуль 254 интра-предсказания выполнен с возможностью использования восстановленных дискретных отсчетов соседних блоков одного и того же текущего снимка для генерации блока 265 интра-предсказания согласно режиму интра-предсказания набора режимов интра-предсказания.

Модуль 254 интра-предсказания (или, в общем, модуль 260 выбора режима) дополнительно выполнен с возможностью вывода параметров интра-предсказания (или, в общем, информации, указывающей выбранный режим интра-предсказания для блока) в модуль 270 энтропийного кодирования в форме синтаксиса элементы 266 для включения в данные 21 кодированного снимка, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.

Интер-предсказание

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

В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.

Модуль 244 интер-предсказания может включать в себя модуль оценки движения (ME) (не показан на фиг.2) и модуль компенсации движения (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 результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после интерполяционной фильтрации, вывода вектора движения или петлевой фильтрации может выполняться дополнительная операция, такая как обрезка или сдвиг, над результатом обработки интерполяционной фильтрации, вывода вектора движения или петлевой фильтрации.

Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения подблока в аффинном, планарном режимах, режиме 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 является следующим:

Фиг.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 может быть реализован как одна или более микросхем ЦП, ядер (например, как многоядерный процессор), 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 может быть реализовано в самых разнообразных конфигурациях.

Интер-предсказание может содержать основанное на уточнении вектора движения интер-бипредсказание или интер-предсказание двунаправленного оптического потока. Ниже представлено введение основанного на уточнении вектора движения интер-бипредсказания или интер-предсказания двустороннего оптического потока.

Уточнение вектора движения (MVR), или называемое уточнением вектора движения на стороне декодера (DMVR)

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

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

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

Уточнение вектора движения является частью модуля (244) интер-предсказания на Фиг.2 и 344 на Фиг.3.

Уточнение вектора движения может быть выполнено в соответствии со следующими этапами:

Обычно начальные векторы движения могут быть определены на основе указания в битовом потоке. Например, в битовом потоке может быть указан индекс, который указывает позицию в списке возможных векторов движения. В другом примере индекс предиктора вектора движения и значение разности векторов движения могут сигнализироваться в битовом потоке. Векторы движения, которые определяются на основе указания в битовом потоке, определяются как начальные векторы движения. В случае бипредсказания, когда интер-предсказание для текущего блока получается как взвешенное объединение предсказанного блока дискретных отсчетов, которые определены в соответствии с двумя векторами движения, пусть начальный вектор движения в первом опорном снимке в списке L0 обозначим как MV0; и начальный вектор движения во втором опорном снимке в списке L1 обозначен как MV1.

Используя начальные векторы движения, определяются потенциально подходящие пары векторов движения (MV) на уточнение. По меньшей мере, необходимо определить две потенциально подходящие пары на уточнение. Обычно потенциально подходящие пары векторов движения на уточнение определяются на основе начальной пары векторов движения (MV0, MV1). Кроме того, потенциально подходящие пары MV определяются посредством добавления небольших разностей векторов движения к MV0 и MV1. Например, потенциально подходящие пары MV могут включать в себя следующее:

(MV0, MV1)

(MV0 + (0,1), MV1 + (0,-1))

(MV0 + (1,0), MV1 + (-1,0))

(MV0 + (0,-1), MV1 + (0,1))

(MV0 + (-1,0), MV1 + (1,0))

Где (1,-1) обозначает вектор, который имеет смещение 1 в горизонтальном (или x) направлении и смещение -1 в вертикальном (или y) направлении.

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

Потенциально подходящие пары векторов движения (MV) на уточнение образуют пространство поиска процесса уточнения вектора движения.

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

При уточнении вектора движения два блока предсказания, полученные с использованием соответствующего первого вектора движения и второго вектора движения потенциально подходящей пары MV, сравниваются на основе метрики подобия для каждой из потенциально подходящих пар MV на уточнение. В качестве уточненных векторов движения обычно выбирается потенциально подходящая пара MV, дающая наибольшее сходство. Обозначается как MV0' и MV1', уточненный вектор движения в первом опорном изображении в списке L0 и уточненный вектор движения во втором опорном изображении в списке L1, соответственно. Другими словами, получаются предсказания, соответствующие вектору движения списка L0 и вектору движения списка L1 потенциально подходящей пары векторов движения, которые затем сравниваются на основе метрики подобия. Потенциально подходящая пара векторов движения, которая имеет наивысшее ассоциированное сходство, выбирается как уточненная пара MV.

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

Вместо выбора позиции, которая максимизирует метрику подобия, другим способом является выбор позиции, которая минимизирует метрику несходства. Мерой сравнения несходства может быть SAD (сумма абсолютных разностей), MRSAD (средняя удаленная сумма абсолютных разностей, SSE (сумма квадратов ошибок) и т.д. SAD между двумя блоками предсказания может быть получена с использованием потенциально подходящей пары MV (CMV0, CMV1), SAD можно вычислить следующим образом:

где nCbH и nCbW - высота и ширина блоков предсказания, функция abs(a) указывает абсолютное значение аргумента a, predSAmplesL0 и predSAmplesL1 - это дискретные отсчеты блоков предсказания, полученные в соответствии с потенциально подходящей парой MV, которая обозначена как (CMV0, CMV1).

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

Один из примеров уточнения вектора движения поясняется в документе JVET-M1001-v3, «Универсальное кодирование видео (проект 4)» JVET (ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11), который находится в открытом доступе по адресу http://phenix.it-sudparis.eu/jvet/». Раздел «8.4.3 Decoder side motion vector refinement process» в документе иллюстрирует уточнение вектора движения.

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

Каждый MV начальной пары MV может иметь дробную пиксельную точность. Другими словами, MV указывает смещение между текущим блоком дискретных отсчетов и опорной областью с повторной дискретизацией, и это смещение может указывать на дробное положение в горизонтальном и вертикальном направлениях из целочисленной сетки восстановленных эталонных дискретных отсчетов. Как правило, выполняется двухмерная интерполяция восстановленных значений опорной сетки целочисленных дискретных отсчетов для получения значений дискретных отсчетов в месте смещения дробных дискретных отсчетов. Процесс получения предсказанных дискретных отсчетов из восстановленных опорных снимков с использованием потенциально подходящей пары MV может осуществляться одним из следующих способов:

Округлить дробную часть начальной пары MV до ближайшего целочисленного местоположения и получить целочисленные значения сетки восстановленных опорных снимков.

Выполнить разделяемую билинейную интерполяцию с 2-умя ответвлениями (например, билинейную), чтобы получить предсказанные значения дискретных отсчетов с точностью до дробного пикселя, указанной парой начальных MV.

Выполнить разделительную интерполяцию с большим количеством ответвлений (например, с 8 или 6 ответвлениями), чтобы получить предсказанные значения дискретных отсчетов с точностью до дробного пикселя, указанной парой начальных MV.

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

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

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

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

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

Уточнение оптического потока с бипредсказанием (BPOF) или двунаправленный оптический поток (BDOF)

Двунаправленный оптический поток - это процесс повышения точности бипредсказания блока без явной дополнительной сигнализации в битовом потоке, кроме сигнализированной для бипредсказания. Он является частью модуля интер-предсказания (244) на Фиг.2 и 344 на Фиг.3.

При бипредсказании 2 интер-предсказания получаются согласно двум векторам движения, затем предсказания объединяются посредством применения взвешенного усреднения. Объединенное предсказание может привести к уменьшению остаточной энергии, поскольку шум квантования в двух опорных участках нейтрализуется, тем самым обеспечивая большую эффективность кодирования, чем единичное предсказание. Взвешенное объединение при бипредсказании может быть выполнено с помощью уравнения:

Bi-prediction=Prediction1*W1+Prediction2*W2+K

где W1 и W2 - весовые коэффициенты, которые могут передаваться в битовом потоке или могут быть заранее определены на стороне кодера или на стороне декодера. K - это аддитивный коэффициент, который также может быть сигнализирован в битовом потоке или заранее определен на стороне кодера или на стороне декодера. Например, бипредсказание может быть получено с использованием

Bi-prediction=(Prediction1+Prediction2)/2

где W1 и W2 установлены в ½, а K установлено в 0.

Целью уточнения оптического потока является повышение точности бипредсказания. Оптический поток - это шаблон видимого движения объектов изображения между двумя последовательными кадрами. Оптический поток вызывается движением объекта или камеры. Процесс уточнения оптического потока повышает точность бипредсказания за счет применения уравнения оптического потока (решения уравнения оптического потока).

В одном примере пиксель I(x, y, t) расположен в первом кадре (x и y соответствуют пространственным координатам, t соответствуют временному измерению). Объект, представленный пикселем, перемещается на расстояние (dx, dy) в следующем кадре, снятом после времени dt. Поскольку эти пиксели одинаковы и интенсивность не меняется, уравнение оптического потока определяется следующим образом:

I(x, y, t)=I(x+dx, y+dy, t+dt)

I(x, y, t) указывает интенсивность (значение дискретного отсчета) пикселя в координатах (x, y, t).

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

= 0

Где ∂ и ∂ - это горизонтальный и вертикальный пространственные градиенты дискретного отсчета в позиции (x, y), а ∂ - это частная производная по времени в точке (x, y).

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

Реализация уточнения оптического потока обычно включает в себя следующие этапы:

1. Вычисление градиентов дискретного отсчета;

2. Вычисление разности между первым предсказанием и вторым предсказанием;

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

где I(0) соответствует значению дискретного отсчета в первом предсказании, I(1) - это значение дискретного отсчета во втором предсказании, а ∂I(0)/∂x и ∂I(0)/∂y - это градиенты в -x и -y направлениях. и обозначают расстояния до опорных снимков, на которых получают первое предсказание и второе предсказание. Поле (vx, vy) вектора движения получается посредством процесса минимизации. Некоторые подходы минимизируют сумму квадратов ошибок, в то время как некоторые подходы минимизируют сумму абсолютных ошибок.

4. Использование реализации уравнения оптического потока, например, ниже:

Где predBIO указывает измененное предсказание, которое является результатом процесса уточнения оптического потока.

Градиенты дискретного отсчета можно получить по следующей формуле

∂I(x, y, t)/∂x=I(x+1, y, t)-I(x - 1, y, t)

∂I(x, y, t)/∂y=I(x, y+1, t)-I(x, y - 1, t)

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

Входными данными процесса уточнения оптического потока являются дискретные отсчеты предсказания из двух опорных снимков, а выходными данными уточнения оптического потока является объединенное предсказание (predBIO), которое вычисляется в соответствии с уравнением оптического потока.

Один пример уточнения оптического потока объяснен в разделе 8.4.7.4 «Процесс бипредсказания оптического потока» документа JVET-M1001, Универсальное кодирование видео (Проект 4).

Термины оптический поток, оптический поток с бипредсказанием и уточнение двунаправленного оптического потока используются в раскрытии как взаимозаменяемые, поскольку эти термины эквивалентны по своей природе.

Двунаправленный оптический поток (BDOF)

Инструмент двунаправленного оптического потока (BDOF) включен в VVC. BDOF, ранее называвшийся BIO, был включен в JEM. По сравнению с версией JEM, BDOF в VVC - это более простая версия, которая требует гораздо меньше вычислений, особенно с точки зрения количества умножений и размера множителя.

BDOF используется для уточнения сигнала бипредсказания CU на уровне подблока 4×4. BDOF применяется к CU, если он удовлетворяет следующим условиям: 1) высота CU не равна 4, и размер CU не равен 4×8, 2) CU не кодируется с использованием аффинного режима или режима слияния ATMVP; 3) CU кодируется с использованием режима «истинного» бипредсказания, т.е. один из двух опорных снимков предшествует текущему снимку в порядке отображения, а другой - после текущего снимка в порядке отображения. BDOF применяется только к компоненту яркости.

BDOF используется для уточнения сигнала бипредсказания CU на уровне подблока 4×4. BDOF применяется к CU, если он удовлетворяет всем следующим условиям:

- CU кодируется с использованием «истинного» режима бипредсказания, т.е. один из двух опорных снимков предшествует текущему снимку в порядке отображения, а другой - после текущего снимка в порядке отображения.

- Расстояния (т.е. разность POC) от двух опорных снимков до текущего снимка одинаковы

- Оба опорных снимка являются краткосрочными опорными снимками

- CU не кодируется с использованием аффинного режима или режима слияния ATMVP

- CU имеет более 64 дискретных отсчетов яркости

- И высота CU, и ширина CU больше или равны 8 дискретным отсчетам яркости.

- Индекс веса BCW указывает на одинаковый вес

- WP не включен для текущего CU

- Режим CIIP не используется для текущего CU

BDOF применяется только к компоненту яркости. Как следует из названия, режим BDOF основан на концепции оптического потока, которая предполагает, что движение объекта плавное. Для каждого подблока 4×4 вычисляется уточнение движения посредством минимизации разности между дискретными отсчетами предсказания L0 и L1. Затем уточнение движения используется для настройки значений дискретных отсчетов с бипредсказанием в подблоке 4×4. Следующие этапы применяются в процессе BDOF.

Сначала вычисляются горизонтальный и вертикальный градиенты, ∂, и ∂, , двух сигналов предсказания посредством прямого вычисления разности между двумя соседними дискретными отсчетами, т.е.

где - это значение дискретного отсчета в координатах сигнала предсказания в списке , k=0,1, а shift1 вычисляется на основе битовой глубины яркости (bitDepth), как

shift1=max(6, bitDepth-6).

Затем авто- и взаимная корреляция градиентов , , , и вычисляются как

где:

где представляет собой окно 6×6 вокруг подблока 4×4, а значения и устанавливаются равными min(1, bitDepth-11) и min(4, bitDepth-8), соответственно.

Уточнение движения затем выводится с использованием условий взаимной и автокорреляции, используя следующее:

где , , . - это функция округления до ближайшего целого в меньшую сторону, и .

На основе уточнения движения и градиентов для каждого дискретного отсчета в подблоке 4×4 вычисляется следующая регулировка:

Наконец, дискретные отсчеты BDOF CU вычисляются посредством корректировки дискретных отсчетов бипредсказания следующим образом:

Эти значения выбраны таким образом, чтобы множители в процессе BDOF не превышали 15 бит, а максимальная разрядность промежуточных параметров в процессе BDOF сохранялась в пределах 32 бит.

Чтобы получить значения градиента, необходимо сгенерировать некоторые прогнозные дискретные отсчеты в списке (k=0,1) за пределами границ текущего CU. Как показано на Фиг.6, BDOF в VTM5 использует одну расширенную строку/столбец вокруг границ CU. Чтобы управлять вычислительной сложностью создания дискретных отсчетов предсказания за пределами границ, дискретные отсчеты предсказания в расширенной области (белые позиции) генерируются посредством взятия опорных дискретных отсчетов в соседних целочисленных позициях (с использованием операции floor() (округления до ближайшего целого в меньшую сторону) над координатами) напрямую без интерполяции, а обычный интерполяционный фильтр компенсации движения с 8-отводами используется для генерации дискретных отсчетов предсказания в CU (позиции серого). Эти расширенные значения дискретного отсчета используются только при вычислении градиента. Для остальных этапов в процессе BDOF, если требуются какие-либо значения дискретного отсчета и градиента за пределами границ CU, они дополняются (т.е. повторяются) от их ближайших соседей.

Когда ширина и/или высота CU больше, чем 16 дискретных отсчетов яркости, то он будет разделена на подблоки с шириной и/или высотой, равной 16 дискретным отсчетам яркости, и границы подблоков будут обрабатываться как границы CU в процесс BDOF. Максимальный размер блока для процесса BDOF ограничен 16×16.

Для каждого подблока процесс BDOF может быть пропущен. Когда SAD между начальными дискретными отсчетами предсказания L0 и L1 меньше порогового значения, процесс BDOF не применяется к подблоку. Пороговое значение установлено равным (8*W*(H>>1), где W указывает ширину подблока, а H указывает высоту подблока. Чтобы избежать дополнительной сложности вычисления SAD, здесь повторно используется SAD между начальными дискретными отсчетами предсказания L0 и L1, вычисленными в процессе DVMR.

Если BCW задействован для текущего блока, т.е. весовой индекс BCW указывает на неравный вес, то двунаправленный оптический поток отключается. Аналогично, если WP включен для текущего блока, то есть luma_weight_lx_flag равен 1 для любого из двух опорных снимков, то BDOF также отключается. Когда CU кодируется в симметричном режиме MVD, BDOF также отключается.

Уточнение вектора движения на стороне декодера (DMVR)

Чтобы повысить точность MV режима слияния, в VVC применяется основанное на двустороннем согласовании уточнение вектора движения на стороне декодера. В операции бипредсказания уточненный MV ищется вокруг начальных MV в списке L0 опорных снимков и списке L1 опорных снимков. Способ BM вычисляет искажение между двумя потенциально подходящими блоками в списке L0 и списке L1 опорных снимков. Как показано на Фиг.7, вычисляется SAD между красными блоками на основе каждого потенциально подходящего MV вокруг начального MV. Потенциально подходящий MV с наименьшим SAD становится уточненным MV и используется для генерации сигнала с бипредсказанием. В VVC DMVR может применяться для CU, которые кодируются со следующими режимами и функциями:

- Режим слияния на уровне CU с бипредсказанием MV

- Один опорный снимок находится в прошлом, а другой опорный снимок находится в будущем по отношению к текущему снимку

- Расстояния (т.е. разность POC) от двух опорных снимков до текущего снимка одинаковы

- Оба опорных снимка являются краткосрочными опорными снимками.

- CU имеет более 64 дискретных отсчетов яркости

- И высота CU, и ширина CU больше или равны 8 дискретным отсчетам яркости

- Индекс веса BCW указывает на одинаковый вес

- WP не задействован для текущего блока

- Режим CIIP не используется для текущего блока

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

Дополнительные функции DMVR упомянуты в следующих подразделах.

В VTM5 DMVR может применяться для блоков CU, кодированных со следующими режимами и функциями:

Режим слияния на уровне CU с бипредсказанием MV

Один опорный снимок находится в прошлом, а другой опорный снимок находится в будущем по отношению к текущему снимку.

Расстояния (т.е. разность POC) от обоих опорных снимков до текущего снимка одинаковы

CU имеет более 64 дискретных отсчетов яркости

И высота CU, и ширина CU больше или равны 8 дискретным отсчетам яркости.

Индекс веса BCW указывает на равный вес

WP не включен для текущего блока

Схема поиска

В DVMR точки поиска окружают начальный MV, а смещение MV подчиняется правилу зеркального отображения разности MV. Другими словами, любые точки, которые проверяются DMVR и обозначены потенциально подходящей парой MV (MV0, MV1), подчиняются следующим двум уравнениям:

(3-6)

(3-7)

Где представляет собой смещение уточнения между начальным MV и уточненным MV в одном из опорных снимков. Диапазон уточняющего поиска - это два целочисленных дискретных отсчета яркости из начального MV. Поиск включает в себя этап поиска смещения целочисленного дискретного отсчета и этап уточнения дробного дискретного отсчета.

Полный поиск по 25 точкам применяется для поиска смещения целочисленного дискретного отсчета. Сначала рассчитывается SAD начальной пары MV. Если SAD начальной пары MV меньше порогового значения, этап целочисленного дискретного отсчета DMVR завершается. В противном случае SAD оставшихся 24 точек вычисляются и проверяются в порядке растрового сканирования. Точка с наименьшим значением SAD выбирается как результат этапа поиска смещения целочисленного дискретного отсчета. Чтобы уменьшить штраф, связанный с неопределенностью уточнения DMVR, предлагается отдавать предпочтение начальному MV во время процесса DMVR. SAD между опорными блоками, на которые ссылаются начальные потенциально подходящие MV, уменьшается на 1/4 от значения SAD.

За поиском целочисленного дискретного отсчета следует дробное уточнение дискретного отсчета. Чтобы сохранить сложность вычислений, дробное уточнение дискретного отсчета выводится с использованием параметрического уравнения поверхности ошибок вместо дополнительного поиска со сравнением SAD. Уточнение дробного дискретного отсчета вызывается условно на основе результатов этапа поиска целочисленного дискретного отсчета. Когда этап поиска целочисленного дискретного отсчета заканчивается с центром, имеющим наименьшее значение SAD либо в первой итерации, либо во второй итерации поиска, дополнительно применяется дробное уточнение дискретного отсчета.

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

(3-8)

где ( соответствует дробной позиции с наименьшими затратами, а C соответствует минимальному значению затрат. Решая приведенные выше уравнения с использованием стоимости пяти точек поиска, ( вычисляется как:

(3-9)

(3-10)

Значения и автоматически ограничиваются диапазоном от -8 до 8, поскольку все значения затрат положительны, а наименьшее значение представляет собой . Это соответствует смещению на половину перекоса с точностью MV в 1/16 пикселя в VVC. Вычисленное дробное ( добавляется к целочисленному уточнению расстояния MV, чтобы получить дельту MV уточнения с точностью до субпикселя.

Билинейная интерполяция и заполнение дискретных отсчетов

В VVC разрешение MV составляет 1/16 дискретных отсчетов яркости. Дискретные отсчеты в дробной позиции интерполируются с использованием 8-отвтодного интерполяционного фильтра. В DMVR точки поиска окружают начальный дробный по пикселю MV с целочисленным смещением дискретного отсчета, поэтому для процесса поиска DMVR необходимо интерполировать дискретные отсчеты этих дробных позиций. Чтобы уменьшить сложность вычислений, используется фильтр билинейной интерполяции для генерации дробных дискретных отсчетов для процесса поиска в DMVR. Другой важный эффект заключается в том, что при использовании билинейного фильтра с диапазоном поиска из 2 дискретных отсчетов DVMR не получает доступа к большему количеству опорных дискретных отсчетов по сравнению с обычным процессом компенсации движения. После того, как уточненный MV достигается с помощью процесса поиска DMVR, для генерации окончательного прогноза применяется обычный 8-отводный интерполяционный фильтр. Чтобы не получить доступ к большему количеству опорных дискретных отсчетов для обычного процесса MC, дискретные отсчеты, которые не нужны для процесса интерполяции на основе начального MV, но необходимы для процесса интерполяции на основе уточненного MV, будут дополнены этими доступными дискретными отсчетами.

Максимальный блок обработки DMVR

Когда ширина и/или высота CU больше 16 дискретных отсчетов яркости, он будет дополнительно разделен на подблоки с шириной и/или высотой, равной 16 дискретным отсчетам яркости. Максимальный размер блока для процесса поиска DMVR ограничен 16×16.

И DMVR, и BDOF являются инструментами кодирования, у которых нет флага уровня единичного блока кодирования, чтобы явно задействовать или отключать их. Набор условий задействования (например, является ли единичный блок кодирования единичным блоком кодирования (CU) режима слияния, размеры единичного блока кодирования, выполнен ли единичный блок кодирования с бипредсказанием, равны и противоположны ли разности в порядковом номере снимка между текущим снимком и двумя опорными и т.д.) используются для задействования применения DMVR и BDOF. Поскольку построение списка слияния и проверка этих условий невозможны во время анализа (парсинга), сигнализация флага задействования/отключения после оценки этих условий невозможна.

И DMVR, и BDOF имеют неявное предположение, что дельта вектора движения в случае DMVR и оптический поток в случае BDOF равны и противоположны между текущим снимком и двумя опорными по обе стороны от текущего снимка. В некоторых случаях это предположение может быть неверным. Например, когда траектория движения не является линейной, или когда две сцены смешиваются, каждая со своей собственной моделью движения, или в синтетической сцене с нелинейным переходом, предположения могут не сработать. В таких случаях принудительное выполнение DMVR или BDOF может привести к потере кодирования по сравнению с их невыполнением.

Хотя есть флаги для включения DMVR или BDOF на уровне набора параметров последовательности (SPS), последовательность с очень разными типами содержимого и эффектами редактирования и наложениями может выиграть от DMVR и BDOF во многих частях и, следовательно, отключение на уровне последовательности только из-за некоторых сцен в последовательности не обеспечит улучшения кодирования, возможного с DMVR и BDOF.

Предлагаемое изобретение

В настоящем изобретении предлагается флаг с более высокой степенью детализации, чем набор параметров последовательности для условного отключения MVR, когда MVR задействован на более высоком уровне детализации (например, на уровне SPS для PPS, на уровне SPS/PPS для сегмента и т.д.). Точно так же изобретение предлагает флаг с более высокой степенью детализации, чем набор параметров последовательности для условного отключения BDOF, когда BDOF задействован с более высокой степенью детализации.

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

Набор параметров последовательности (SPS): Синтаксическая структура, содержащая синтаксические элементы, которые применяются к нулевому количеству или более полным CLVS, как определено содержимым синтаксического элемента, найденного в PPS, на который ссылается синтаксический элемент, найденный в каждом заголовке снимка.

заголовок сегмента: Часть закодированного сегмента, содержащая элементы данных, относящиеся ко всем клеткам или строкам CTU в клетке, представленной в сегменте.

Синтаксический элемент: Элемент данных, представленный в битовом потоке.

синтаксическая структура: нулевое количество или более синтаксических элементов присутствуют вместе в битовом потоке в указанном порядке.

заголовок снимка (PH): Синтаксическая структура, содержащая синтаксические элементы, которые применяются ко всем сегментам кодированного снимка.

набор параметров снимка (PPS): Синтаксическая структура, содержащая синтаксические элементы, которые применяются к нулевому количеству или более целым кодированным снимкам, как определено синтаксическим элементом, найденным в каждом заголовке снимка.

видеопоследовательность кодированного слоя (CLVS): Последовательность из нескольких PU с одинаковым значением nuh_layer_id, которая состоит в порядке декодирования из PU CLVSS, за которой следует нулевое количество или более PU, которые не являются PU CLVSS, включая все последующие PU до, но не включая любые последующие PU, которые являются PU CLVSS.

начало видеопоследовательности кодированного слоя (CLVSS) PU: PU, в котором закодированный снимок является снимком CLVSS.

единичный блок снимка (PU): Набор единичных блоков NAL, которые связаны друг с другом согласно заданному правилу классификации, являются последовательными в порядке декодирования и содержат ровно один кодированный снимок.

1-ый вариант осуществления

В этом варианте осуществления предлагается флаг уровня набора параметров снимка (PPS) (pps_disable_dmvr_flag) для отключения MVR всякий раз, когда MVR задействован на уровне SPS (то есть sps_dmvr_enabled_flag установлен в 1 на уровне SPS).

Синтаксический элемент кодируется в PPS следующим образом:

если (sps_dmvr_enabled_flag)

pps_disable_dmvr_flag

Он кодируется как 1-битовый флаг в битовом потоке.

Семантика pps_disable_dmvr_flag следующая:

Когда pps_disable_dmvr_flag декодируется как 1 в наборе параметров снимка с идентификатором pps_picture_parameter_set_id, сегменты, использующие pps_picture_parameter_set_id, отключат MVR (т.е. уточнение вектора движения на стороне декодера не должно выполняться для обычного единичного блока кодирования режима слияния). Когда sps_dmvr_enabled_flag равен 1 и pps_disable_dmvr_flag декодируется как 0, сегменты, которые используют pps_picture_parameter_set_id, задействуют MVR (т.е. уточнение вектора движения на стороне декодера должно выполняться для подблоков обычного единичного блока кодирования режима слияния).

Аналогично, флаг уровня набора параметров снимка (PPS), pps_disable_bdof_flag, предлагается для отключения BDOF всякий раз, когда BDOF задействован на уровне SPS (то есть sps_bdof_enabled_flag установлен в 1 на уровне SPS).

Синтаксический элемент кодируется в PPS следующим образом:

if (sps_bdof_enabled_flag)

pps_disable_bdof_flag

Он кодируется как 1-битовый флаг в битовом потоке.

Семантика pps_disable_bdof_flag следующая:

Когда pps_disable_bdof_flag декодируется как 1 в наборе параметров снимка с идентификатором pps_picture_parameter_set_id, сегменты, которые используют pps_picture_parameter_set_id, отключат BDOF (т.е. интер-предсказание двунаправленного оптического потока не должно выполняться для обычного единичного блока кодирования в режиме слияния). Когда sps_bdof_enabled_flag равен 1, а pps_disable_bdof_flag декодируется как 0, сегменты, использующие pps_picture_parameter_set_id, задействуют BDOF (т.е. интер-предсказание двустороннего оптического потока должно выполняться для подблоков обычного единичного блока кодирования в режиме слияния).

2-ой вариант осуществления

В этом варианте осуществления предлагается флаг уровня заголовка сегмента slice_disable_dmvr_flag для отключения MVR всякий раз, когда MVR задействован на SPS (то есть sps_dmvr_enabled_flag установлен в 1 на уровне SPS).

Синтаксический элемент кодируется в заголовке сегмента следующим образом:

если (sps_dmvr_enabled_flag)

slice_disable_dmvr_flag

Он кодируется как 1-битовый флаг в битовом потоке.

Семантика slice_disable_dmvr_flag следующая:

Когда slice_disable_dmvr_flag декодируется как 1 в заголовке сегмента, где сегмент содержит группу клеток или группу строк CTU в клетке, единичные блоки кодирования в сегменте отключат MVR (т.е. уточнение вектора движения на стороне декодера не должно выполняться для обычного единичного блока кодирования режима слияния). Когда sps_dmvr_enabled_flag равен 1 и slice_disable_dmvr_flag декодируется как 0, единичные блоки кодирования в сегменте задействуют MVR (т.е. уточнение вектора движения на стороне декодера должно выполняться для подблоков обычного единичного блока кодирования режима слияния).

Аналогично, флаг уровня сегмента slice_disable_bdof_flag предлагается для отключения BDOF всякий раз, когда BDOF задействован на уровне SPS (то есть sps_bdof_enabled_flag установлен в 1 на уровне SPS).

Синтаксический элемент кодируется в PPS следующим образом:

if (sps_bdof_enabled_flag)

slice_disable_bdof_flag

Он кодируется как 1-битовый флаг в битовом потоке.

Семантика slice_disable_bdof_flag следующая:

Когда slice_disable_bdof_flag декодируется как 1 в заголовке сегмента, где сегмент содержит либо группу клеток, либо группу строк CTU в клетке, единичные блоки кодирования в сегменте отключат BDOF (т.е. интер-предсказание двунаправленного оптического потока не должно выполняется для обычного единичные блока кодирования режима слияния). Когда sps_bdof_enabled_flag равен 1 и slice_disable_bdof_flag декодирован как 0, единичные блоки кодирования в сегменте активируют BDOF (т.е. интер-предсказание двустороннего оптического потока должно выполняться для подблоков обычного единичные блока кодирования в режиме слияния).

3-ий вариант осуществления

В этом варианте осуществления кодер использует способ обнаружения присутствия содержимого экрана в текущем кадре видео и использует его для установки pps_disable_dmvr_flag, который был описан в 1-ом варианте осуществления, равным 1 или slice_disable_dmvr_flag, который был описан во 2-ом варианте осуществления, в 1 для данного сегмента или единичного блок доступа соответственно.

В одном конкретном варианте осуществления N-битовое хеш-значение вычисляется для блоков из 4×4 дискретных отсчетов яркости, начиная со всех позиций текущего снимка или сегмента. Создается N-битная хеш-таблица, в которой каждая запись таблицы содержит счетчик блоков 4×4, которые приняли конкретное N-битное хеш-значение. Для всех записей хэш-таблицы вычисляется сумма всех записей со значением счетчика больше 1. Если эта сумма превышает заранее определенное пороговое значение (где пороговое значение обычно вычисляется как конкретный процент от общего количества позиций дискретных отсчетов), текущий кадр или сегмент объявляется как содержащий содержимое экрана. Используя этот предварительный анализ текущего кадра или сегмента и вывод о том, что он имеет содержимое экрана в, по меньшей мере, конкретной процентной области кадра, pps_disable_dmvr_flag устанавливается в 1 для текущего кадра или slice_disable_dmvr_flag устанавливается в 1 для текущего сегмента. И текущий кадр или текущий сегмент кодируются для получения закодированных данных для текущего кадра или текущего сегмента, исходя из заключения о том, что есть некоторое содержимое экрана в, по меньшей мере, конкретной процентной области текущего кадра или текущего сегмента, или на основе значения pps_disable_dmvr_flag или slice_disable_dmvr_flag.

4-ый вариант осуществления

В этом варианте осуществления кодер выполняет основанное на сумме абсолютных преобразованных разностей (SATD) вычисление затрат для остатков предсказания, полученных с и без DMVR. Основанные на SATD затраты с DMVR и без него для единичных блоков кодирования после рекурсии накапливаются отдельно по всем единичным блокам кодирования текущего кадра. Когда накопленные затраты с DMVR выше, чем накопленные затраты без DMVR, принимается решение отключить DMVR посредством установки предложенного pps_disable_dmvr_flag в 1 для текущего кадра или посредством установки предлагаемого pps_disable_dmvr_flag в 1 для текущего кадра посредством его перекодирования, или посредством установки pps_disable_dmvr_flag в 1 для последующих кадров в порядке кодирования, пока кодер либо не обнаружит изменение сцены, либо не закодирует интра-снимок. И текущий кадр или последующий снимок кодируется для получения кодированных данных для текущего кадра или последующего снимка на основании заключения о том, что накопленные затраты с DMVR выше, чем накопленные затраты без DMVR, или на основе значения pps_disable_dmvr_flag для текущего кадра или последующего снимка. Термин перекодирование фактически относится ко второму проходу кодирования текущего кадра. DMVR был задействован изначально во время первого прохода текущего кадра после накопления затрат с DMVR и без него (где с DMVR нормативно требуется, когда текущий CU удовлетворяет условиям для применения DMVR). Теперь, если затраты без DMVR лучше на уровне кадра, то теперь весь кадр снова кодируется с отключенным DMVR на уровне PPS.

В частности, предоставляется способ кодирования битового видеопотока, содержащего кодированные данные для множества снимков, реализуемый в устройстве кодирования, как показано на Фиг.8. Определяется 1010, задействовано ли основанное на уточнении вектора движения декодера (DMVR) интер-бипредсказание для по меньшей мере одной области текущего снимка из множества снимков. На основе результата процесса определения устанавливается 1020 значение флага отключения (например, 1-битного флага) для DMVR на более низком иерархическом уровне синтаксической структуры, чем уровень набора параметров последовательности (SPS). Значение флага отключения указывает, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка.

Кроме того, предоставляется способ кодирования битового видеопотока, содержащего кодированные данные для множества снимков, реализуемый в устройстве кодирования, как показано на Фиг.9. Способ содержит определение 1110, задействовано ли интер-предсказание двунаправленного оптического потока (BDOF) для по меньшей мере одной области текущего снимка из множества снимков. Кроме того, способ содержит установку 1120 значения флага отключения (например, 1-битного флага) для BDOF на более низком иерархическом уровне синтаксической структуры, чем уровень набора параметров последовательности (SPS), на основе результата определения того, задействовано ли интер-предсказание BDOF, при этом значение флага отключения указывает, задействовано ли интер-предсказание BDOF для по меньшей мере одной области текущего снимка.

Точно так же предоставляются способы декодирования битового видеопотока. В частности, предоставляется способ декодирования битового видеопотока, включающего в себя кодированные данные для множества снимков, реализуемый устройством декодирования, как показано на Фиг.10. Способ декодирования согласно этому примеру содержит анализ 1210 флага задействования для уточнения вектора движения декодера (DMVR) из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли основанное на DMVR интер-бипредсказание для множества снимков, связанных с набором параметров последовательности. Кроме того, способ декодирования согласно этому примеру содержит анализ 1220 флага отключения для DMVR из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, причем текущий снимок принадлежит множеству снимков. Кроме того, способ декодирования согласно этому примеру содержит выполнение 1230 основанное на DMVR интер-бипредсказание для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что задействовано основанное на DMVR интер-бипредсказание.

Предоставляется аналогичная процедура в отношении задействования или отключения обработки двунаправленного оптического потока, а именно, способ декодирования битового видеопотока, битовый видеопоток включает в себя кодированные данные для множества снимков, реализуемый устройством декодирования, как показано на Фиг.11. Способ декодирования в соответствии с этим примером содержит анализ 1310 флага задействования для двунаправленного оптического потока (BDOF) из набора параметров последовательности битового видеопотока, при этом флаг задействования для BDOF указывает, задействовано ли интер-предсказание BDOF для множества снимков, связанных с набором параметров последовательности, и анализ 1320 флага отключения для BDOF из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока. Флаг отключения для BDOF указывает, отключено ли или нет интер-предсказание BDOF для по меньшей мере одной области текущего снимка, ассоциированного с синтаксической структурой, при этом текущий снимок принадлежит множеству снимков. Согласно этому примеру, способ дополнительно содержит выполнение 1330 интер-предсказания BDOF для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что интер-предсказание BDOF задействовано.

В этих способах флаги отключения могут быть установлены на уровне PPS или на уровне заголовка сегмента. Эти способы могут быть легко реализованы в устройствах, описанных выше со ссылкой на Фиг.1a-5, и, где это уместно, в одном из устройств, описанных ниже. Каждое из устройств, описанных ниже со ссылкой на фигуры 12-15, может быть объединено с одним или несколькими другими устройствами или может содержать или включаться в одно или более других устройств, где это необходимо.

На фиг.12 показано устройство 1400 для использования в кодере изображений, сконфигурированное для кодирования битового видеопотока, содержащего кодированные данные для множества снимков. Устройство 1400 согласно показанному примеру содержит модуль 1410 определения уточнения вектора движения декодера (DMVR) выполненный с возможностью определения, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка из множества снимков. Кроме того, устройство 1400 содержит модуль 1420 установки флага DMVR, выполненный с возможностью установки значения флага отключения для DMVR на более низком иерархическом уровне синтаксической структуры (например, уровне PPS или уровне заголовка сегмента), чем уровень набора параметров последовательности (SPS) на основе результата определения, задействовано ли основанное на DMVR интер-бипредсказание, значение флага отключения указывает, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка. Флаг задействования для DMVR на уровне SPS, при этом флаг задействования указывает, задействовано ли основанное на DMVR интер-бипредсказание для множества снимков, также может быть установлен модулем 1420 установки флага или другим модулем установки флага устройства 1400.

Точно так же предоставляется устройство 1500 для использования в кодере изображений, сконфигурированное для кодирования битового видеопотока, содержащего кодированные данные для множества снимков, как показано на Фиг.13. Устройство 1500 содержит модуль 1510 определения интер-предсказания двустороннего оптического потока (BDOF), выполненный с возможностью определения, задействовано ли интер-предсказание BDOF для по меньшей мере одной области текущего снимка из множества снимков. Кроме того, устройство 1500 содержит модуль 1520 установки флага BDOF, выполненный с возможностью установки значения флага отключения для BDOF на более низком иерархическом уровне синтаксической структуры (например, уровне PPS или уровне заголовка сегмента), чем уровень набора параметров последовательности (SPS) на основе результата определения, задействовано ли интер-предсказание BDOF, при этом значение флага отключения указывает, задействовано ли интер-предсказание BDOF для по меньшей мере одной области текущего снимка. Флаг задействования для BDOF на уровне SPS, при этом флаг задействования указывает, задействовано ли основанное на DMVR интер-бипредсказание для множества снимков, также может быть установлен модулем 1520 установки флага или другим модулем установки флага устройства 1500.

Согласно другому варианту осуществления предоставляется устройство 1600 для использования в декодере изображений, сконфигурированное для декодирования битового видеопотока, содержащего кодированные данные для множества снимков, как показано на Фиг.14. Устройство 1600 содержит первый модуль 1610 анализа, выполненный с возможностью анализа флага задействования для уточнения вектора движения декодера (DMVR) из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли основанное на DMVR интер-бипредсказание для множества снимков, связанных с набором параметров последовательности. Кроме того, устройство 1600 содержит второй модуль 1620 анализа, выполненный с возможностью анализа флага отключения для DMVR из синтаксической структуры более низкого иерархического уровня синтаксической структуры (например, уровня PPS или уровня заголовка сегмента), чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, где текущий снимок принадлежит множеству снимков. Кроме того, устройство 1600 содержит модуль 1630 выполнения DMVR, выполненный с возможностью выполнения основанного на DMVR интер-бипредсказания для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда по меньшей мере одно предварительно заданное условие выполняется, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что задействовано основанное на DMVR интер-бипредсказание.

Точно так же предоставляется устройство 1700 для использования в декодере изображений, сконфигурированное для декодирования битового видеопотока, содержащего кодированные данные для множества снимков, как показано на Фиг.15. Устройство 1700 содержит первый модуль 1710 анализа, выполненный с возможностью анализа флага задействования для двунаправленного оптического потока (BDOF) из набора параметров последовательности битового видеопотока, при этом флаг задействования для BDOF указывает, задействовано ли или нет интер-предсказание BDOF для множества снимков, связанных с набором параметров последовательности. Кроме того, устройство 1700 содержит второй модуль 1720 анализа, выполненный с возможностью анализа флага отключения для BDOF из синтаксической структуры более низкого иерархического уровня синтаксической структуры (например, уровня PPS или уровня заголовка сегмента), чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для BDOF указывает, отключено ли или нет интер-предсказание BDOF для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, при этом текущий снимок принадлежит множеству снимков. Кроме того, устройство 1700 содержит модуль 1730 выполнения BDOF, выполненный с возможностью выполнения интер-предсказания BDOF для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что интер-предсказание BDOF задействовано.

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

Фиг.16 - это блок-схема, показывающая систему 3100 предоставления контента для реализации службы распространения контента. Эта система 3100 предоставления контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и, в необязательном порядке, включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, помимо прочего, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любое их сочетание и т.п.

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает кодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, помимо прочего, камеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференцсвязи, PDA, установленное на транспортном средстве устройство или сочетание любого из них или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет кодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106.

В системе 3100 предоставления контента терминальное устройство 310 принимает и воспроизводит кодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, установленное в транспортном средстве устройство 3124, или их сочетание, или подобное, способное декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, как описано выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения обработки декодирования звука.

Для терминального устройства с дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122 или установленное в транспортном средстве устройство 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, например STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения, в нем устанавливается контакт с внешним дисплеем 3126 для приема и отображения декодированных данных.

Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования снимка или устройство декодирования снимка, как показано в вышеупомянутых вариантах осуществления.

Фиг.17 - схема, показывающая структуру примера терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, модуль 3202 обработки протокола анализирует протокол передачи потока. Протокол включает в себя, помимо прочего, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP), или любое их сочетание или тому подобное.

После того, как модуль 3202 обработки протокола обработает поток, создается файл потока. Файл выводится в модуль 3204 демультиплексирования. Модуль 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.

Посредством обработки демультиплексирования генерируются элементарный поток (ES) видео, ES аудио и, в необязательном порядке, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерации видеокадра и подает эти данные в модуль 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерации аудиокадра и подает эти данные в модуль 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на Фиг.17) перед подачей его в модуль 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на Фиг.17) перед подачей его в модуль 3212 синхронизации.

Модуль 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, модуль 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может закодироваться в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки самого потока данных.

Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.

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

Кроме того, предусмотрены следующие варианты осуществления.

1. Способ декодирования битового видеопотока, реализуемый устройством декодирования, в котором битовый видеопоток включает в себя кодированные данные для множества снимков, способ декодирования содержит:

Анализ флага задействования для основанного на уточнении вектора движения декодера (DMVR) интер-биредсказания из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли выполнение DMVR для множества снимков, связанных с набором параметров последовательности;

Анализ флага отключения для DMVR из набора параметров снимка битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли выполнение DMVR для текущего снимка, связанного с набором параметров снимка, при этом текущий снимок принадлежит множеству снимков;

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

2. Способ декодирования по варианту 1 осуществления, в котором способ декодирования дополнительно содержит:

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

3. Способ декодирования битового видеопотока, реализуемый устройством декодирования, в котором битовый видеопоток включает в себя кодированные данные для множества снимков, способ декодирования содержит:

Анализ флага задействования для двунаправленного оптического потока (BDOF) из набора параметров последовательности битового видеопотока, при этом флаг задействования для BDOF указывает, задействовано ли выполнение BDOF для множества снимков, связанных с набором параметров последовательности;

Анализ флага отключения для BDOF из набора параметров снимка битового видеопотока, при этом флаг отключения для BDOF указывает, отключен ли BDOF для выполнения для текущего снимка, связанного с набором параметров снимка, при этом текущий снимок принадлежит множеству снимков;

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

4. Способ декодирования по варианту 3 осуществления, в котором способ декодирования дополнительно содержит:

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

5. Способ декодирования битового видеопотока, реализуемый устройством декодирования, в котором битовый видеопоток включает в себя кодированные данные для множества снимков, способ декодирования содержит:

Анализ флага задействования для основанного на уточнении вектора движения декодера (DMVR) интер-бипредсказания из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли выполнение DMVR для множества снимков, связанных с набором параметров последовательности;

Анализ флага отключения для DMVR из заголовка сегмента битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли выполнение DMVR для текущего сегмента, связанного с заголовком сегмента, при этом текущий сегмент принадлежит текущему снимку в пределах множество снимков;

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

6. Способ декодирования по варианту 5 осуществления, в котором способ декодирования дополнительно содержит:

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

7. Способ декодирования битового видеопотока, реализуемого устройством декодирования, в котором битовый видеопоток включает в себя кодированные данные для множества снимков, способ декодирования содержит:

Анализ флага задействования для двунаправленного оптического потока (BDOF) из набора параметров последовательности битового видеопотока, при этом флаг задействования для BDOF указывает, задействовано ли выполнение BDOF для множества снимков, связанных с набором параметров последовательности;

Анализ флага отключения для BDOF из заголовка сегмента битового видеопотока, при этом флаг отключения для BDOF указывает, отключен ли BDOF для выполнения для текущего сегмента, связанного с заголовком сегмента, при этом текущий сегмент принадлежит текущему снимку в пределах множества снимков;

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

8. Способ декодирования по варианту 7 осуществления, в котором способ декодирования дополнительно содержит:

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

Преимущества предлагаемого изобретения:

Предлагаемый уровень набора параметров снимка или флаги отключения уровня сегмента для DMVR или BDOF обеспечивают возможность ненормативным алгоритмам анализировать содержимое (контент), чтобы увидеть, выполняются ли предположения, лежащие в основе DMVR или BDOF, и, соответственно, использовать предложенный флаг для отключения DMVR или BDOF. Таким образом, исключаются любые потери кодирования, возникающие при задействовании DMVR или BDOF, когда предположения не выполняются.

Математические операторы

Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и деление с действительным знаком. Правила нумерации и подсчета обычно начинаются с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.

Арифметические операторы

Следующие арифметические операторы определены следующим образом:

+ Сложение Вычитание (как оператор с двумя аргументами) или отрицание (как унарный префиксный оператор) * Умножение, в том числе матричное умножение xy Возведение в степень. Определяет x в степени y. В других контекстах такое обозначение используется в качестве надстрочного индекса, которое не следует интерпретировать в качестве возведения в степень. / Целочисленное деление с усечением результата в сторону нуля. Например, 7/4 и -7/-4 усекаются до 1, а -7/4 и 7 /-4 усекаются до -1. ÷ Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Суммирование f(i), где i принимает все целые значения от x до y включительно. x%y Операция по модулю. Остаток от деления x на y, определена только для целых чисел x и y, где x >= 0 и y > 0.

Логические операторы

Следующие логические операторы определены следующим образом:

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.

Операторы присваивания

Следующие арифметические операторы определены следующим образом:

= Оператор присваивания

++ Приращение, т.е. 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, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах счисления радиан.

Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах счисления радиан.

Ceil(x) наименьшее целое число, большее или равное x.

Clip1Y(x)=Clip3(0, (1 << BitDepthY) − 1, x)

Clip1C(x)=Clip3(0, (1 << BitDepthC) − 1, x)

Cos(x) тригонометрическая функция косинуса, работающая с аргументом x в единицах счисления радиан.

Floor(x) наибольшее целое количество, меньшее или равное x.

Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,781 281 828...).

Log2(x) логарифм x по основанию 2.

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 в единицах счисления радиан.

Порядок приоритетности операций

Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:

- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.

- Операции с одинаковым приоритетом оцениваются последовательно слева направо.

В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.

Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.

Таблица: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы)

Текстовое описание логических операций

В тексте определение логических операций, которое математически бы описывалось в следующей форме:

если(условие 0)

утверждение 0

иначе если(условие 1)

утверждение 1

...

иначе /* информативный комментарий по оставшемуся условию */

утверждение n

может быть описано следующим образом:

... как указано ниже / ... применяется следующее:

- Если условие 0, утверждение 0

- Иначе, Если условие 1, утверждение 1

- ...

-- Иначе (информативный комментарий по оставшемуся условию), утверждение n.

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

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

если(условие 0a && условие 0b)

утверждение 0

иначе если(условие 1a | | условие 1b)

утверждение 1

...

иначе

утверждение n

может быть описано следующим образом:

... как указано ниже / ... применяется следующее:

-- Если все из следующих условий истинны, утверждение 0:

- условие 0a

- условие 0b

- Иначе, если истинными являются одно или более из следующих условий, утверждение 1:

- условие 1a

- условие 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 или беспроводные технологии, такие как инфракрасный порт, радио и микроволновая связь, включены в определение носителя. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на долговременные материальные носители данных. Диск и диск, используемые здесь, включают компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом, а диски воспроизводят данные оптически с помощью лазеров. Объединения вышеперечисленного также должны быть включены в объем машиночитаемых носителей.

Инструкции могут выполняться одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые логические матрицы (FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин «процессор», используемый здесь, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации описанных здесь методик. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.

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

Похожие патенты RU2824186C2

название год авторы номер документа
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО 2020
  • Ли Гуйчунь
  • Ли Сян
  • Сюй Сяочжун
  • Лю Шань
RU2777498C1
ВИДЕОКОДЕР, ВИДЕОДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ 2019
  • Гао, Хань
  • Эсенлик, Семих
  • Чен, Цзянле
  • Котра, Ананд Меер
  • Ван, Бяо
  • Чжао, Чжицзе
RU2793802C2
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAR И HE-IRAR В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2822714C1
ОТКЛОНЕНИЕ НЕИСПОЛЬЗУЕМЫХ СЛОЕВ В МНОГОСЛОЙНЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2823559C1
ИЗВЛЕЧЕНИЕ БИТОВОГО ПОТОКА ВИДЕОКОДИРОВАНИЯ С ПОМОЩЬЮ СИГНАЛИЗАЦИИ ИДЕНТИФИКАТОРОВ 2020
  • Ван, Е-Куй
  • Хендри, Фну
RU2819291C2
УТОЧНЕНИЕ ПРЕДСКАЗАНИЯ НА ОСНОВЕ ГРАДИЕНТА ДЛЯ КОДИРОВАНИЯ ВИДЕО 2020
  • Хуан, Хань
  • Чиэнь, Вэй-Цзюн
  • Карчевич, Марта
RU2817298C2
Способ и устройство для видеокодирования 2020
  • Ли Гуйчунь
  • Ли Сян
  • Сюй Сяочжун
  • Лю Шань
RU2789146C1
СПОСОБ И УСТРОЙСТВО ДЛЯ ХРАНЕНИЯ ИНФОРМАЦИИ О ДВИЖЕНИИ 2023
  • Гао, Хань
  • Эсенлик, Семих
  • Алшина, Елена Александровна
  • Ван, Бяо
  • Котра, Ананд, Мехер
RU2815734C1
ЗЕРКАЛЬНОЕ ОТОБРАЖЕНИЕ БЛОКОВ И РЕЖИМ ПРОПУСКА В ИНТРА-ОСНОВАННОМ НА КОПИИ БЛОКА ПРЕДСКАЗАНИИ 2014
  • Ли Бинь
  • Сюй Цзичжэн
  • У Фэн
RU2657210C2
УСТРОЙСТВО ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, СПОСОБ ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, ПРОГРАММА ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, УСТРОЙСТВО КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, СПОСОБ КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ И ПРОГРАММА КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ 2019
  • Фукусима Сигеру
  • Накамура Хироя
  • Сакадзуме Сатору
  • Кумакура Тору
  • Курасиге Хироюки
  • Такехара Хидеки
RU2779930C2

Иллюстрации к изобретению RU 2 824 186 C2

Реферат патента 2024 года КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ

Изобретение относится к области обработки изображений. Технический результат заключается в повышении эффективности кодирования. Способ содержит анализ флага задействования для уточнения вектора движения декодера (DMVR) из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли основанное на DMVR интер-бипредсказание для множества снимков, связанных с набором параметров последовательности, анализ флага отключения для DMVR из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка, связанного с синтаксической структурой, при этом текущий снимок принадлежит множеству снимков, и выполнение основанного на DMVR интер-бипредсказания для текущего блока внутри по меньшей мере одной области текущего снимка для получения предсказанных значений дискретных отсчетов текущего блока, когда выполнено по меньшей мере одно предварительно заданное условие, и при этом по меньшей мере одно предварительно заданное условие содержит то, что проанализированное значение флага отключения указывает, что основанное на DMVR интер-бипредсказание задействовано для по меньшей мере одной области текущего снимка. 9 н. и 38 з.п ф-лы, 18 ил.

Формула изобретения RU 2 824 186 C2

1. Способ кодирования битового видеопотока, содержащего кодированные данные для множества снимков, реализуемый в устройстве кодирования, при этом способ содержит этапы, на которых:

определяют, задействовано ли основанное на уточнении вектора движения декодера (DMVR) интер-бипредсказание для по меньшей мере одной области текущего снимка из множества снимков;

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

2. Способ по п.1, в котором упомянутая по меньшей мере одна область текущего снимка является текущим снимком, а флаг отключения установлен на уровне набора параметров снимка (PPS).

3. Способ по п.1, в котором упомянутая по меньшей мере одна область текущего снимка является сегментом текущего снимка, а флаг отключения установлен на уровне заголовка сегмента.

4. Способ по любому из предшествующих пунктов, в котором определяют, что основанное на DMVR интер-бипредсказание отключено, когда выполнено по меньшей мере одно предварительно заданное условие.

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

6. Способ по п.4 или 5, в котором определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, содержит этап, на котором определяют, присутствует ли содержимое экрана в по меньшей мере одной области текущего снимка, при этом по меньшей мере одно предварительно заданное условие содержит то, что определяется, что содержимое экрана присутствует в по меньшей мере одной области текущего снимка.

7. Способ по п.6, в котором определение того, присутствует ли содержимое экрана в по меньшей мере одной области текущего снимка, содержит этапы, на которых:

вычисляют N-битовые хеш-значения для блоков по меньшей мере одной области текущего снимка, начиная с каждого из M дискретных отсчетов по меньшей мере одной области текущего снимка, соответственно, где N, M и K являются целочисленными значениями;

осуществляют построение хеш-таблицы с K записями, в которой каждая из K записей содержит значение счетчика блоков, для которых вычисляются N-битовые хеш-значения, которые равны предварительно заданному значению;

определяют сумму записей, содержащих значение счетчика больше 1;

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

8. Способ по п.7, в котором блоки состоят из 4×4 дискретных отсчетов.

9. Способ по п.7 или 8, в котором предварительно заданное пороговое значение представляет собой предварительно заданный процент от общего количества дискретных отсчетов по меньшей мере одной области текущего снимка.

10. Способ по п.2 или 3, в котором определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, содержит этапы, на которых:

вычисляют первую сумму затрат по остаткам предсказания единичных блоков кодирования по меньшей мере одной области без выполнения основанного на уточнении вектора движения декодера интер-бипредсказания;

вычисляют вторую сумму затрат по остаткам предсказания единичных блоков кодирования по меньшей мере одной области с выполнением уточнения вектора движения;

при этом определяется, что основанное на DMVR интер-бипредсказание отключено, когда вычисленная вторая сумма больше, чем вычисленная первая сумма.

11. Способ по п.10, в котором затраты являются основанными на абсолютных преобразованных разностях (SATD) затратами.

12. Способ по п.10 или 11, в котором упомянутая по меньшей мере одна область текущего снимка является текущим снимком, при этом определяется, что интер-бипредсказание DMVR не должно быть задействовано для последующих снимков текущего снимка, когда вычисленная вторая сумма больше, чем вычисленная первая сумма.

13. Способ по любому одному из предшествующих пунктов, дополнительно содержащий этап, на котором устанавливают флаг задействования для DMVR на уровне SPS, при этом флаг задействования указывает, задействовано ли основанное на DMVR интер-бипредсказание для множества снимков.

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

15. Способ декодирования битового видеопотока, реализуемый устройством декодирования, причем битовый видеопоток включает в себя кодированные данные для множества снимков, при этом способ декодирования содержит этапы, на которых:

получают, посредством анализа, флаг задействования для уточнения вектора движения декодера (DMVR) из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли или нет основанное на DMVR интер-бипредсказание для множества снимков, связанных с набором параметров последовательности;

получают, посредством анализа, флаг отключения для DMVR из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка, связанной с синтаксической структурой, при этом текущий снимок принадлежит упомянутому множеству снимков; и

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

16. Способ по п.15, в котором упомянутая по меньшей мере одна область текущего снимка является текущим снимком, при этом синтаксическая структура представляет собой набор параметров снимка (PPS).

17. Способ по п.15, в котором упомянутая по меньшей мере одна область текущего снимка является сегментом текущего снимка, при этом синтаксическая структура представляет собой заголовок сегмента.

18. Способ по п.15, в котором

основанное на DMVR интер-бипредсказание выполняется для текущего блока, когда полученное посредством анализа значение флага задействования для DMVR указывает, что DMVR задействовано; или

упомянутая по меньшей мере одна область текущего снимка является текущим снимком, причем синтаксическая структура представляет собой набор параметров снимка (PPS), и при этом основанное на DMVR интер-бипредсказание выполняется для текущего блока, когда полученное посредством анализа значение флага задействования для DMVR указывает, что DMVR задействовано; или

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

19. Способ по п.15, в котором

флаг отключения для DMVR получают посредством анализа, когда полученное посредством анализа значение флага задействования для DMVR указывает, что DMVR задействовано; или

упомянутая по меньшей мере одна область текущего снимка является текущим снимком, причем синтаксическая структура представляет собой набор параметров снимка (PPS), и при этом флаг отключения для DMVR получают посредством анализа, когда полученное посредством анализа значение флага задействования для DMVR указывает, что DMVR задействовано; или

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

20. Способ по п.15, в котором

то, получают ли посредством анализа флаг отключения для DMVR, основано на полученном посредством анализа значении флага задействования для DMVR; или

упомянутая по меньшей мере одна область текущего снимка является текущим снимком, причем синтаксическая структура представляет собой набор параметров снимка (PPS), и при этом то, получают ли посредством анализа флаг отключения для DMVR, основано на полученном посредством анализа значении флага задействования для DMVR; или

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

21. Способ по любому из пп.15-20, в котором флаг отключения является 1-битным флагом.

22. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп.1-14.

23. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп.15-21.

24. Машиночитаемый носитель, содержащий программный код для выполнения способа по любому одному из пп.1-21.

25. Декодер, содержащий:

один или более процессоров; и

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

26. Кодер, содержащий:

один или более процессоров; и

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

27. Устройство кодирования битового видеопотока, содержащего кодированные данные для множества снимков, при этом устройство содержит:

модуль определения уточнения вектора движения декодера (DMVR), выполненный с возможностью определять, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка из множества снимков;

модуль установки первого флага DMVR, выполненный с возможностью устанавливать значение флага отключения для DMVR на более низком иерархическом уровне синтаксической структуры, чем уровень набора параметров последовательности (SPS), на основе результата определения того, задействовано ли основанное на DMVR интер-бипредсказание, при этом значение флага отключения указывает, задействовано ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка.

28. Устройство по п.27, при этом упомянутая по меньшей мере одна область текущего снимка является текущим снимком, а флаг отключения установлен на уровне набора параметров снимка (PPS).

29. Устройство по п.27, при этом упомянутая по меньшей мере одна область текущего снимка является сегментом текущего снимка, а флаг отключения установлен на уровне заголовка сегмента.

30. Устройство по любому из пп.27-29, в котором модуль определения DMVR выполнен с возможностью определять то, что основанное на DMVR интер-бипредсказание отключено, когда выполнено по меньшей мере одно предварительно заданное условие.

31. Устройство по п.30, дополнительно содержащее модуль определения разностей векторов движения, выполненный с возможностью определять разности векторов движения относительно по меньшей мере одной области текущего снимка и по меньшей мере одной области опорного снимка на одной стороне по меньшей мере одной области текущего снимка и по меньшей мере одной области другого опорного снимка на другой стороне по меньшей мере одной области текущего снимка, причем по меньшей мере одно предварительно заданное условие содержит то, что эти определенные разности векторов движения не имеют ни одинаковых абсолютных значений, ни противоположных знаков.

32. Устройство по п.30 или 31, при этом определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, содержит определение того, присутствует ли содержимое экрана в, по меньшей мере, области текущего снимка, и при этом по меньшей мере одно предварительно заданное условие содержит то, что определяется, что содержимое экрана присутствует в по меньшей мере одной области текущего снимка.

33. Устройство по п.32, при этом определение того, присутствует ли содержимое экрана в по меньшей мере одной области текущего снимка, содержит:

вычисление N-битовых хеш-значений для блоков по меньшей мере одной области текущего снимка, начиная с каждого из M дискретных отсчетов по меньшей мере одной области текущего снимка, соответственно, при этом N, M и K являются целочисленными значениями;

построение хеш-таблицы с K записями, в которой каждая из K записей содержит значение счетчика блоков, для которых вычисляются N-битовые хеш-значения, которые равны предварительно заданному значению;

определение суммы записей, содержащих значение счетчика больше 1;

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

34. Устройство по п.33, при этом блоки состоят из 4×4 дискретных отсчетов.

35. Устройство по п.33 или 34, при этом предварительно заданное пороговое значение представляет собой предварительно заданный процент от общего количества дискретных отсчетов по меньшей мере одной области текущего снимка.

36. Устройство по п.28 или 29, при этом определение того, задействовано ли основанное на DMVR интер-бипредсказание для по меньшей мере одной области, содержит:

вычисление первой суммы затрат по остаткам предсказания единичных блоков кодирования по меньшей мере одной области без выполнения основанного на уточнении вектора движения декодера интер-бипредсказания;

вычисление второй суммы затрат по остаткам предсказания единичных блоков кодирования по меньшей мере одной области с выполнением уточнения вектора движения;

при этом определяется, что основанное на DMVR интер-бипредсказание отключено, когда вычисленная вторая сумма больше, чем вычисленная первая сумма.

37. Устройство по п.36, при этом затраты являются основанными на абсолютных преобразованных разностях (SATD) затратами.

38. Устройство по п.36 или 37, при этом упомянутая по меньшей мере одна область текущего снимка является текущим снимком, и при этом модуль определения DMVR выполнен с возможностью определять то, что интер-бипредсказание DMVR не должно быть задействовано для последующих снимков текущего снимка, когда вычисленная вторая сумма больше, чем вычисленная первая сумма.

39. Устройство по любому одному из пп.27-37, дополнительно содержащее модуль установки второго флага DMVR, выполненный с возможностью устанавливать значение флага задействования для DMVR на уровне SPS, причем значение флага задействования указывает, задействовано ли или нет основанное на DMVR интер-бипредсказание для множества снимков.

40. Устройство по любому одному из пп.27-39, при этом флаг отключения является 1-битным флагом.

41. Устройство декодирования битового видеопотока, содержащего кодированные данные для множества снимков, при этом устройство содержит:

первый модуль анализа, выполненный с возможностью получать, посредством анализа, флаг задействования для уточнения вектора движения декодера (DMVR) из набора параметров последовательности битового видеопотока, при этом флаг задействования для DMVR указывает, задействовано ли или нет основанное на DMVR интер-бипредсказание для множества снимков, связанных с набором параметров последовательности;

второй модуль анализа, выполненный с возможностью получать, посредством анализа, флаг отключения для DMVR из синтаксической структуры более низкого иерархического уровня синтаксической структуры, чем уровень набора параметров последовательности (SPS) битового видеопотока, при этом флаг отключения для DMVR указывает, отключено ли или нет основанное на DMVR интер-бипредсказание для по меньшей мере одной области текущего снимка, связанной с синтаксической структурой, при этом текущий снимок принадлежит упомянутому множеству снимков; и

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

42. Устройство по п.41, при этом упомянутая по меньшей мере одна область текущего снимка является текущим снимком, а синтаксическая структура представляет собой набор параметров снимка (PPS).

43. Устройство по п.41, при этом по меньшей мере одна область текущего снимка является сегментом текущего снимка, а синтаксическая структура представляет собой заголовок сегмента.

44. Устройство по п.41, в котором

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

упомянутая по меньшей мере одна область текущего снимка является текущим снимком, а синтаксическая структура представляет собой набор параметров снимка (PPS), при этом модуль выполнения DMVR выполнен с возможностью выполнять основанное на DMVR интер-бипредсказания для текущего блока, когда полученное посредством анализа значение флага задействования для DMVR указывает, что DMVR задействовано; или

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

45. Устройство по п.41, в котором

второй модуль анализа выполнен с возможностью получать или не получать посредством анализа флаг отключения для DMVR на основе полученного посредством анализа значения флага задействования для DMVR; или

упомянутая по меньшей мере одна область текущего снимка является текущим снимком, а синтаксическая структура представляет собой набор параметров снимка (PPS), при этом второй модуль анализа выполнен с возможностью получать или не получать посредством анализа флаг отключения для DMVR на основе полученного посредством анализа значения флага задействования для DMVR; или

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

46. Устройство по п.41, в котором

второй модуль анализа выполнен с возможностью получать, посредством анализа, флаг отключения для DMVR, когда полученное посредством анализа значение флага задействования для DMVR указывает, что DMVR задействовано; или

упомянутая по меньшей мере одна область текущего снимка является текущим снимком, а синтаксическая структура представляет собой набор параметров снимка (PPS), при этом второй модуль анализа выполнен с возможностью получать, посредством анализа, флаг отключения для DMVR, когда полученное посредством анализа значение флага задействования для DMVR указывает, что DMVR задействовано; или

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

47. Устройство по любому из пп.41-46, при этом флаг отключения является 1-битным флагом.

Документы, цитированные в отчете о поиске Патент 2024 года RU2824186C2

Способ получения цианистых соединений 1924
  • Климов Б.К.
SU2018A1
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз 1924
  • Подольский Л.П.
SU2014A1
Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
Способ получения цианистых соединений 1924
  • Климов Б.К.
SU2018A1
Кодер, декодер и способ кодирования и шифрования входных данных 2015
  • Кярккяйнен Туомас
RU2638639C1

RU 2 824 186 C2

Авторы

Сетураман, Срирам

Котеча, Сагар

А, Джива Радж

Эсенлик, Семих

Даты

2024-08-06Публикация

2020-06-20Подача