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

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

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

Настоящая заявка на патент притязает на приоритет международной заявки на патент PCT/EP2020/058208, поданной 24 марта 2020 г. Раскрытие вышеупомянутой заявки на патент включено в данный документ посредством ссылки в полном объеме.

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

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

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

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

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

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

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

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

В соответствии с первым аспектом изобретение относится к способу декодирования битового потока видео или снимков, реализуемому устройством декодирования, при этом битовый поток включает в себя текущий набор параметров последовательности (SPS), содержащий синтаксические элементы, которые применяются к видеопоследовательности, причем способ содержит: получение (значения) первого синтаксического элемента (например, sps_max_sublayers_minus1), используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, при этом значение первого синтаксического элемента находится в диапазоне от 0 до первого значения, при этом первое значение является значением второго синтаксического элемента (например, vps_max_sublayers_minus1), используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS), когда на второй синтаксический элемент ссылается SPS; и декодирование битового потока на основе значения первого синтаксического элемента.

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

В частности, можно полагать, что значение первого синтаксического элемента находится в диапазоне от 0 до первого значения только тогда, когда на второй синтаксический элемент ссылается SPS.

Согласно одному варианту реализации первое значение является предварительно установленным значением (например, 6), когда, в частности, только тогда, когда на второй синтаксический элемент не ссылается SPS.

Согласно одному варианту реализации второй синтаксический элемент находится в VPS.

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

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

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

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

Согласно одному варианту реализации первый синтаксический элемент находится в SPS.

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

В частности, можно полагать, что значение первого синтаксического элемента находится в диапазоне от 0 до первого значения только тогда, когда определено, что на второй синтаксический элемент ссылается SPS.

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

Согласно одному варианту реализации первое значение является предварительно установленным значением (например, 6), когда, в частности, только тогда, когда на второй синтаксический элемент не ссылается SPS.

Согласно одному варианту реализации второй синтаксический элемент находится в VPS.

Согласно одному варианту реализации первый синтаксический элемент находится в SPS.

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

В соответствии с четвертым аспектом изобретение относится к устройству для кодирования битового потока видео, при этом устройство содержит: модуль определения, выполненный с возможностью определения того, ссылается ли SPS на второй синтаксический элемент, при этом второй синтаксический элемент (например, vps_max_sublayers_minus1) используется для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS); определения значения первого синтаксического элемента, используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, на основе диапазона первого синтаксического элемента, при этом диапазон составляет от 0 до первого значения, причем первое значение является значением второго синтаксического элемента, когда определено, что на второй синтаксический элемент ссылается SPS; модуль кодирования, выполненный с возможностью кодирования значения первого синтаксического элемента в битовый поток.

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

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

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

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

В соответствии с пятым аспектом изобретение относится к долговременному носителю данных, который включает в себя битовый поток видео, причем битовый поток включает в себя текущий набор параметров последовательности (SPS), содержащий синтаксические элементы, которые применяются к видеопоследовательности; при этом битовый поток дополнительно содержит первый синтаксический элемент, используемый для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, при этом значение первого синтаксического элемента находится в диапазоне от 0 до первого значения, при этом первое значение является значением второго синтаксического элемента, используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS), когда на второй синтаксический элемент ссылается SPS.

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

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

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

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

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

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

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

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

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

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

Фиг.6 является примером слоев и подслоев масштабируемого кодирования видео;

Фиг.7 является примером клеток, сегментов и подснимков;

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

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

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

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

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

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

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

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

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

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

