КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, УПРОЩАЮЩИЕ СИГНАЛИЗАЦИЮ ЭЛЕМЕНТОВ СИНТАКСИСА ЗАГОЛОВКА СЛАЙСА Российский патент 2024 года по МПК H04N19/174 H04N19/176 H04N19/129 H04N19/70 

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

ОБЛАСТЬ ТЕХНИКИ

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

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

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

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

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

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

Настоящее изобретение обеспечивает:

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

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

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

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

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

В способе, описанном выше, значение по умолчанию может быть равно 0.

В способе, как описано выше, адрес слайса может быть в единицах тайла.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фиг. 6 иллюстрирует пример картинки, разделенной на CTU;

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

Фиг. 8 является примером тайлов, слайсов и субкартинок;

Фиг. 9 показан порядок растрового сканирования в картинке CTU и один слайс в картинке, в качестве примера;

Фиг. 10 иллюстрирует картинку, которая разделена на 12 тайлов и 3 слайса;

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

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

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

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

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

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

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

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

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

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

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

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

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

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

В нижеследующих вариантах осуществления системы 10 видеокодировки, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1A по 3.

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

Как показано на ФИГ. 1A, система 10 кодировки содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 картинки, например, в устройство-получатель 14 для декодирования кодированных данных 21 картинки.

Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 картинки, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 картинки, и интерфейс связи или блок 22 связи.

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

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

Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 картинки и выполнения предварительной обработки в отношении этих данных 17 картинки для получения предварительно обработанной картинки 19 или предварительно обработанных данных 19 картинки. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.

Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 картинки и предоставления кодированных данных 21 картинки (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).

Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 картинки и передачи этих кодированных данных 21 картинки (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например, устройство-получатель 14 или любое другое устройство для сохранения или непосредственного восстановления.

Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.

Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 картинки (или любой их дополнительно обработанной версии), например, непосредственно от устройства-источника 12 или от любого другого источника, например, запоминающего устройства, например, устройства хранения кодированных данных картинки, и предоставления кодированных данных 21 картинки в декодер 30.

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема данных 21 кодированной картинки или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например, прямое проводное или беспроводное соединение, или через сеть любого типа, например, проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.

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

Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки и/или распаковки передачи для получения данных 21 кодированной картинки.

Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например, отправки и приема сообщений, например, для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например, передаче данных кодированной картинки.

Декодер 30 выполнен с возможностью приема данных 21 кодированной картинки и предоставления данных 31 декодированной картинки или декодированной картинки 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг.3 или Фиг.5.

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

Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 картинки для отображения картинки, например, пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленной картинки, например, интегрированный или внешней дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидкий кристалл на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.

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

Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенная видеокодировка или любые их комбинации. Кодер 20 может быть реализован с помощью схемы 46 обработки для воплощения различных модулей, как описано в отношении кодера 20 на фиг. 2 и/или любой другой системы кодера или подсистемы, описанной здесь. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с ФИГ. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на Фиг.5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем невременном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг.1B.

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

В некоторых случаях система 10 видеокодировки, проиллюстрированная на ФИГ. 1A, является лишь примером, а способы настоящего раскрытия могут применяться к настройкам видеокодировки (например, видеокодирования или видеодекодирования), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.

Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективную видеокодировку (HEVC) или на эталонное программное обеспечение универсальной видеокодировки (VVC), стандарт видеокодировки следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодировке (JCT-VC) экспертной группы по видеокодированию ITU-T (VCEG) и экспертной группы по движущимся картинкам ISO/IEC (MPEG). Специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.

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

Фиг. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации методик согласно настоящему раскрытию. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных картинок, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разделения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.

Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого пути прохождения (тракта) сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных картинок (DPB) 230, блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20.

Картинки и разделение картинок (картинки и блоки)

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

(Цифровая) картинка является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента картинки) или pel (элемент картинки). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или картинки определяет размер и/или разрешение картинки. Для представления цвета обычно используются три цветовые компоненты, т.е. картинка может быть представлена или включать в себя три массива выборок. В формате RGB или цветовом пространстве картинка содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировке каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например, YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновой картинке), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, картинка в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Картинки в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если картинка является монохромной, она может содержать только массив выборок яркости. Соответственно, картинка может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.

Варианты осуществления видеокодера 20 могут содержать блок разделения картинки (не показан на Фиг. 2), выполненный с возможностью разделения картинки 17 на множество (обычно не перекрывающихся) блоков 203 картинки. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодировки (CTB) или единицами дерева кодировки (CTU) (H.265/HEVC и VVC). Блок разделения картинки может быть выполнен с возможностью использования одного и того же размера блока для всех картинок в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между картинками или подмножествами или группами картинок и разделения каждой картинки на соответствующие блоки.

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