Видеокодирование обычно относится к обработке последовательности снимков, которые образуют видео или видеопоследовательность. Вместо термина «снимок» можно использовать термин «кадр» или «изображение» как синонимы в области видеокодирования. Видеокодирование (или кодирование (coding) в общем смысле) содержит две части кодирование видео и декодирование видео. Кодирование видео выполняется на стороне источника, обычно содержащее обработку (например, посредством сжатия) исходных видеоснимков для уменьшения объема данных, необходимых для представления видеоснимков (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне получателя и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоснимков. Варианты осуществления, относящиеся к «кодированию» (coding) видеоснимков (или снимков в целом, следует понимать как относящиеся либо к «кодированию» (encoding), либо к «декодированию» (decoding) видеоснимков или соответственных видеопоследовательностей. Объединение кодирующей части и декодирующей части также называется 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 с постобработкой. Постобработка, выполняемая модулем 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. Соответственно, блок может, например, массив дискретных отсчетов M×N (M-столбец на N-строка) или массив M×N коэффициентов преобразования.

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

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

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

Вычисление остатка

Модуль 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также упоминаемого как остаток 205) на основе блока 203 снимка и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, посредством вычитания значений дискретных отсчетов блока 265 предсказания из значений дискретных отсчетов блока 203 снимка, дискретный отсчет за дискретным отсчетом (пиксель за пикселем), чтобы получить остаточный блок 205 в области дискретных отсчетов.

Преобразование

Модуль 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям дискретных отсчетов остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.

Модуль 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью двойки для операций сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например, модулем 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например, модулем 312 обработки обратного преобразования в видеокодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например, посредством модуля 206 обработки преобразования, в кодере 20 может быть определено соответственно.

Варианты осуществления видеокодера 20 (соответственно модуль 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.

Квантование

Модуль 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, посредством применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.

Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большие размеры шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, и соответствующее и/или обратное деквантование, например, посредством модуля 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования, и кодер может передавать их в декодер, например, в битовом потоке. Квантование - это операция с потерями, при которой потери возрастают с увеличением размеров этапов квантования.

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

Обратное квантование

Модуль 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, посредством применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования в качестве модуля 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.

Обратное преобразование

Модуль 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусоидального преобразования (DST) или других обратных преобразования, чтобы получить восстановленный остаточный блок 213 (или соответствующие коэффициенты 213 деквантования) в области дискретных отсчетов. Восстановленный остаточный блок 213 также может называться блоком 213 преобразования.

Восстановление

Модуль 214 восстановления (например, сумматор 214) выполнен с возможностью добавления блока 213 преобразования (то есть восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области дискретных отсчетов, например, посредством добавления (дискретный отсчет за дискретным отсчетом) значений дискретных отсчетов восстановленных остаточный блок 213 и значения дискретных отсчетов блока 265 предсказания.

Фильтрация

Модуль 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных дискретных отсчетов для получения отфильтрованных дискретных отсчетов. Модуль контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Модуль 220 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением дискретных отсчетов (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любое их сочетание. Хотя модуль 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях модуль 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.

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

Буфер декодированных снимков

Буфер 230 декодированных снимков (DPB) может быть памятью, в которой хранятся опорные снимки или, в общем, данные опорных снимков для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть образован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных снимков может быть выполнен с возможностью хранения одного или более фильтрованных блоков 221. Буфер 230 декодированных снимков может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего снимка или разных снимков, например ранее восстановленных снимков, и может предоставлять полные ранее восстановленные, т.е. декодированные, снимки (и соответствующие опорные блоки и дискретные отсчеты) и/или частично восстановленный текущий снимок (и соответствующие опорные блоки и дискретные отсчеты), например, для интер-предсказания. Буфер 230 декодированных снимков (DPB) также может быть выполнен с возможностью хранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных дискретных отсчетов, например если восстановленный блок 215 не фильтруется модулем 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или дискретных отсчетов.

Выбор режима (Разбиение и Предсказание)

Модуль 260 выбора режима содержит модуль 262 разбиения, модуль 244 интер-предсказания и модуль 254 интра-предсказания и выполнен с возможностью приема или получения данных исходного снимка, например исходного блока 203 (текущего блока 203 текущего снимка 17), и данных восстановленного снимка, например отфильтрованных и/или нефильтрованных восстановленных дискретных отсчетов или блоков того же самого (текущего) снимка и/или из одного или множества ранее декодированных снимков, например из буфера 230 декодированных снимков или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного снимка используются в качестве данных опорного снимка для предсказания, например интер-предсказания или интра-предсказания, чтобы получить блок 265 предсказания или предиктор 265.

Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для текущего режима предсказания блока (включая отсутствие разбиения) и режима предсказания (например, режима внутреннего или интер-предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.

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

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

Далее более подробно поясняется разбиение (например, посредством модуля 260 разбиения) и обработка предсказания (посредством модуля 244 интер-предсказания и модуля 254 интра-предсказания), выполняемые примерным видеокодером 20.

Разбиение

Модуль 262 разбиения может разбивать (или разделять) текущий блок 203 на более мелкие разбиения, например меньшие блоки квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут называться подблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также относится к разбиению дерева или иерархическому разбиению дерева, в котором корневой блок, например, на уровне корневого дерева 0 (уровень иерархии 0, глубина 0), может быть рекурсивно разделен, например разделен на два или более блока следующий более низкий уровень дерева, например узлы на уровне дерева 1 (уровень иерархии 1, глубина 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень дерева 2 (уровень иерархии 2, глубина 2) и т.д. До тех пор, пока разбиение не будет завершено, например, потому что критерий завершения выполняется, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются концевыми блоками или концевыми узлами дерева. Дерево, использующее разбиение на два разбиения, называется двоичным деревом (BT), дерево, использующее разбиение на три разбиения, называется тройным деревом (TT), а дерево, использующее разбиение на четыре разбиения, называется деревом квадрантов (QT).

Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью снимка. Что касается, например, HEVC и VVC, блок может быть или соответствовать единичному блоку (единице) дерева кодирования (CTU), единичному блоку кодирования (CU), единичному блоку предсказания (PU) и единичному блоку преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).

Например, единичный блок дерева кодирования (CTU) может быть или содержать CTB дискретных отсчетов яркости, два соответствующих CTB дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или CTB дискретных отсчетов монохромного снимка или снимка, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов. Соответственно, блок дерева кодирования (CTB) может быть блоком N×N дискретных отсчетов для некоторого значения N, так что разбиение компонента на CTB является разбиением. Единичный блок кодирования (CU) может быть или содержать блок кодирования дискретных отсчетов яркости, два соответствующих блока кодирования дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или блок кодирования дискретных отсчетов монохромного снимка или снимка, который кодируется с использованием трех отдельных цветовых плоскости и синтаксические структуры, используемые для кодирования дискретных отсчетов. Соответственно, блок кодирования (CB) может быть блоком M×N дискретных отсчетов для некоторых значений M и N, так что разбиение CTB на блоки кодирования является разбиением.

В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры дерева квадрантов, обозначенной как дерево кодирования. Решение о том, кодировать ли область снимка с использованием межснимочного (интер) (временного) или внутриснимочного (интра) (пространственного) предсказания, принимается на уровне CU. Каждый CU может быть дополнительно разделен на один, два или четыре PU в соответствии с типом разбиения PU. Внутри одного PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока посредством применения процесса предсказания на основе типа разбиения PU, CU может быть разделен на блоки преобразования (TU) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU.

В вариантах осуществления, например согласно разрабатываемым в настоящее время наиболее новым стандарту видеокодирования, который называется универсальным видеокодированием (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В структуре блока QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единичный блок дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Концевые узлы квадродерева дополнительно разделяются посредством структуры двоичного дерева или троичного (или тройного) дерева. Концевые узлы дерева разделения называются единичными блоками кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разбиения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с структурой блока QTBT можно использовать множественного разбиение, например разбиение троичного дерева.

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

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

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

Набор режимов интра-предсказания может содержать 35 различных режимов интра-предсказания, например ненаправленные режимы, такие как режим постоянного (или среднего) и планарный режим, или направленные режимы, например, как определено в HVEC, или может содержать 67 различных режимов интра-предсказания, например, ненаправленные режимы, такие как режим постоянного тока (или среднего) и планарный режим, или направленные режимы, например, как определено для VVC.

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

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

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

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

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

Модуль 244 интер-предсказания может включать в себя модуль оценки движения (ME) и модуль компенсации движения (MC) (оба не показаны на Фиг.2). Модуль оценки движения может быть выполнен с возможностью приема или получения блока 203 снимка (блока 203 текущего снимка текущего снимка 17) и декодированного снимка 231, или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или более множество других/различных ранее декодированных снимков 231 для оценки движения. Например, видеопоследовательность может содержать текущий снимок и ранее декодированные снимки 231, или, другими словами, текущий снимок и ранее декодированные снимки 231 могут быть частью или формировать последовательность снимков, образующих видеопоследовательность.

Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или различных снимков из множества других снимков и обеспечивает опорный снимок (или индекс опорного снимка) и/или смещение (пространственное смещение) между положением (X, Y) координатами опорного блока и положением текущего блока в качестве взаимосвязанных параметров предсказания в модуль оценки движения. Это смещение также называется вектором движения (MV).

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

Модуль компенсации движения также может генерировать синтаксические элементы, связанные с блоками и видеосегментами, для использования видеодекодером 30 при декодировании блоков снимка видеосегмента. В дополнение или в качестве альтернативы сегментам и соответствующим элементам синтаксиса могут генерироваться или использоваться группы клеток и/или клетки и соответствующие синтаксические элементы.

Энтропийное кодирование

Модуль 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разбиением интервала вероятности (PIPE) или другого способа или методики энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров интер-предсказания, параметров интра-предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения данных 21 кодированного снимка, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.

Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь модуль 208 квантования и модуль 210 обратного квантования, объединенные в единый блок.

Декодер и способ декодирования

На Фиг.3 показан пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема данных 21 кодированного снимка (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированный снимок 331. Данные кодированного снимка или кодированный битовый поток содержат информацию для декодирования данных кодированного снимка, например данных, которые представляют блоки снимка кодированного сегмента видео (и/или клеток или групп клеток) и связанные синтаксические элементы.

В примере на Фиг.3, декодер 30 содержит модуль 304 энтропийного декодирования, модуль 310 обратного квантования, модуль 312 обработки обратного преобразования, модуль 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных снимков, модуль 360 применения режима, модуль 344 интер-предсказания и модуль 354 интра-предсказания. Модуль 344 интер-предсказания может быть или включать в себя модуль компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.

Как описано в отношении кодера 20, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных снимков, модуль 344 интер-предсказания и модуль 354 интра-предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, модуль 310 обратного квантования может быть идентичен по функции модулю 110 обратного квантования, модуль 312 обработки обратного преобразования может быть идентичен по функции модулю 212 обработки обратного преобразования, модуль 314 восстановления может быть идентичен по функции модулю 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных снимков может быть идентичен по функции буферу 230 декодированных снимков. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.

Энтропийное декодирование

Модуль 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, данных 21 кодированного снимка) и выполнения, например, энтропийного декодирования для данных 21 кодированного снимка, чтобы получить, например, квантованные коэффициенты 309 и/или параметры декодированного кодирования (не показаны на Фиг.3), например, любые или все из параметров интер-предсказания (например, индекс опорного снимка и вектор движения), параметр интра-предсказания (например, индекс или режим интра-предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Модуль 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении модуля 270 энтропийного кодирования кодера 20. Модуль 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров интер-предсказания, параметра интра-предсказания и/или других элементов синтаксиса модулю 360 применения режима и других параметров другим модулям декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне видеосегмента и/или уровне видеоблока. В дополнение или в качестве альтернативы сегментам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы клеток и/или клетки и соответствующие синтаксические элементы.

Обратное квантование

Модуль 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из данных 21 кодированного снимка (например, посредством синтаксического анализа и/или декодирования, например, посредством модуля 304 энтропийного декодирования) и применять на основе параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеосегменте (или клетке или группе клеток), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.

Обратное преобразование

Модуль 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и для применения преобразования к деквантованным коэффициентам 311, чтобы получить восстановленные остаточные блоки 213 в области дискретных отсчетов. Восстановленные остаточные блоки 213 также могут упоминаться как блоки 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или принципиально аналогичным процессом обратного преобразования. Модуль 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из данных 21 кодированного снимка (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое должно применяться к деквантованным коэффициентам 311.

Восстановление

Модуль 314 восстановления (например, сумматор 314) может быть выполнен с возможностью добавления восстановленного остаточного блока 313 к блоку 365 предсказания, чтобы получить восстановленный блок 315 в области дискретных отсчетов, например, посредством добавления значений дискретных отсчетов восстановленных остаточный блок 313 и значения дискретных отсчетов блока 365 предсказания.

Фильтрация

Модуль 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Модуль 320 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр снятия блочности, фильтр с адаптивным смещением дискретных отсчетов (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любое их сочетание. Хотя модуль 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях модуль 320 контурного фильтра может быть реализован как постконтурный фильтр.

Буфер декодированных снимков

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

Декодер 30 выполнен с возможностью вывода декодированного снимка 311, например, через вывод 312 для представления или просмотра пользователю.

Предсказание

Модуль 344 интер-предсказания может быть идентичен модулю 244 интер-предсказания (в частности, модулю компенсации движения), а модуль 354 интра-предсказания может быть идентичен модулю 254 интра-предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разбиения и/или предсказания или соответствующей информации, принимаемой из данных 21 кодированного снимка (например, посредством анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Модуль 360 применения режима может быть выполнен с возможностью осуществления предсказания (интра- или интер-предсказания) для каждого блока на основе восстановленных снимков, блоков или соответствующих дискретных отсчетов (фильтрованных или нефильтрованных) для получения блока 365 предсказания.

Когда видеосегмент кодируется как сегмент с интра-кодированием (I), модуль 354 интра-предсказания модуля 360 применения режима конфигурируется для генерации блока 365 предсказания для блока снимка текущего видеосегмента на основе сигнального режима интра-предсказания и данных из ранее декодированные блоки текущего снимка. Когда видеоиснимок кодируется с интер-кодированием (то есть B или P) сегмент, модуль 344 интер-предсказания (например, модуль компенсации движения) модуля 360 применения режима конфигурируется для создания блоков 365 предсказания для видеоблока текущего видеосегмента на основе векторов движения и других элементов синтаксиса, полученных от модуля 304 энтропийного декодирования. Для интер-предсказания блоки предсказания могут быть созданы из одного из опорных снимков в одном из списков опорных снимков. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных снимков, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп клеток (например, групп видеоклеток) и/или клеток (например, видеоклеток) в дополнение или альтернативно к сегментам (например, видеосегментам), например, видео может быть кодировано с использованием групп I, P или B клеток и/или клеток.

Модуль 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеосегмента посредством анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, модуль 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков видеосегмента, типа сегмента интер-предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информация о конструкции для одного или более списков опорных снимков для сегмента, векторы движения для каждого видеоблока с интер-кодированием сегмента, статус интер-предсказания для каждого видеоблока с интер-кодированием сегмента и другие информация для декодирования видеоблоков в текущем видеосегменте. То же самое или подобное может применяться для вариантов осуществления или посредством вариантов осуществления с использованием групп клеток (например, групп видеоклеток) и/или клеток (например, видеоклеток) в дополнение или альтернативно к сегментам (например, видеосегментам), например, видео может быть кодировано с использованием групп I, P или B клеток и/или клеток.

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

Варианты осуществления видеодекодера 30, как показано на Фиг.3, могут быть выполнены с возможностью разбиения и/или декодирования снимка с использованием групп клеток (также называемых группами клеток) и/или клеток (также называемых видеоклетками), при этом снимок может быть разделен на или декодировано с использованием одной или более групп клеток (обычно не перекрывающихся), и каждая группа клеток может содержать, например, один или более блоков (например, CTU) или одну или более клеток, при этом каждая клетка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.

Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 кодированного снимка. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без модуля 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь модуль 310 обратного квантования и модуль 312 обработки обратного преобразования, объединенные в один модуль.

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

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

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

Наборы параметров

Наборы параметров принципиально схожи и преследуют одни и те же основные цели проектирования, а именно эффективность битовой скорости, устойчивость к ошибкам и обеспечение интерфейсов системных уровней. В HEVC (H.265) существует иерархия наборов параметров, включающая в себя набор параметров видео (VPS), набор параметров последовательности (SPS) и набор параметров снимка (PPS), которые аналогичны своим аналогам в AVC и VVC. Каждый сегмент ссылается на один активный PPS, SPS и VPS для доступа к информации, используемой для декодирования сегмента. PPS содержит информацию, которая применяется ко всем сегментам в снимке, и, следовательно, все сегменты в снимке должны относиться к одному и тому же PPS. Сегменты в разных снимках также могут ссылаться на один и тот же PPS. Аналогичным образом, SPS содержит информацию, которая применяется ко всем снимкам в одной и той же кодируемой/декодируемой видеопоследовательности.

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

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

Наборы параметров (например, VPS или SPS) обычно инкапсулируются в виде Полезной Нагрузки Необработанной Байтовой Последовательности (RBSP). RBSP представляет собой синтаксическую структуру, содержащую целое число байтов, инкапсулированное в единицу NAL, которая либо пуста, либо имеет форму строки битов данных, содержащих синтаксические элементы, за которыми следует стоповый бит RBSP и ноль или более последующих битов, равных 0.

Единица NAL представляет собой синтаксическую структуру, содержащую указание типа применяемых данных и байты, содержащие эти данные в форме RBSP (Полезная Нагрузка Необработанной Байтовой Последовательности), перемежающиеся, при необходимости, байтами предотвращения эмуляции. Байт предотвращения эмуляции, например, равен 0×03.

В общем, единицы NAL в битовом потоке можно разделить на два класса: единицы NAL уровня кодирования видео (VCL) и единицы NAL не VCL. Единицы NAL, содержащие наборы параметров (такие как VPS или SPS), которые не предоставляют основные кодированные данные снимков, относятся к типу единицы NAL не-VCL. Напротив, единицы NAL, содержащие основные кодированные данные снимка (например, кодированные видеоданные I-снимка), называются блоками NAL VCL.

В таблице 5 проекта 8 VVC определены тип единицы nal для каждой единицы NAL и их классификация.

Для получения дополнительной информации см. проект 8 VVC.

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

nal_unit_header() { Дескриптор forbidden_zero_bit f(1) nuh_reserved_zero_bit u(1) nuh_layer_id u(6) nal_unit_type u(5) nuh_temporal_id_plus1 u(3) }

forbidden_zero_bit должен быть равен 0.

nuh_reserved_zero_bit должен быть равен 0.

nuh_layer_id задает идентификатор слоя, которому принадлежит единица NAL VCL, или идентификатор слоя, к которому применяется единица NAL не-VCL.

nal_unit_type указывает тип единицы NAL, т.е. тип структуры данных RBSP, содержащейся в единице NAL, как указано в таблице 5 проекта 8 VVC.

nuh_temporal_id_plus1 минус 1 указывает временной идентификатор для единицы NAL.

Масштабируемое видеокодирование, слой и набор параметров видео (VPS)

Масштабируемое видеокодирование обеспечивает механизм для видеокодирования на множестве слоев, причем каждый слой представляет представление одной и той же видеосцены с разным качеством. Базовый слой (BL) представляет собой представление самого низкого качества. Один или более слоев улучшения (EL) могут быть закодированы путем ссылки на нижние слои и обеспечивают улучшенное качество видео. Декодирование подмножества слоев битового потока масштабируемого кодированного видео приводит к видео с более низким, но все же приемлемым качеством, чем если бы был декодирован полный битовый поток. Это обеспечивает более плавное ухудшение по сравнению с битовыми потоками немасштабируемыми видео, причем снижение битовой скорости обычно приводит к более резкому падению качества видео, которое зачастую быстро становится неприемлемым для просмотра.

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

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

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

Кодированная видеопоследовательность (CVS), к которой может применяться VPS, состоит из одной или более видеопоследовательностей кодированного уровня (CLVS). В примере на Фиг.6, предполагая, что первые снимки BL и EL являются снимками CLVSS, а все остальные снимки не являются снимками CLVSS, т.е. CVS состоит из двух CLVS.

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

Снимки принадлежат разным слоям, связанным с одним и тем же временем вывода, формирующим Единицу Доступа (AU). Например, на Фиг.6 снимки A и B принадлежат одной и той же AU.

Фиг.7 иллюстрирует разделение снимка на 4 клетки (2 столбца клеток и 2 строки клеток), 4 прямоугольных сегмента и 3 подснимка.

В некоторых частях следующей таблицы показан моментальный слепок части информации слоя и подслоя в VPS в ITU JVET-Q2001-v13 со следующей ссылкой для загрузки:

http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/

17_Brussels/wg11/JVET-Q2001-v13.zip. В оставшейся части заявки этот документ для простоты будет называться проект 8 VVC (VVC draft 8).

video_parameter_set_rbsp() { Дескриптор vps_video_parameter_set_id u(4) vps_max_layers_minus1 u(6) vps_max_sublayers_minus1 u(3) если (vps_max_layers_minus1 > 0 && vps_max_sublayers_minus1 > 0) vps_all_layers_same_num_sublayers_flag u(1) если (vps_max_layers_minus1 > 0) vps_all_independent_layers_flag u(1) для (i=0; i <= vps_max_layers_minus1; i++) { vps_layer_id[i] u(6) если (i > 0 && !vps_all_independent_layers_flag) { vps_independent_layer_flag[i] u(1) если(!vps_independent_layer_flag[i]) { для (j=0; j < i; j++) vps_direct_ref_layer_flag[i][j] u(1)

Согласно проекту 8 VVC:

vps_video_parameter_set_id предоставляет идентификатор VPS для ссылки другими синтаксическими элементами (например, SPS). Значение vps_video_parameter_set_id должно быть больше 0.

vps_max_layers_minus1 плюс 1 указывает максимально допустимое количество уровней в каждой CVS, ссылающейся на VPS.

vps_max_sublayers_minus1 плюс 1 указывает максимальное количество временных подслоев, которое может присутствовать в слое в каждой CVS, ссылающейся на VPS. Значение vps_max_sublayers_minus1 должно находиться в диапазоне от 0 до 6 включительно.

vps_all_layers_same_num_sublayers_flag, равный 1, указывает, что количество временных подслоев одинаково для всех слоев в каждой CVS, ссылающейся на VPS. vps_all_layers_same_num_sublayers_flag, равный 0, указывает, что слои в каждой CVS, ссылающейся на VPS, могут иметь или могут не иметь одинаковое количество временных подслоев. При отсутствии, предполагается, что значение vps_all_layers_same_num_sublayers_flag равно 1. При отсутствии vps_max_layers_minus1 равно 0 или vps_max_sublayers_minus1 равно 0, что означает, что в CVS имеется максимум один слой или в CVS имеется максимум один подслой.

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

vps_layer_id[i] указывает значение nuh_layer_id i-го слоя. Для любых двух неотрицательных целых значений m и n, когда m меньше n, значение vps_layer_id[m] должно быть меньше, чем vps_layer_id[n].

vps_independent_layer_flag[i], равный 1, указывает, что слой с индексом i не использует межслойное предсказание. vps_independent_layer_flag[i], равный 0, указывает, что слой с индексом i может использовать межслойное предсказание, а синтаксические элементы vps_direct_ref_layer_flag[i][j] для j в диапазоне от 0 до i − 1 включительно присутствуют в VPS. При отсутствии, предполагается, что значение vps_independent_layer_flag[i] равно 1.

vps_direct_ref_layer_flag[i][j], равный 0, указывает, что слой с индексом j не является прямым опорным слоем для слоя с индексом i. vps_direct_ref_layer_flag[i][j], равный 1, указывает, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда vps_direct_ref_layer_flag[i][j] отсутствует для i и j в диапазоне от 0 до vps_max_layers_minus1 включительно, предполагается, что он равен 0. Когда vps_independent_layer_flag[i] равен 0, должно быть по меньшей мере одно значение j в диапазоне от 0 до i − 1 включительно, так чтобы значение vps_direct_ref_layer_flag[i][j] было равно 1.

В VPS сигнализируются и другие синтаксические элементы, но они менее важны для настоящего изобретения. Подробные пояснения см. в проекте 8 VVC.

Набор параметров последовательности (SPS)

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

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

seq_parameter_set_rbsp() { Дескриптор sps_seq_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sublayers_minus1 u(3) sps_reserved_zero_4bits u(4) sps_ptl_dpb_hrd_params_present_flag u(1) если(sps_ptl_dpb_hrd_params_present_flag) profile_tier_level(1, sps_max_sublayers_minus1) если(sps_ptl_dpb_hrd_params_present_flag) dpb_parameters(sps_max_sublayers_minus1, sps_sublayer_dpb_params_flag) long_term_ref_pics_flag u(1) inter_layer_ref_pics_present_flag u(1) если(sps_ptl_dpb_hrd_params_present_flag) { sps_general_hrd_params_present_flag u(1) если (sps_general_hrd_params_present_flag) { general_hrd_parameters() если (sps_max_sublayers_minus1 > 0) sps_sublayer_cpb_params_present_flag u(1) firstSubLayer=sps_sublayer_cpb_params_present_flag ? 0 : sps_max_sublayers_minus1 ols_hrd_parameters (firstSubLayer, sps_max_sublayers_minus1) } }

Синтаксис параметров DPB

dpb_parameters(MaxSubLayersMinus1, subLayerInfoFlag) { Дескриптор для (i=(subLayerInfoFlag ? 0 : MaxSubLayersMinus1); i <= MaxSubLayersMinus1; i++) { dpb_max_dec_pic_buffering_minus1[i] ue(v) dpb_max_num_reorder_pics[i] ue(v) dpb_max_latency_increase_plus1[i] ue(v) } }

sps_seq_parameter_set_id предоставляет идентификатор для SPS для ссылки другими синтаксическими элементами (например, набором параметров снимка).

sps_video_parameter_set_id, когда больше 0, указывает значение vps_video_parameter_set_id для VPS, на который ссылается SPS.

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

- SPS не ссылается на VPS.

- При декодировании каждой CLVS, ссылающейся на SPS, на VPS ссылки не осуществляется.

- Предполагается, что значение vps_max_layers_minus1 равно 0.

- CVS должна содержать только один слой (т.е. все единицы NAL VCL в CVS должны иметь одинаковое значение nuh_layer_id).

- Предполагается, что значение GeneralLayerIdx[nuh_layer_id] равно 0.

- Предполагается, что значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 1.

Переменная GeneralLayerIdx[nuh_layer_id] получается с помощью следующего процесса:

для (i=0; i <= vps_max_layers_minus1; i++) (38)

GeneralLayerIdx[vps_layer_id[i]]=i

Значение vps_max_layers_minus1 и vps_layer_id[i] для i от 0 до vps_max_layers_minus1 включительно сигнализируется в VPS.

Значение vps_independent_layer_flag[i] для i в 1 до vps_max_layers_minus1 включительно сигнализируется в VPS.

Согласно проекту 8 VVC:

sps_max_sublayers_minus1 плюс 1 указывает максимальное количество временных подслоев, которые могут присутствовать в каждой CLVS, ссылающейся на SPS. Значение sps_max_sublayers_minus1 должно находиться в диапазоне от 0 до vps_max_sublayers_minus1 включительно.

sps_reserved_zero_4bits должен быть равен 0 в битовых потоках, соответствующих этой версии настоящей Спецификации. Другие значения для sps_reserved_zero_4bits зарезервированы для будущего использования ITU-T | ISO/IEC.

sps_ptl_dpb_hrd_params_present_flag, равный 1, указывает, что синтаксическая структура profile_tier_level() и синтаксическая структура dpb_parameters() присутствуют в SPS, а синтаксическая структура general_hrd_parameters() и синтаксическая структура ols_hrd_parameters() также могут присутствовать в SPS. sps_ptl_dpb_hrd_params_present_flag, равный 0, указывает, что ни одна из этих четырех синтаксических структур не присутствует в SPS. Значение sps_ptl_dpb_hrd_params_present_flag должно быть равно vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]].

Флаг sps_general_hrd_params_present_flag позволяет не сигнализировать general_hrd_parameters() и ols_hrd_parameters(). Следовательно, даже когда sps_ptl_dpb_hrd_params_present_flag равен 1, сигнализация general_hrd_parameters() и ols_hrd_parameters() не гарантируется. Однако синтаксическая структура profile_tier_level() и dpb_parameters() напрямую управляется флагом sps_ptl_dpb_hrd_params_present_flag. Следовательно, когда значение sps_ptl_dpb_hrd_params_present_flag равно 1, эти два синтаксиса должны сигнализироваться.

Пожалуйста, обратитесь к проекту 8 VVC для получения подробной информации о синтаксических структурах profile_tier_level(), dpb_parameters(), general_hrd_parameters() и ols_hrd_parameters().

Также существует ограничение на синтаксис sps_ptl_dpb_hrd_params_present_flag, то есть его значение должно быть равно 1, когда SPS, содержащий его, применяется к независимому слою (т.е. vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равен 1).

inter_layer_ref_pics_present_flag, равный 0, указывает, что ILRP не используется для интер-предсказания любого кодированного снимка в CLVS. inter_layer_ref_pics_present_flag, равный 1, указывает, что ILRP могут использоваться для интер-предсказания одного или более кодированных снимков в CLVS. Когда значение sps_video_parameter_set_id равно 0, предполагается, что значение inter_layer_ref_pics_present_flag равно 0. Когда vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 1, значение inter_layer_ref_pics_present_flag должно быть равно 0.

Терминология ILRP является аббревиатурой от Inter-Layer Reference Picture (Межслойный опорный снимок), представляющей, что снимок используется для интер-предсказания другого снимка в той же AU, но с nuh_layer_id меньшим, чем nuh_layer_id текущего снимка. Например, на Фиг.6, если снимок A используется для интер-предсказания снимка B, то A является ILRP для снимка B.

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

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

dpb_max_dec_pic_buffering_minus1[i] плюс 1 задает максимальный требуемый размер DPB в единицах буферов хранения снимков, когда Htid равен i. Значение dpb_max_dec_pic_buffering_minus1[i] должно находиться в диапазоне от 0 до MaxDpbSize − 1 включительно, причем MaxDpbSize соответствует указанному в пункте A.4.2. Когда i больше 0, dpb_max_dec_pic_buffering_minus1[i] должно быть больше или равно dpb_max_dec_pic_buffering_minus1[i − 1]. Когда dpb_max_dec_pic_buffering_minus1[i] отсутствует для i в диапазоне от 0 до MaxSubLayersMinus1 − 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен dpb_max_dec_pic_buffering_minus1[MaxSubLayersMinus1].

dpb_max_num_reorder_pics[i] указывает максимально допустимое количество снимков OLS, которые могут предшествовать любому снимку в OLS в порядке декодирования и следовать за этим снимком в порядке вывода, когда Htid равен i. Значение dpb_max_num_reorder_pics[i] должно находиться в диапазоне от 0 до dpb_max_dec_pic_buffering_minus1[i] включительно. Когда i больше 0, dpb_max_num_reorder_pics[i] должно быть больше или равно dpb_max_num_reorder_pics[i − 1]. Когда dpb_max_num_reorder_pics[i] отсутствует для i в диапазоне от 0 до MaxSubLayersMinus1 − 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен dpb_max_num_reorder_pics[MaxSubLayersMinus1].

dpb_max_latency_increase_plus1[i], не равный 0, используется для вычисления значения MaxLatencyPictures[i], которое указывает максимальное количество снимков в OLS, которые могут предшествовать любому снимку в OLS в порядке вывода и следовать за этим снимком в порядке декодирования, когда Htid равно i.

Когда dpb_max_latency_increase_plus1[i] не равно 0, значение MaxLatencyPictures[i] указывается следующим образом:

MaxLatencyPictures[i]=dpb_max_num_reorder_pics[i] + dpb_max_latency_increase_plus1[i] - 1 (106)

Когда dpb_max_latency_increase_plus1[i] равно 0, соответствующий предел не выражается.

Значение dpb_max_latency_increase_plus1[i] должно находиться в диапазоне от 0 до 232 − 2 включительно. Когда dpb_max_latency_increase_plus1[i] отсутствует для i в диапазоне от 0 до MaxSubLayersMinus1 − 1 включительно, из-за того, что subLayerInfoFlag равен 0, предполагается, что он равен dpb_max_latency_increase_plus1[MaxSubLayersMinus1].

Есть два ограничения на значение inter_layer_ref_pics_present_flag. Когда значение sps_video_parameter_set_id равно 0, т.е. в CVS имеется только один слой, значение inter_layer_ref_pics_present_flag должно быть равно 0. Когда значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 1, т.е. текущая CLVS является независимым слоем, значение inter_layer_ref_pics_present_flag должно быть равно 0.

Замечено, что сигнализация синтаксических элементов sps_video_parameter_set_id, sps_ptl_dpb_hrd_params_present_flag и inter_layer_ref_pics_present_flag в некоторых случаях содержит избыточную информацию.

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

Согласно первому варианту осуществления синтаксический элемент sps_ptl_dpb_hrd_params_present_flag сигнализируется только тогда, когда значение sps_video_parameter_set_id не равно 0, что акцентируется следующим образом:

Таблица 1: Синтаксические элементы в SPS

seq_parameter_set_rbsp () { Дескриптор sps_seq_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sublayers_minus1 u(3) sps_reserved_zero_4bits u(4) если (sps_video_parameter_set_id !=0) sps_ptl_dpb_hrd_params_present_flag u(1) если(sps_ptl_dpb_hrd_params_present_flag) profile_tier_level(1, sps_max_sublayers_minus1)

Причина в том, что когда sps_video_parameter_set_id равен 0, значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] должно быть равно 1, а значение sps_ptl_dpb_hrd_params_present_flag должно быть равно значению vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]], т.е. 1. Поэтому нет необходимости сигнализировать значение sps_ptl_dpb_hrd_params_present_flag. Вместо этого его значение считается равным 1, когда значение sps_video_parameter_set_id равно 0.

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

sps_ptl_dpb_hrd_params_present_flag, равное 1, указывает, что синтаксическая структура profile_tier_level() и синтаксическая структура dpb_parameters() присутствуют в SPS, и синтаксическая структура general_hrd_parameters() и синтаксическая структура ols_hrd_parameters() также могут присутствовать в SPS. Значение sps_ptl_dpb_hrd_params_present_flag, равное 0, указывает, что ни одна из этих четырех синтаксических структур не присутствует в SPS. Значение sps_ptl_dpb_hrd_params_present_flag должно быть равно vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]. Если оно отсутствует, предполагается, что значение sps_ptl_dpb_hrd_params_present_flag равно 1.

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

Таблица 2: Синтаксические элементы в SPS

long_term_ref_pics_flag u(1) если (!sps_ptl_dpb_hrd_params_present_flag && sps_video_parameter_set_id !=0) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1)

Причина в том, что когда sps_video_parameter_set_id равен 0, значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] должно быть равно 1, а значение inter_layer_ref_pics_present_flag должно быть равно 0. Точно так же, когда значение sps_ptl_dpb_hrd_params_present_flag равно 1, значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] должно быть таким же, т.е. 1. Следовательно, значение inter_layer_ref_pics_present_flag должно быть равно 0 в соответствии с ограничением, примененным к семантике inter_layer_ref_pics_present_flag.

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

inter_layer_ref_pics_present_flag, равное 0, указывает, что ILRP не используется для интер-предсказания любого кодированного снимка в CLVS. inter_layer_ref_pics_present_flag, равный 1, указывает, что ILRP могут использоваться для интер-предсказания одного или более кодированных снимков в CLVS. При отстутствии, предполагается, что значение inter_layer_ref_pics_present_flag равно 0.

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

Таблица 3: Синтаксические элементы в SPS

long_term_ref_pics_flag u(1) если (sps_video_parameter_set_id !=0) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1)

Причина в том, что когда sps_video_parameter_set_id равен 0, значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] должно быть равно 1, а значение inter_layer_ref_pics_present_flag должно быть равно 0.

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

inter_layer_ref_pics_present_flag, равный 0, указывает, что ILRP не используется для интер-предсказания любого кодированного снимка в CLVS. inter_layer_ref_pics_present_flag, равный 1, указывает, что ILRP могут использоваться для интер-предсказания одного или более кодированных снимков в CLVS. Когда vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 1, значение inter_layer_ref_pics_present_flag должно быть равно 0. При отсутствии, предполагается, что значение inter_layer_ref_pics_present_flag равно 0.

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

Таблица 4: Синтаксические элементы в SPS

long_term_ref_pics_flag u(1) если (!sps_ptl_dpb_hrd_params_present_flag) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1)

Причина в том, что когда значение sps_ptl_dpb_hrd_params_present_flag равно 1, значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] должно быть таким же, т.е. 1. Следовательно, значение inter_layer_ref_pics_present_flag должно быть равно 0 в соответствии с ограничением, примененным к семантике inter_layer_ref_pics_present_flag.

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

inter_layer_ref_pics_present_flag, равный 0, указывает, что ILRP не используется для интер-предсказания любого кодированного снимка в CLVS. inter_layer_ref_pics_present_flag, равный 1, указывает, что ILRP могут использоваться для интер-предсказания одного или более кодированных снимков в CLVS. Когда sps_video_parameter_set_id равен 0, значение inter_layer_ref_pics_present_flag должно быть равно 0. При отсутствии, предполагается, что значение inter_layer_ref_pics_present_flag равно 0.

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

Таблица 5: Синтаксические элементы в SPS

long_term_ref_pics_flag u(1) если (!(sps_ptl_dpb_hrd_params_present_flag || sps_video_parameter_set_id ==0)) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1)

Причина в том, что когда sps_video_parameter_set_id равен 0, значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] должно быть равно 1, а значение inter_layer_ref_pics_present_flag должно быть равно 0. Точно так же, когда значение sps_ptl_dpb_hrd_params_present_flag равно 1, значение vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] должно быть таким же, т.е. 1. Следовательно, значение inter_layer_ref_pics_present_flag должно быть равно 0 в соответствии с ограничением, примененным к семантике inter_layer_ref_pics_present_flag.

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

inter_layer_ref_pics_present_flag, равный 0, указывает, что ILRP не используется для интер-предсказания любого кодированного снимка в CLVS. inter_layer_ref_pics_present_flag, равный 1, указывает, что ILRP могут использоваться для интер-предсказания одного или более кодированных снимков в CLVS. При отсутствии, предполагается, что значение inter_layer_ref_pics_present_flag равно 0.

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

Например, семантика sps_max_sublayers_minus1 определяется следующим образом:

sps_max_sublayers_minus1 плюс 1 указывает максимальное количество временных подслоев, которые могут присутствовать в каждой CLVS, ссылающейся на SPS. Значение sps_max_sublayers_minus1 должно находиться в диапазоне от 0 до vps_max_sublayers_minus1 включительно.

Однако, когда VPS не находится в битовом потоке и для синтаксического элемента vps_max_sublayers_minus1 не определено предполагаемое значение, приведенное выше ограничение диапазона для sps_max_sublayers_minus1:

«Значение sps_max_sublayers_minus1 должно быть в диапазоне от 0 до vps_max_sublayers_minus1 включительно» не определено.

Рассмотрим случай, когда VPS отсутствует в битовом потоке, а изменение семантики sps_max_sublayers_minus1 происходит следующим образом:

sps_max_sublayers_minus1 плюс 1 указывает максимальное количество временных подслоев, которые могут присутствовать в каждой CLVS, ссылающейся на SPS. При наличии VPS значение sps_max_sublayers_minus1 должно находиться в диапазоне от 0 до vps_max_sublayers_minus1 включительно. Когда VPS отсутствует, значение sps_max_sublayers_minus1 должно находиться в диапазоне от 0 до 6 включительно.