Подобно картинке 17, блок 203 картинки снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем картинка 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромной картинки 17 или массив яркости или цветности в случае цветной картинки) или три массива выборок (например, яркость и два массива цветности в случае цветной картинки 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, быть массивом MxN выборок (M-столбец на N-строка) или массивом MxN коэффициентов преобразования.

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

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

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

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

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

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

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

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

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

Квантование

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

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

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

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

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

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

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

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

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

Фильтрация

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

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

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

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

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

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

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

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

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

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

Разделение

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

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

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

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

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

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

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

Внутреннее предсказание

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

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

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

Внешнее предсказание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фильтрация

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

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

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

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

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

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

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

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

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

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

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

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

Следует отметить, что дополнительные операции могут применяться к выводимым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон составляет -32768 ~ 32767; если bitDepth установлена равной 18, диапазон составляет -131072~131071. Например, значение выводимого вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4×4 не превышала N пикселей, например, была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.

Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операций

где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или субблока, а ux и uy указывает промежуточное значение;

Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В вычислительной системе десятичные числа хранятся как дополнение до двух. Дополнением до двух для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двух является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).

Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).

Способ 2: удаление MSB переполнения посредством усечения значения

vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)

vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)

где vx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:

Clip3( x, y, z ) =

Фиг. 4 является схематичным представлением устройства 400 видеокодировки согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодировки подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодировки может быть декодером, таким как видеодекодер 30 по ФИГ. 1A, или кодером, таким как видеокодер 20 по ФИГ. 1А.

Устройство 400 видеокодировки содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодировки также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.

Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодировки. Модуль 470 кодировки реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодировки реализует, обрабатывает, подготавливает или предоставляет различные операции кодировки. Следовательно, включение модуля 470 кодировки обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодировки и обеспечивает трансформацию устройства 400 видеокодировки в другое состояние. В качестве альтернативы модуль 470 кодировки реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.

Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).

Фиг. 5 является упрощенной блок-схемой аппаратуры 500, которая может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления.

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

Память 504 в аппаратуре 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в некоторой реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодировки, которое выполняет описанные в данном документе способы.

Аппаратура 500 может также включать в себя одно или более устройств вывода, например, дисплей 518. Дисплей 518 может быть, в одном примере, дисплеем, чувствительным к касанию, который объединяет дисплей с элементом, чувствительным к касанию, который выполнен с возможностью считывать вводы касанием. Дисплей 518 может быть соединен с процессором 502 через шину 512.

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

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

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

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

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

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

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

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

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

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

http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/17_Brussels/wg11/JVET-Q2001-v11.zip. В оставшейся части заявки этот документ предшествующего уровня техники для простоты будет называться проект VVC 8.

Некоторые элементы синтаксиса в SPS сигнализируют информацию о позиции и флаги управления каждой субкартинки. Информация о позиции для i-й субкартинки включает в себя:

subpic_ctu_top_left_x[i], указывающий горизонтальную составляющую верхней левой координаты субкартинки i в картинке; или

subpic_ctu_top_left_y[i], указывающий вертикальную составляющую верхней левой координаты субкартинки i в картинке; или

subpic_width_minus1[i], указывающий ширину субкартинки i в картинке; или

subpic_height_minus1[i] указывает высоту субкартинки i в картинке.

Некоторые элементы синтаксиса указывают количество субкартинок внутри картинки, например, sps_num_subpics_minus1.

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

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

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

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

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

- Все CTU в субкартинке принадлежат одному и тому же тайлу.

- Все CTU в тайле принадлежат одной и той же субкартинке.

Разделение картинки на CTU, слайсы, тайлы и субкартинки

Разделение картинки на CTU

Картинки делятся на последовательность единиц дерева кодировки (CTU). Термины CTB (блок дерева кодировки) иногда используются взаимозаменяемо. Концепция CTU аналогична концепции HEVC. Для картинки, которая имеет три массива выборок, CTU состоит из блока N×N выборок яркости вместе с двумя соответствующими блоками выборок цветности. На Фиг. 6 показан пример картинки, разделенной на CTU. Размер CTU внутри кадра должен быть одинаковым, за исключением тех, которые находятся на границах картинки (где могут присутствовать неполные CTU).

Разделение картинки на тайлы

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

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

Когда внутри картинки есть более 1 тайла, порядок сканирования CTU изменяется. CTU сканируются по следующему правилу:

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

2. Внутри тайла, CTU сканируются в порядке растрового сканирования. Внутри строки CTU, CTU сканируются слева направо, а строки CTU сканируются сверху вниз. Фиг. 7 иллюстрирует порядок сканирования CTU при наличии тайлов, причем числа внутри CTU указывают порядок сканирования.

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

Термины «порядок обработки» и «порядок сканирования» используются в описании следующим образом:

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

Разделение картинки на слайсы

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

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

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

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

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

Разделение картинки на субкартинки

Разделение прямоугольной субкартинки для картинки. Субкартинкой может быть вся картинка или ее часть. Субкартинка - это разделение картинки таким образом, что каждая субартинка может быть декодируемой независимо от других субкартинок всей видеопоследовательности. В проекте 8 VVC это верно, когда это указано в битовом потоке. Т.е. когда указание subpic_treated_as_pic_flag[i] является истинным для субкартинки i, то эта субкартинка i является декодируемой независимо от других субкартинок всей видеопоследовательности.

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