sps_max_sublayers_minus1 плюс 1 указывает максимальное количество временных подслоев, которые могут присутствовать в каждой CLVS, ссылающейся на SPS. При наличии vps_max_sublayers_minus1 значение sps_max_sublayers_minus1 должно находиться в диапазоне от 0 до vps_max_sublayers_minus1 включительно. Когда vps_max_sublayers_minus1 отсутствует или предполагается, то значение sps_max_sublayers_minus1 должно находиться в диапазоне от 0 до 6 включительно.

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

Фиг.8 - это блок-схема, показывающая систему 3100 предоставления контента для реализации службы распространения контента. Эта система 3100 предоставления контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и, в необязательном порядке, включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, помимо прочего, WI-FI, 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 для приема и отображения декодированных данных.

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

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

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

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

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

Фиг.10 иллюстрирует способ декодирования битового потока видео, реализуемый устройством декодирования, при этом битовый поток включает в себя текущий набор параметров последовательности (SPS), содержащий синтаксические элементы, которые применяются к видеопоследовательности, причем способ содержит: получение 1010 первого синтаксического элемента (например, sps_max_sublayers_minus1), используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, при этом значение первого синтаксического элемента находится в диапазоне от 0 до первого значения, при этом первое значение является значением второго синтаксического элемента (например, vps_max_sublayers_minus1), используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS), когда на второй синтаксический элемент ссылается SPS; декодирование 1020 битового потока на основе значения первого синтаксического элемента.

Следует отметить, что битовый поток может быть получен посредством беспроводной сети или проводной сети. Битовый поток может передаваться с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радио связь, микроволновая связь, WI-FI, Bluetooth, LTE или 5G.

Битовый поток может быть последовательностью битов в форме потока единиц слоя сетевой абстракции (NAL) или потока байтов, который формирует представление последовательности единиц доступа (AU), формирующих одну или более кодированных видеопоследовательностей (CVS).

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

Битовый поток может быть, например, в одном из двух форматов: в формате потока единиц NAL или в формате байтового потока. Формат потока единиц NAL концептуально является более «базовым» типом. Формат потока единиц NAL содержит последовательность синтаксических структур, называемых единицами NAL. Эта последовательность упорядочена в порядке декодирования. Существуют ограничения, налагаемые на порядок декодирования (и содержимое) единиц NAL в потоке единиц NAL.

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

Фиг.11 иллюстрирует способ кодирования битового потока видео, реализуемый устройством кодирования, при этом битовый поток включает в себя текущий набор параметров последовательности (SPS), содержащий синтаксические элементы, которые применяются к видеопоследовательности, причем способ содержит: определение 1110 того, ссылается ли SPS на второй синтаксический элемент, при этом второй синтаксический элемент (например, vps_max_sublayers_minus1) используется для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS); определение 1120 значения первого синтаксического элемента, используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, на основе диапазона первого синтаксического элемента, диапазон составляет от 0 до первого значения, и при этом первое значение является значением второго синтаксического элемента при определении того, что на второй синтаксический элемент ссылается SPS; и кодирование 1130 значения первого синтаксического элемента в битовый поток.

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