В проекте VVC 8, субкартинка содержит один или несколько слайсов, которые вместе покрывают прямоугольную область картинки. Следовательно, каждая граница субкартинки всегда является границей слайса, а каждая вертикальная граница субкартинки всегда является вертикальной границей тайла.

Фиг. 8 предоставляет пример тайлов, слайсов и субкартинок. Другими словами, фиг. 8 иллюстрирует пример картинки, содержащей 4 тайла, т.е. 2 столбца тайлов и 2 строки тайлов, 4 прямоугольных слайса и 3 субкартинки. Субкартинка 1 содержит два слайса.

В примере, показанном на фиг. 8, картинка разделена на 216 CTU, 4 тайла, 4 слайса и 3 субкартинки. Значение sps_num_subpics_minus1 равно 2, а элементы синтаксиса, связанные с позицией, имеют следующие значения:

Для субкартинки 0

subpic_ctu_top_left_x[0], не сигнализируется, но выводится как 0;

subpic_ctu_top_left_y[0], не сигнализируется, но выводится как 0;

subpic_width_minus1[0], значение равно 8;

subpic_height_minus1[ 0 ] , значение равно 11.

Для субкартинки 1

subpic_ctu_top_left_x[1], значение равно 9;

subpic_ctu_top_left_y[1], значение равно 0;

subpic_width_minus1[ 1 ], значение равно 8;

subpic_height_minus1[ 1 ] , значение равно 5.

Для субкартинки 2

subpic_ctu_top_left_x[ 2 ], значение равно 9;

subpic_ctu_top_left_y[ 2 ], значение равно 6;

subpic_width_minus1[ 2 ], не сигнализируется, но выводится как 8;

subpic_height_minus1[ 2 ], не сигнализируется, но выводится как 5.

Сигнализация тайлов

Следующая таблица 2 иллюстрирует сигнализацию тайлов и координат тайлов внутри картинки из синтаксической таблицы RBSP набора параметров картинки проекта VVC 8.

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

Элемент tile_column_width_minus1[ i ] синтаксиса указывает ширину i-го столбца тайла. Элемент tile_row_height_minus1[ i ] синтаксиса указывает высоту i-й строки тайла.

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

Индексация тайлов осуществляется в соответствии с «порядком сканирования тайлов в картинке». Тайлы в картинке упорядочены (сканируются) в соответствии с порядком растрового сканирования, первый тайл, который находится в верхнем левом углу картинки, является 0-м тайлом, а индекс увеличивается слева направо в каждой строке тайлов и после сканируется последний тайл в строке тайлов, затем самый левый тайл следующей строки тайлов (на одну ниже текущей строки тайлов).

Сигнализация слайсов

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

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

В приведенной выше таблице 3 элемент num_slices_in_pic_minus1 синтаксиса указывает число слайсов внутри картинки. Tile_idx_delta[i] указывает разницу между индексами тайла первого тайла (i+1)-го и i-ого слайса. Например, индекс первого тайла первого слайса в картинке равен 0. Если индекс тайла первого тайла второго внутри картинки равен 5, то Tile_idx_delta[0] равен 5. В этом контексте индекс тайла используется как адрес слайса, т.е. индекс первого тайла слайса является начальным адресом слайса.

slice_width_in_tiles_minus1[i] и slice_height_in_tiles_minus1[i] указывают ширину и высоту i-го слайса внутри картинки в числе тайлов.

В приведенной выше таблице 3, если slice_width_in_tiles_minus1[i] и slice_height_in_tiles_minus1[i] оба равны 0 (указывая, что i-й слайс имеет размерность не более 1 тайла в высоту и 1 тайла в ширину), то элемент num_exp_slices_in_tile[i ] синтаксиса может быть включен в битовый поток. Этот элемент синтаксиса указывает число слайсов внутри тайла.

Как объяснялось ранее, в соответствии с проектом VVC 8 слайс может содержать несколько полных тайлов, или тайл может содержать несколько полных слайсов, а другие альтернативы запрещены. В соответствии с приведенной выше таблицей 3 синтаксиса сначала указывается число тайлов внутри слайса (путем включения slice_width_in_tiles_minus1[i] и slice_height_in_tiles_minus1[i]). Кроме того, если число тайлов внутри слайса равно 1 в соответствии с указанием, указывается число слайсов внутри упомянутого тайла (посредством num_exp_slices_in_tile[i]). Таким образом, если slice_width_in_tiles_minus1[i] и slice_height_in_tiles_minus1[i] равны 1, фактический размер слайса может быть равен или меньше 1 тайла.

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

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

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

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

3. Для первого слайса в картинке указывается только ширина и высота слайса в числе тайлов. Начальный адрес первого слайса явно не сигнализируется, а скорее выводится как tileIdx 0 (первый тайл в картинке - это первый тайл в первом слайсе картинки).

4. Если размер первого слайса равен 1 тайлу в ширину и 1 тайлу в высоту, и если внутри тайла, содержащегося в первом слайсе, содержится более 1 строки CTU, то сигнализируется элемент num_exp_slices_in_tile[ 0 ] синтаксиса, который указывает, сколько слайсов содержится в упомянутом тайле (называемый numSlicesInTile[0]).