Как показано на Фиг.12 устройство 1200 декодирования видео, представленное в настоящем документе, согласно одному варианту осуществления, содержит модуль 1210 получения и модуль 1220 декодирования. Как показано на Фиг.13 устройство 1300 кодирования видео, представленное в настоящем документе, согласно одному варианту осуществления, содержит модуль 1310 определения и модуль 1320 кодирования.

Модуль 1210 получения, содержащийся в устройстве 1200 декодирования видео, показанном на Фиг.12 выполнен с возможностью получения первого синтаксического элемента, используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, при этом значение первого синтаксического элемента находится в диапазоне от 0 до первого значения, при этом первое значение является значением второго синтаксического элемента, используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS), когда на второй синтаксический элемент ссылается SPS. Модуль 1220 декодирования, содержащийся в устройстве 1200 декодирования видео, показанном на Фиг.12 выполнен с возможностью декодирования битового потока на основе значения первого синтаксического элемента.

При этом модуль 1210 получения может быть модулем 304 энтропийного декодирования. Модуль 1220 декодирования может содержать один или более модулей, показанных на Фиг.3 и используемых для декодирования битового потока.

Модуль 1310 определения, содержащийся в устройстве 1300 кодирования видео, показанном на Фиг.13 выполнен с возможностью определения того, ссылается ли SPS на второй синтаксический элемент, при этом второй синтаксический элемент (например, vps_max_sublayers_minus1) используется для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS); определения значение первого синтаксического элемента, используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, на основе диапазона первого синтаксического элемента, причем диапазон составляет от 0 до первого значения, и при этом первое значение является значением второго синтаксического элемента при определении того, что на второй синтаксический элемент ссылается SPS. Модуль 1320 кодирования, содержащийся в устройстве 1300 кодирования видео, показанном на Фиг.13, выполнен с возможностью кодирования значения первого синтаксического элемента в битовый поток.