5. Для каждого от второго до последнего слайса (включая второй слайс, но исключая последний слайс) на картинке явно указывается ширина и высота слайса в числе тайлов. Начальный адрес слайса может быть явно указан элементом tile_idx_delta[i] синтаксиса, где i - индекс слайса. Если начальный адрес явно не сигнализируется (например, если слайсы сигнализируются в порядке, позволяющем сделать вывод о начальной позиции следующего слайса с использованием начальной позиции, ширины и высоты текущего слайса), то начальный адрес слайса выводится через функцию.

6. Если размер n-го слайса (n находится между 2 и числом слайсов в картинке минус 1) равен 1 тайлу в ширину и 1 тайлу в высоту, и если не больше 1 строки CTU внутри тайла, который содержится в первом слайсе, то сигнализируется элемент num_exp_slices_in_tile[ n ] синтаксиса, который указывает, сколько слайсов содержится в упомянутом тайле.

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

slice_width_in_tiles_minus1[i]=NumTileColumns - 1 - tileX slice_height_in_tiles_minus1[i]=NumTileRows - 1 - tileY

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

Переменные tileX, tileY, NumTileColumns, NumTileRows в приведенном выше уравнении объясняются позже.

Раздел 6.5.1 проекта 8 VVC

6.5.1 Процессы растрового сканирования CTB, сканирования тайлов и сканирования подкартинок