При этом модуль 1320 кодирования может быть модулем 270 энтропийного кодирования. Модуль 1210 определения может содержать один или более модулей, показанных на Фиг.2.

Устройство 1200 декодирования видео, показанное на Фиг.12, может быть или может состоять из декодера 30, показанного на Фиг.1A, 1B и 3, и видеодекодера 3206, показанного на Фиг.9, 1200. Кроме того, устройство 1200 декодирования может входить в состав устройства 400 видеокодирования, показанного на Фиг.4, устройства 500, показанного на Фиг.5, и терминального устройства 3106, показанного на Фиг.8. Устройство 1300 кодирования, показанное на Фиг.13, может быть или может входить в состав кодера 20, показанного на Фиг.1A, 3. Кроме того, устройство 1200 кодирования может входить в состав устройства 400 видеокодирования, показанного на Фиг.4, устройства 500, показанного на Фиг.5, и устройства 3102 захвата, показанного на Фиг.8.

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

В частности, в настоящем документе также предусмотрены следующие дополнительные аспекты, перечисленные в аспектах 1-17.

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

Получение первого синтаксического элемента (например, sps_ptl_dpb_hrd_params_present_flag), указывающего, присутствует ли в SPS по меньшей мере одна синтаксическая структура (например, profile_tier_level(), dpb_parameters(), general_hrd_parameters() или ols_hrd_parameters()) посредством синтаксического анализа (парсинга) битового потока, когда удовлетворяется условие присутствия, при этом условие присутствия содержит значение второго синтаксического элемента (например, sps_video_parameter_set_id), не равного предварительно установленному значению (например, 0);

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

Декодирование битового потока на основе по меньшей мере одной синтаксической структуры.

2. Аспект способа согласно аспекту 1, в котором второй синтаксический элемент указывает идентификатор набора параметров видео (VPS), на который ссылается текущий SPS, или указывает, что текущий SPS не ссылается на VPS.

3. Аспект способа согласно аспектам 1-2, когда условие присутствия не удовлетворено, предполагается, что значение первого синтаксического элемента равно значению по умолчанию (например, 1).

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

Получение первого синтаксического элемента (например, inter_layer_ref_pics_present_flag), указывающего, могут ли межслойные опорные снимки (ILRP) использоваться для интер-предсказания одного или более кодированных снимков в CLVS посредством синтаксического анализа битового потока, когда удовлетворяется условие присутствия, при этом условие присутствия содержит значение второго синтаксического элемента (например, sps_video_parameter_set_id), не равное предварительно установленному значению (например, 0);

Предсказание текущего снимка в текущей CLVS на основе значения первого синтаксического элемента.

5. Аспект способа согласно аспекту 4, в котором второй синтаксический элемент указывает идентификатор набора параметров видео (VPS), на который ссылается текущий SPS, или указывает, что текущий SPS не ссылается на VPS.

6. Аспект способа согласно аспектам 4-5, когда условие присутствия не удовлетворяется, значение первого синтаксического элемента предполагается равным значению по умолчанию (например, 0).

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

Получение первого синтаксического элемента (например, inter_layer_ref_pics_present_flag), указывающего, могут ли межслойные опорные снимки (ILRP) использоваться для интер- предсказания одного или более кодированных снимков в CLVS посредством синтаксического анализа битового потока, когда удовлетворяется условие присутствия, при этом условие присутствия содержит значение второго синтаксического элемента (например, sps_ptl_dpb_hrd_params_present_flag), не равного предварительно установленному значению (например, 1), при этом второй синтаксический элемент указывает, присутствует ли по меньшей мере одна синтаксическая структура (например, profile_tier_level(), dpb_parameters(), general_hrd_parameters() или ols_hrd_parameters())в наборе параметров последовательности (SPS), представленном в битовом потоке;

Предсказание текущего снимка в текущем CLVS на основе значения первого синтаксического элемента.

8. Аспект способа согласно аспекту 7, когда условие присутствия не удовлетворяется, значение первого синтаксического элемента предполагается равным значению по умолчанию (например, 0).

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

Получение первого синтаксического элемента (например, sps_max_sublayers_minus1), используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, при этом значение первого синтаксического элемента находится в диапазоне от 0 до первого значения, при этом первое значение является значением второго синтаксического элемента (например, vps_max_sublayers_minus1), используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS), когда второй синтаксический элемент присутствует в битовом потоке;

Декодирование битового потока на основе значения первого синтаксического элемента.

10. Аспект способа согласно аспекту 9, в котором декодирование битового потока содержит получение информации о возможностях декодирования и декодирование битового потока на основе информации о возможностях декодирования.

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

12. Аспект способа согласно любому из аспектов 9-11, в котором то, что второй синтаксический элемент присутствует в битовом потоке, содержит то, что VPS присутствует в битовом потоке, и то, что второй синтаксический элемент не присутствует в битовом потоке, содержит то, что VPS не присутствует в битовом потоке.

13. Аспект способа согласно аспекту 9, в котором CVS содержит одну или более CLVS, и нулевое количество или более SPS ссылаются на VPS.

14. Аспект декодера (30), содержащего схему обработки для осуществления способа в соответствии с любым из аспектов 1-13.

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

16. Аспект декодера, содержащего:

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

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

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

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

Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования 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)+0.5)

Sign(x)=

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

Sqrt(x)=

Swap(x, y)=(y, x)

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

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

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

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

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

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

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

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

операции (с операндами x, y и z) "x++", "x− −" "!x", "−x" (как унарный префиксный оператор) xy "x*y", "x/y", "x ÷ y", "", "x%y" "x+y", "x − y" (как оператор с двумя аргументами), "x << y", "x>>y" "x < y", "x <= y", "x > y", "x >= y" "x== y", "x != y" "x&y" "x | y" "x && y" "x | | y" "x ? y : z" "x..y" "x=y", "x += y", "x −= y"

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

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

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

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

название год авторы номер документа
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAP И НЕ-IRAP В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО 2020
  • Ван, Е-Куй
RU2815736C1
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAR И HE-IRAR В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2822714C1
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAP И НЕ-IRAP В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО 2020
  • Ван, Е-Куй
RU2828201C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ СИГНАЛИЗАЦИИ И СЕМАНТИКА В НАБОРАХ ПАРАМЕТРОВ 2021
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Алшина, Елена Александровна
  • Гао, Хань
RU2831978C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ СИГНАЛИЗАЦИИ СУБИЗОБРАЖЕНИЙ В НАБОРЕ ПАРАМЕТРОВ ПОСЛЕДОВАТЕЛЬНОСТИ 2021
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Алшина, Елена Александровна
RU2828202C1
ОТКЛОНЕНИЕ НЕИСПОЛЬЗУЕМЫХ СЛОЕВ В МНОГОСЛОЙНЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2823559C1
ОТКЛОНЕНИЕ НЕНУЖНЫХ СЛОЕВ В МНОГОСЛОЙНЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2831434C1
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО 2021
  • Чой Беондоо
  • Лю Шань
  • Венгер Штефан
RU2808148C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ 2020
  • Ма, Сян
  • Ян, Хайтао
RU2823668C1
OLS ДЛЯ МНОГОРАКУРСНОЙ МАСШТАБИРУЕМОСТИ 2020
  • Ван, Е-Куй
RU2822508C1

Иллюстрации к изобретению RU 2 832 719 C1

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

Изобретение относится к кодированию видео. Техническим результатом является повышение эффективности кодирования видео. Результат достигается тем, что битовый поток включает в себя текущий набор параметров последовательности (SPS), содержащий синтаксические элементы, которые применяются к видеопоследовательности, причем способ декодирования упомянутого битового потока содержит этапы, на которых: получают первый синтаксический элемент, используемый для определения максимального количества временных подслоев, которому допустимо присутствовать в каждой кодированной послойно видеопоследовательности (CLVS), ссылающейся на текущий SPS, при этом значение первого синтаксического элемента находится в диапазоне от 0 до первого значения, причем первое значение является значением второго синтаксического элемента, используемого для определения максимального количества временных подслоев, которому допустимо присутствовать в слое в каждой кодированной видеопоследовательности (CVS), ссылающейся на набор параметров видео (VPS), когда на второй синтаксический элемент ссылается SPS, и первое значение является предварительно установленным значением, когда на второй синтаксический элемент не ссылается SPS; декодируют битовый поток на основе значения первого синтаксического элемента. 10 н. и 8 з.п. ф-лы, 14 ил., 6 табл.

Формула изобретения RU 2 832 719 C1

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

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

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

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

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

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

5. Способ по любому одному из пп.1-4, в котором второй синтаксический элемент находится в VPS.

6. Способ по любому одному из пп.1-5, в котором первый синтаксический элемент находится в SPS.

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

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

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

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

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

9. Способ по п.7 или 8, в котором второй синтаксический элемент находится в VPS.

10. Способ по любому одному из пп.7-9, в котором первый синтаксический элемент находится в SPS.

11. Устройство декодирования, содержащее схему обработки для выполнения способа по любому из пп.1-6.

12. Устройство кодирования, содержащее схему обработки для выполнения способа по любому из пп.7-10.

13. Устройство декодирования, содержащее:

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

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

14. Устройство кодирования, содержащее:

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

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

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

16. Долговременный машиночитаемый носитель, несущий программный код, который при его исполнении компьютерным устройством предписывает компьютерному устройству выполнять способ по любому из пп.7-10.

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

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

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

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

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

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

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

US 2020077107 A1, 2020.03.05
US 9473771 B2, 2016.10.18
US 2016234516 A1, 2016.08.11
US 10554981 B2, 2020.02.04
US 2019014337 A1, 2019.01.10
ПРИМЕНИМОСТЬ БИТОВОГО СУБПОТОКА К ВЛОЖЕННЫМ SEI-СООБЩЕНИЯМ ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Ван Е-Куй
RU2633100C2
ТЕСТИРОВАНИЕ НА СООТВЕТСТВИЕ БИТОВОГО ПОТОКА 2013
  • Ван Е-Куй
RU2613737C2
ПЕРЕНОС ПОТОКОВ БИТОВ РАСШИРЕНИЯ СТАНДАРТА ВЫСОКОЭФФЕКТИВНОГО КОДИРОВАНИЯ ВИДЕО (HEVC) И БУФЕРНОЙ МОДЕЛИ С ПОМОЩЬЮ СИСТЕМ СТАНДАРТА ЭКСПЕРТНОЙ ГРУППЫ ПО ДВИЖУЩИМСЯ ИЗОБРАЖЕНИЯМ (MPEG)-2 2015
  • Чэнь Ин
  • Ван Е-Куй
RU2685233C2

RU 2 832 719 C1

Авторы

Ван, Бяо

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

Алшина, Елена Александровна

Котра, Ананд Меер

Гао, Хань

Даты

2024-12-28Публикация

2021-03-24Подача