Для прямоугольных слайсов список NumCtusInSlice[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно с указанием числа CTU в i-м слайсе, список SliceTopLeftTileIdx[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно с указанием индекса верхнего левого тайла слайса и матрица CtbAddrInSlice[ i ][ j ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно и j в диапазоне от 0 до NumCtusInSlice[ i ] - 1 включительно, указывающая адрес растрового сканирования картинки j-го CTB в i-м слайсе, выводятся следующим образом:

Где функция AddCtbsToSlice( sliceIdx, startX, stopX, startY, stopY) указана следующим образом:

Опять же, для полноты описания, универсальное кодирование видео в соответствии с Рекомендацией ITU-T H.266 (ISO/IEC 23090-3:2020) cited via http://handle.itu.int/11.1002/1000/14336, of 2020-08-29, цитирует почти то же, что и

Когда rect_slice_flag равен 1, список NumCtusInSlice[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно, с указанием числа CTU в i-м слайсе, список SliceTopLeftTileIdx[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно, с указанием индекса тайла, содержащего первую CTU в слайсе, и матрица CtbAddrInSlice[ i ][ j ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно и j в диапазоне от 0 до NumCtusInSlice[ i ] - 1 включительно, с указанием адрес сканирования растра картинки j-го CTB в i-м слайсе, и переменная NumSlicesInTile[ i ], указывающая число слайсов в тайле, содержащем i-й слайс, выводятся следующим образом:

Где функция AddCtbsToSlice(sliceIdx, startX, stopX, startY, stopY) указана следующим образом:

Теперь со ссылкой на указанный выше текст проекта 8 VVC.

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

Подпункт 6.5.1 проекта VVC 8 определяет порядок сканирования CTU внутри слайса i, где i - индекс слайса. Матрица CtbAddrInSlice[ i ][ n ], являющаяся выходными данными этого подпункта, указывает порядок сканирования CTU внутри слайса i, где n - индекс CTU, который находится в диапазоне от 0 до числа CTU слайса i. Значение CtbAddrInSlice[ i ][ n ] указывает адрес n-й CTU в слайсе i (в порядке растрового сканирования картинки).

На фиг.9 в качестве примера показан порядок растрового сканирования в картинке CTU («порядок растрового сканирования CTU в картинке») и один слайс (слайс 5, т.е. 5-й слайс в картинке) в картинке. Другими словами, фиг. 9 иллюстрирует порядок растрового сканирования CTU внутри картинки, при этом картинка состоит из 1 тайла и 1 субкартинки.

В соответствии с этим примером значения CtbAddrInSlice следующие:

CtbAddrInSlice[4][0]=27

CtbAddrInSlice[4][1]=28

CtbAddrInSlice[4][2]=29

CtbAddrInSlice[4][3]=30

CtbAddrInSlice[4][4]=37

CtbAddrInSlice[4][5]=38

CtbAddrInSlice[4][6]=39

CtbAddrInSlice[4][7]=40

Термины, используемые в раскрытии

«порядок сканирования тайлов в картинке», поясняется в раскрытии

«Порядок сканирования CTU внутри плитки», поясняется в раскрытии

«Порядок сканирования CTU внутри тайла», поясняется в описании.

«Порядок растрового сканирования CTU в картинке», поясняется в раскрытии

«Порядок сканирования CTU внутри картинки на основе тайлов»

«Порядок сканирования» относится к индексации в соответствии с порядком увеличения индекса X в Y.

«Обработка» означает декодирование или кодирование в кодере или декодере. Следовательно, порядок обработки означает порядок, в котором X (например, CTU) обрабатывается в кодере или декодере.

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

1. Используя явную индикацию или логический вывод, определить адрес начального тайла слайса в числе тайлов.

2. Для каждого слайса, кроме последнего слайса, сигнализировать, сколько тайлов содержит слайс.

Если определено, что слайс содержит только 1 тайл, указать, сколько слайсов содержится в тайле.

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

Другими словами, в проекте VVC 8, если размер последнего слайса в картинке больше или равен 1 тайлу по ширине и высоте в обоих измерениях, размер последнего слайса выводится и не сигнализируется.

Это можно увидеть в таблице 3, где slice_width_in_tiles_minus1[ i ] и slice_height_in_tiles_minus1[ i ] (которые указывают ширину и высоту i-го слайса в числе тайлов соответственно) включаются в битовый поток, если они меньше, чем num_slices_in_pic_minus1 (due to the for-loop “for( i = 0; i < num_slices_in_pic_minus1; i++ )” ). Следовательно, ширина и высота слайса не сигнализируются, когда i равно num_slices_in_pic_minus1, то есть для последнего слайса.

Сопоставление яркости с масштабированием цветности (LMCS)

В VVC инструмент кодирования, называемый сопоставлением яркости с масштабированием цветности (LMCS), добавляется в качестве нового блока обработки перед циклическими фильтрами. LMCS состоит из двух основных компонентов: 1) внутриконтурное сопоставление яркостной составляющей на основе адаптивных кусочно-линейных моделей; 2) для компонентов цветности применяется зависящее от яркости остаточное масштабирование цветности. Фиг. 11 показывает архитектуру LMCS с точки зрения декодера. Блоки, заштрихованные светло-голубым цветом на фиг. 11 указывают, где применяется обработка в сопоставленной области; и они включают в себя обратное квантование, обратное преобразование, внутреннее предсказание яркости и добавление предсказания яркости вместе с остатком яркости. Незаштрихованные блоки на фиг. 11 указывают, где применяется обработка в исходной (т.е. несопоставленной) области; и они включают в себя контурные фильтры, такие как деблокировка, ALF и SAO, предсказание с компенсацией движения, внутреннее предсказание цветности, добавление предсказания цветности вместе с остатком цветности и сохранение декодированных картинок в качестве опорных картинок. Светло-желтые заштрихованные блоки на фиг. 11 представляют собой новые функциональные блоки LMCS, включая прямое и обратное сопоставление сигнала яркости и процесс масштабирования цветности в зависимости от яркости. Как и большинство других инструментов в VVC, LMCS можно включать/отключать на уровне последовательности с помощью флага SPS.

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

заголовок слайса:

Таблица 4 иллюстрирует часть синтаксической структуры заголовка слайса проекта VVC 8. Строки, содержащие «…», указывают на то, что некоторые строки в таблице 4 опущены.

В заголовке слайса элементы синтаксиса указывают следующее:

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

slice_address указывает индекс первого тайла слайса.

num_tiles_in_slice_minus1 указывает число тайлов, включенных в слайс.

Фиг. 10 иллюстрирует картинку, которая разделена на 12 тайлов и 3 слайса. Или, другими словами, фиг. 10 иллюстрирует картинку с CTU яркости 18 на 12, которая разделена на 12 тайлов и 3 слайса растрового сканирования.

В этом примере, показанном на фиг. 10, адрес слайса и элементы num_tiles_in_slice_minus1 синтаксиса принимают следующие значения для каждого слайса картинки:

слайс 1

slice_address=0, начальный адрес слайса - индекс 0 тайла.

num_tiles_in_slice_minus1=1, слайс состоит из 2 тайлов.

Часть 2

slice_address=2, начальный адрес слайса - индекс 2 тайла.

num_tiles_in_slice_minus1=5, слайс состоит из 5 тайлов.

слайс 3

slice_address=7, начальный адрес слайса - индекс 7 тайла.

num_tiles_in_slice_minus1=4, слайс состоит из 5 тайлов.

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

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

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

Заголовок картинки

1. 7.3.2.6 Синтаксис RBSP заголовка картинки

В приведенной выше таблице 5 представлен синтаксис заголовка изображения в соответствии с проектом VVC 8. Он включает в себя структуру заголовка картинки и rbsp_trailing_bits(), которые являются битами-заполнителями, делающими число битов в заголовке картинки равным кратному 8.

Структура заголовка картинки

2. 7.3.2.7 Синтаксис структуры заголовка изображения

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

ph_lmcs_enabled_flag, равный 1, указывает, что сопоставление яркости с масштабированием цветности включено для всех слайсов, связанных с PH. ph_lmcs_enabled_flag, равный 0, указывает, что сопоставление яркости с масштабированием цветности может быть отключено для одного, нескольких или всех слайсов, связанных с PH. Если он отсутствует, предполагается, что значение ph_lmcs_enabled_flag равно 0.

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

Кроме того, в проекте VVC 8 есть еще одно ограничение: если структура заголовка картинки находится в заголовке слайса, то картинка должна состоять только из одного слайса (то есть картинку нельзя разделить на несколько слайсов.

Текущий проект VVC 8 неэффективен, поскольку slice_adress и num_tiles_in_slice_minus1 в некоторых случаях избыточно включаются в битовый поток. Избыточное включение slice_adress и num_tiles_in_slice_minus1 в битовый поток увеличивает битрейт, поскольку каждый заголовок слайса картинки может включать в себя этот синтаксический элемент, следовательно, снижается эффективность сжатия.

Вариант 1 осуществления

В соответствии с вариантом осуществления наличие элементов slice_address и num_tiles_in_slice_minus1 синтаксиса в заголовке слайса управляется на основе наличия структуры заголовка картинки в заголовке слайса.

Изобретение может быть реализовано, как показано в таблице 7 выше. В соответствии с изобретением slice_address включается в заголовок слайса, когда условие в строке 6 оценивается как истинное. Другими словами, slice_address включается в заголовок слайса, если:

число тайлов в картинке больше 1 И разрешены непрямоугольные слайсы (rect_slice_flag=0) И структура заголовка картинки отсутствует в заголовке слайса.

или

(rect_slice_flag=1) и число слайсов в текущей субкартинке больше 1.

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

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

Строка 10 в приведенной выше таблице 7 показывает реализацию изобретения, где num_tiles_in_slice_minus1 включается в заголовок слайса, если:

Rect_slice_flag равен 0 и число тайлов в картинке больше 1, а picture_header_in_slice_header_flag равен 0.

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

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

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

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

Дополнительно или альтернативно наличие num_tiles_in_slice_minus1 в заголовке слайса определяется разницей между числом тайлов в картинке (например, NumTilesInPic в приведенной выше таблице 8) и slice_address.

Более конкретно, если разница между числом тайлов в картинке и slice_address меньше порогового значения, num_tiles_in_slice_minus1 не включается в заголовок слайса, и предполагается, что его значение равно предварительно определенному числу. Например, если разница между NumTilesInPic и slice_address меньше или равна 1, num_tiles_in_slice_minus1 не включается в поток битов, и его значение считается равным 0 (указывая, что в текущем слайсе есть один тайл).

slice_address указывает адрес слайса. Если он отсутствует, предполагается, что значение slice_address равно 0.

Если rect_slice_flag равен 0, применяется следующее:

Адрес слайса - это индекс тайла растрового сканирования первого тайла в слайсе.

Длина slice_address составляет Ceil(Log2 (NumTilesInPic)) бит.

Значение slice_address должно быть в диапазоне от 0 до NumTilesInPic - 1 включительно.

В противном случае (rect_slice_flag равен 1) применяется следующее:

Адрес слайса представляет собой индекс слайса на уровне субкадра текущего слайса, т. е. SubpicLevelSliceIdx[ j ], где j является индексом слайса на уровне картинки текущего слайса.

Длина slice_address составляет Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) бит.

Значение slice_address должно находиться в диапазоне от 0 до NumSlicesInSubpic[CurrSubpicIdx] - 1 включительно.

Требованием соответствия битового потока являются следующие ограничения:

Если rect_slice_flag равен 0 или sps_subpic_info_present_flag равен 0, значение slice_address не должно быть равно значению slice_address любой другой кодированной единицы NAL слайса той же кодированной картинки.

В противном случае пара значений subpic_id и slice_address не должна быть равна паре значений subpic_id и slice_address любой другой кодированной единицы NAL слайса той же кодированной картинки.

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

num_tiles_in_slice_minus1 плюс 1, если присутствует, указывает число тайлов в слайсе. Значение num_tiles_in_slice_minus1 должно быть в диапазоне от 0 до NumTilesInPic - 1 включительно. Если он отсутствует, значение num_tiles_in_slice_minus1 должно считаться равным 0.

Переменная NumCtusInCurrSlice, указывающая число CTU в текущем слайсе, и список CtbAddrInCurrSlice[ i ], для i в диапазоне от 0 до NumCtusInCurrSlice - 1 включительно, указывающий адрес растрового сканирования картинки i-го CTB в слайсе, получаются следующим образом:

Переменные SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos и SubpicBotBoundaryPos получаются следующим образом:

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

Дополнительно или в качестве альтернативы присутствие slice_lmcs_enabled_flag в заголовке слайса управляется на основании наличия структуры заголовка картинки в заголовке слайса. Пример реализации включен в таблицу 9 выше в строке 15.

Более конкретно, если структура заголовка картинки включена в заголовок слайса, slice_lmcs_enabled_flag не включается в заголовок слайса. Кроме того, если значение slice_lmcs_enabled_flag не включено в заголовок слайса, его можно вывести в соответствии со следующим правилом:

Предполагается, что значение slice_lmcs_enabled_flag равно ph_lmcs_enabled_flag.

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

Предполагается, что значение slice_lmcs_enabled_flag равно ph_lmcs_enabled_flag, когда picture_header_in_slice_header_flag равен 1 (структура заголовка картинки включена в заголовок слайса).

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

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

Вышеприведенные варианты осуществления могут быть реализованы путем замены условия “!rect_slice_flag && NumTilesInPic > 1” в строках 6 и 10 на “!rect_slice_flag”. В некоторых примерах реализации, если значение rect_slice_flag равно 0, что указывает на то, что слайсы в картинке не обязательно прямоугольные, значение синтаксического элемента NumTilesInPic должно быть больше 0 (например, число тайлов в слайсе должно быть больше 1). ). Другими словами, значение rect_slice_flag может быть равно 0 только в том случае, если число тайлов в картинке больше 1. В такой реализации условия “!rect_slice_flag && NumTilesInPic > 1” и “!rect_slice_flag” будут иметь одинаковые результаты. Следовательно, условия (в строках 6 и 10 во всех вышеприведенных вариантах осуществления), условия, включающие в себя часть including “!rect_slice_flag && NumTilesInPic > 1” условия могут быть заменены на “!rect_slice_flag”.

Вышеприведенные варианты осуществления могут быть реализованы путем замены условия “!rect_slice_flag && NumTilesInPic > 1” в строках 6 и 10 на “!rect_slice_flag”. В некоторых примерах реализации, если значение rect_slice_flag равно 0, это указывает на то, что каждый слайс в картинке содержит один или несколько тайлов, и если picture_header_in_slice_header_flag равен 0, что указывает на то, что число слайсов в картинке больше 1, поэтому NumTilesInPic должен быть больше чем 1, если picture_header_in_slice_header_flag равен 0, а rect_slice_flag равен 0.

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

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

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

Фиг. 16 иллюстрирует аппаратуру, то есть декодер (30), для декодирования битового потока видео согласно варианту осуществления настоящего изобретения. Аппаратура, показанная на фиг. 16 представляет собой аппаратуру (30) для декодирования картинки из битового потока видео, причем битовый поток включает в себя заголовок слайса текущего слайса и данные, представляющие текущий слайс, причем аппаратура содержит: блок (3001) получения, выполненный с возможностью получения параметра, используемого для выведения числа тайлов в текущем слайсе из заголовка слайса в случае, если выполняется условие, при этом условие содержит: адрес слайса текущего слайса не является адресом последнего тайла в картинке, где расположен текущий слайс ; блок (3003) восстановления, выполненный с возможностью восстановления текущего слайса с использованием упомянутого числа тайлов в текущем слайсе и данных, представляющих текущий слайс.

Фиг. 17 иллюстрирует аппаратуру, то есть кодер (20), для кодирования битового потока видео согласно варианту осуществления настоящего раскрытия. Аппаратура, показанная на фиг. 17 представляет собой аппаратуру (20) для кодирования битового потока закодированного видео, при этом битовый поток включает в себя заголовок слайса текущего слайса и данные, представляющие текущий слайс, причем аппаратура содержит: блок (2001) кодирования, выполненный с возможностью кодирования параметра, используемого для выведения числа тайлов в текущем слайсе из заголовка слайса, в случае выполнения условия, при этом условие содержит: адрес слайса текущего слайса не является адресом последнего тайла в картинке, где расположен текущий слайс; блок (2003) восстановления, выполненный с возможностью восстановления текущего слайса с использованием упомянутого числа тайлов в текущем слайсе и данных, представляющих текущий слайс.

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

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

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

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

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

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

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

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

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

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

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

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

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

Математические операторы, используемые в этом раскрытии, аналогичны тем, которые используются в языке программирования 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 and y > 0.

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

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

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 включительно в единицах радиан.

Atan2( y, x )=

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

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

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

Clip3( x, y, z )=

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

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

GetCurrMsb( a, b, c, d )=

Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2.718 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 в единицах радиан.

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

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

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

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

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

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

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

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

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

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

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

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

Настоящее раскрытие раскрывает следующие двадцать один дополнительный аспект.

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

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

3. Аспект способа по аспектам 1 или 2, в котором значение адреса слайса текущего слайса выводится равным нулю, когда условие присутствия не удовлетворяется.

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

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

6. Аспект способа по аспектам 4 или 5, в котором значение параметра текущего слайса выводится равным общему числу тайлов в картинке, где текущий слайс минус 1, когда условие присутствия не удовлетворяется.

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

8. Аспект способа по аспекту 7, в котором адрес слайса текущего слайса, являющегося адресом последнего тайла в картинке, содержит число тайлов в картинке минус адрес слайса текущего слайса равно 1.

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

10. Аспект способа по аспекту 9, в котором значение по умолчанию равно 0.

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

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

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

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

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

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

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

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

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

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

20. Аспект кодированного битового потока для видеосигнала посредством включения множества элементов синтаксиса, при этом множество элементов синтаксиса содержит picture_header_in_slice_header_flag, и при этом флаг (такой как slice_lmcs_enabled_flag) условно сигнализируется в заголовке слайса, по меньшей мере, на основе значения picture_header_in_slice_header_flag.

21. Аспект невременного носителя записи, который включает в себя закодированный битовый поток, декодированный устройством декодирования картинки, при этом битовый поток генерируется путем разделения кадра видеосигнала или сигнала изображения на множество блоков и включает в себя множество элементов синтаксиса, при этом множество элементов синтаксиса содержит rect_slice_flag или sps_num_subpics_minus1, и при этом флаг (такой как slice_lmcs_enabled_flag) условно сигнализируется в заголовке слайса, по меньшей мере, на основе значения picture_header_in_slice_header_flag.

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

название год авторы номер документа
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ УПРОЩЕНИЯ СИГНАЛИЗАЦИИ ЗАГОЛОВКА КАРТИНКИ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Гао, Хань
  • Котра, Ананд Меер
  • Алшина, Елена Александровна
RU2823042C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ 2020
  • Ма, Сян
  • Ян, Хайтао
RU2823668C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ 2020
  • Ма, Сян
  • Ян, Хайтао
RU2830551C1
ФЛАГИ ФИЛЬТРА ДЛЯ УСТРАНЕНИЯ БЛОЧНОСТИ СУБКАРТИНОК 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чен, Цзянле
RU2825099C2
ФЛАГИ ФИЛЬТРА ДЛЯ УСТРАНЕНИЯ БЛОЧНОСТИ СУБКАРТИНОК 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чен, Цзянле
RU2825100C2
ФЛАГИ ФИЛЬТРА ДЛЯ УСТРАНЕНИЯ БЛОЧНОСТИ СУБКАРТИНОК 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чен, Цзянле
RU2825023C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2800681C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ С ИСПОЛЬЗОВАНИЕМ АДАПТИВНОГО КОНТУРНОГО ФИЛЬТРА 2020
  • Котра, Ананд Меер
  • Эсенлик, Семих
  • Чен, Цзянле
  • Гао, Хань
  • Ван, Бяо
RU2823558C2
ОГРАНИЧЕНИЕ СОГЛАСОВАННОСТИ ДЛЯ СОВМЕЩЕННОГО ОПОРНОГО ИНДЕКСА В КОДИРОВАНИИ ВИДЕО 2017
  • Джоши Раджан Лаксман
  • Серегин Вадим
  • Ван Е-Куй
  • Рапака Кришнакантх
  • Карчевич Марта
RU2733267C2
СПОСОБ ВЫЧИСЛЕНИЯ ПОЗИЦИИ ОПОРНОЙ ВЫБОРКИ ЦЕЛОЧИСЛЕННОЙ СЕТКИ ДЛЯ ВЫЧИСЛЕНИЯ ГРАДИЕНТА ГРАНИЧНОЙ ВЫБОРКИ БЛОЧНОГО УРОВНЯ В ВЫЧИСЛЕНИИ ОПТИЧЕСКОГО ПОТОКА С ДВОЙНЫМ ПРЕДСКАЗАНИЕМ И КОРРЕКЦИИ С ДВОЙНЫМ ПРЕДСКАЗАНИЕМ 2020
  • Сетураман, Срирам
  • А, Джива Радж
  • Котеча, Сагар
RU2820638C2

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

Реферат патента 2024 года КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, УПРОЩАЮЩИЕ СИГНАЛИЗАЦИЮ ЭЛЕМЕНТОВ СИНТАКСИСА ЗАГОЛОВКА СЛАЙСА

Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Битовый поток включает в себя заголовок слайса текущего слайса и данные, представляющие текущий слайс. Кодируют параметр, используемый для выведения числа тайлов в текущем слайсе и содержащий параметр в заголовке слайса, когда число тайлов в картинке за вычетом адреса текущего слайса больше 1. Восстанавливают текущий слайс с использованием упомянутого числа тайлов в текущем слайсе и данных, представляющих текущий слайс. Когда адрес слайса текущего слайса является адресом последнего тайла в картинке, определяют, что число тайлов в картинке за вычетом адреса слайса текущего слайса равно 1. Значение параметра равно значению по умолчанию, когда адрес слайса текущего слайса является адресом последнего тайла в картинке. Значение по умолчанию равно 0. Причем адрес слайса выражен в единицах тайлов. 14 н. и 6 з.п. ф-лы, 18 ил., 10 табл.

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

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

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

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

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

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

4. Способ по п. 3, причем значение по умолчанию равно 0.

5. Способ по любому из пп. 1-4, причем адрес слайса выражен в единицах тайлов.

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

7. Способ по любому из пп. 1-6, в котором восстановление текущего слайса с использованием упомянутого числа тайлов в текущем слайсе содержит: определение порядка сканирования единиц дерева кодировки в текущем слайсе с использованием упомянутого числа тайлов в текущем слайсе; и восстановление единиц дерева кодировки в текущем слайсе с использованием порядка сканирования.

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

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

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

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

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

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

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

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

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

11. Кодер (20), содержащий схему обработки для осуществления способа по п. 8.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

сохраняют битовый поток видео на одном или более носителе данных,

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

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

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

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

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

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

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

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

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

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

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

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

US 20160286235 A1, 29.09.2016
CN 105472371 B, 05.11.2019
US 10616605 B2, 07.04.2020
WO 2019137313 A1, 18.07.2019
US 20190387238 A1, 19.12.2019
WO 2020008103 A1, 09.01.2020
US 10477204 B2, 12.11.2019
ОБЪЕДИНЕННАЯ СТРУКТУРА ДЛЯ СХЕМ ДЕЛЕНИЯ КАРТИНКИ 2012
  • Кобан Мухаммед Зейд
  • Ван Е-Куй
  • Карчевич Марта
RU2575685C2

RU 2 832 151 C1

Авторы

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

Ван, Бяо

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

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

Даты

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

2021-03-01Подача