RU2787545C1 - Device, method and machine-readable media for video encoding and video decoding - Google Patents

Device, method and machine-readable media for video encoding and video decoding Download PDF

Info

Publication number
RU2787545C1
RU2787545C1 RU2021137086A RU2021137086A RU2787545C1 RU 2787545 C1 RU2787545 C1 RU 2787545C1 RU 2021137086 A RU2021137086 A RU 2021137086A RU 2021137086 A RU2021137086 A RU 2021137086A RU 2787545 C1 RU2787545 C1 RU 2787545C1
Authority
RU
Russia
Prior art keywords
blocks
tile
partitions
assigned
unassigned
Prior art date
Application number
RU2021137086A
Other languages
Russian (ru)
Inventor
Миска ХАННУКСЕЛА
Original Assignee
Нокиа Текнолоджиз Ой
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Нокиа Текнолоджиз Ой filed Critical Нокиа Текнолоджиз Ой
Application granted granted Critical
Publication of RU2787545C1 publication Critical patent/RU2787545C1/en

Links

Images

Abstract

FIELD: video technology.
SUBSTANCE: invention relates to the field of encoding and decoding of a video signal. A video encoding method is proposed, which contains: determining the number of units to be assigned to partitions and initialized as unassigned; specifying or logically determining the number of partitions of an explicitly specified size to be assigned; specifying the sizes for partitions of an explicitly specified size and the corresponding marking of unassigned units as assigned to partitions in a predetermined scanning order; specifying the number of units; cyclic assignment of the said number of units to partitions and the corresponding marking of unassigned blocks as assigned in a predetermined scanning order until the number of unassigned blocks becomes less than the mentioned number of units; and the assignment of unassigned units to the last partition, if the number of unassigned units is greater than 0.
EFFECT: optimal signaling of various options for splitting into tiles and bricks, a rectangular area of the lines of the code tree unit (CTU) inside a specific tile in the image, which provides an increase in coding efficiency.
15 cl, 18 dwg

Description

Область техникиTechnical field

[0001] Настоящее изобретение относится к устройству, способу и компьютерной программе для видеокодирования и видеодекодирования.[0001] The present invention relates to an apparatus, method, and computer program for video coding and video decoding.

Предпосылки создания изобретенияPrerequisites for the creation of the invention

[0002] Стандарты и спецификации видеокодирования, как правило, допускают разделение, в кодере, кодированного изображения на подмножества. В видеокодировании разбиением (partitioning) может называться разделение изображения или подобласти изображения на подмножества (блоки) таким образом, что каждый элемент изображения или подобласти изображения находится только в одном подмножестве (блоке). К примеру, в стандарте H.265/HEVC введено понятие блока кодового дерева (coding tree unit, CTU), который по умолчанию имеет размер 64×64 пикселя. Блок CTU может либо содержать единственный блок кодирования (coding unit, CU), либо может быть рекурсивно разбит на множество менее крупных блоков кодирования, CU, с минимальным размером 8×8 пикселей, на основе структуры квадродерева. В стандарте H.265/HEVC также существуют тайлы, которые являются прямоугольными и содержат целое количество блоков CTU, а также слайсы, которые определяют на основе сегментов слайсов, содержащих целое количество блоков кодового дерева, расположенных последовательно в порядке сканирования тайла и входящих в состав одного блока NAL.[0002] Video coding standards and specifications generally allow the encoder to divide the encoded image into subsets. In video coding, partitioning may refer to dividing an image or image sub-region into subsets (blocks) such that each element of an image or image sub-region is in only one subset (block). For example, the H.265/HEVC standard introduces the concept of a coding tree unit (CTU), which has a default size of 64×64 pixels. A CTU may either contain a single coding unit (CU) or may be recursively split into multiple smaller coding units, CUs, with a minimum size of 8×8 pixels, based on a quadtree structure. In the H.265/HEVC standard, there are also tiles that are rectangular and contain an integer number of CTUs, as well as slices, which are defined based on slice segments containing an integer number of code tree blocks that are sequential in tile scan order and are part of one block NAL.

[0003] Универсальное видеокодирование (Versatile Video Coding, VVC) (MPEG-I Part 3), также известное под обозначением ITU-T Н.266, - это стандарт видеокодирования, разрабатываемый Объединенной командой экспертов по видео (Joint Video Experts Team, JVET) из состава группы экспертов по движущемуся изображению (Moving Picture Experts Group, MPEG) и группы экспертов по видеокодированию (Video Coding Experts Group, VCEG) Международного союза электросвязи (International Telecommunication Union, ITU) и призванный прийти на смену стандарту HEVC/H.265. Схемы разбиения в стандарте VVC включают не только тайлы, но также и «кирпичи» (bricks), которые могут включать одну или более строк блоков CTU внутри тайла. Введение кирпичей также влияет на определение слайсов.[0003] Versatile Video Coding (VVC) (MPEG-I Part 3), also known as ITU-T H.266, is a video coding standard being developed by the Joint Video Experts Team (JVET) from the Moving Picture Experts Group (MPEG) and the Video Coding Experts Group (VCEG) of the International Telecommunication Union (ITU) and designed to replace the HEVC / H.265 standard. Partitioning schemes in the VVC standard include not only tiles, but also "bricks" (bricks), which can include one or more rows of CTUs within a tile. The introduction of bricks also affects the definition of slices.

[0004] Как следствие, была создана достаточно сложная синтаксическая структура для сигнализации различных вариантов разбиения на тайлы и кирпичи, во многих аспектах не являющаяся оптимальной. В частности, это касается битрейта, необходимого для такой сигнализации.[0004] As a result, a rather complex syntactic structure was created for signaling various options for tiling and bricking, which in many respects is not optimal. In particular, this concerns the bit rate required for such signaling.

Сущность изобретенияThe essence of the invention

[0005] Далее в настоящем документе будет рассмотрен улучшенный способ кодирования, имеющий целью по меньшей мере частично решить описанные выше проблемы.[0005] Hereinafter, an improved coding method will be discussed that aims to at least partially solve the problems described above.

[0006] Объем настоящего изобретения определен независимыми пунктами формулы изобретения. Варианты осуществления настоящего изобретения и их отличительные признаки, не попадающие в объем независимых пунктов формулы изобретения, если таковые присутствуют, следует рассматривать как примеры, полезные для понимания различных вариантов осуществления настоящего изобретения.[0006] The scope of the present invention is defined by the independent claims. Embodiments of the present invention and features thereof not falling within the scope of the independent claims, if any, should be considered as examples useful in understanding the various embodiments of the present invention.

[0007] Способ, в соответствии с первым аспектом настоящего изобретения, включает определение количества блоков, подлежащих назначению в разделы и инициализированных как неназначенные; указание или логическое определение количества разделов явно заданного размера, подлежащих назначению; указание размеров для разделов явно заданного размера и соответствующую маркировку неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования; указание числа блоков; циклическое назначение упомянутого числа блоков в разделы и соответствующую маркировку неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; и назначение, если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел.[0007] The method, in accordance with the first aspect of the present invention, includes determining the number of blocks to be assigned to sections and initialized as unassigned; an indication or logical determination of the number of partitions of an explicit size to be assigned; specifying sizes for explicitly sized partitions and appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; specifying the number of blocks; cyclically assigning said number of blocks to partitions and correspondingly marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and assigning, if the number of unassigned blocks is greater than 0, unassigned blocks to the last partition.

[0008] В соответствии с одним из вариантов осуществления настоящего изобретения упомянутые разделы являются одним или более из следующего: столбцы тайлов, строки тайлов, строки кирпичей в одном или более столбце тайлов, строки кирпичей в тайле, столбцы сетки, используемой для указания разбиения на субизображения, строки сетки, используемой для указания разбиения на субизображения.[0008] In accordance with one embodiment of the present invention, said sections are one or more of the following: columns of tiles, rows of tiles, rows of bricks in one or more columns of tiles, rows of bricks in a tile, columns of a grid used to indicate splitting into sub-images , the string of the grid used to specify the split into sub-images.

[0009] В соответствии с одним из вариантов осуществления настоящего изобретения упомянутые блоки являются одним или более из следующего: прямоугольные блоки отсчетов изображения, ячейки сетки, используемой для указания разбиения на субизображения.[0009] In accordance with one of the embodiments of the present invention, the mentioned blocks are one or more of the following: rectangular blocks of image samples, cells of the grid used to indicate the partition into sub-images.

[0010] Устройство, в соответствии со вторым аспектом настоящего изобретения, включает средства определения количества блоков, подлежащих назначению в разделы и инициализированных как не назначенные; средства указания или логического определения количества разделов явно заданного размера, подлежащих назначению; средства указания размеров для разделов явно заданного размера и средства соответствующей маркировки неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования; средства указания числа блоков; средства циклического назначения упомянутого числа блоков в разделы и средства соответствующей маркировки неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; и средства назначения, если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел.[0010] An apparatus according to a second aspect of the present invention includes means for determining a number of blocks to be assigned to partitions and initialized as unassigned; means for specifying or logically determining the number of explicitly sized partitions to be assigned; means for specifying sizes for partitions of an explicit size, and means for appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; means for indicating the number of blocks; means for cyclically assigning said number of blocks to partitions and means for appropriately marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and assignment means, if the number of unassigned blocks is greater than 0, unassigned blocks to the last section.

[ООП] Способ, в соответствии с третьим аспектом настоящего изобретения, включает определение количества блоков, подлежащих назначению в разделы; определение количества разделов явно заданного размера, подлежащих назначению; определение размеров для разделов явно заданного размера и соответствующую маркировку неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования; определение числа блоков; циклическое назначение упомянутого числа блоков в разделы и соответствующую маркировку неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; и назначение, если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел.[OOP] The method according to the third aspect of the present invention includes determining the number of blocks to be assigned to partitions; determining the number of explicitly sized partitions to be assigned; sizing partitions of an explicit size and appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; determining the number of blocks; cyclically assigning said number of blocks to partitions and correspondingly marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and assigning, if the number of unassigned blocks is greater than 0, unassigned blocks to the last partition.

[0012] В соответствии с одним из вариантов осуществления настоящего изобретения определение количества разделов явно заданного размера, подлежащих назначению, включает декодирование количества разделов явно заданного размера, подлежащих назначению, из синтаксической структуры; определение размеров разделов явно заданного размера включает декодирование размеров явно заданного размера из синтаксической структуры; и определение числа блоков включает декодирование числа блоков из синтаксической структуры.[0012] In accordance with one embodiment of the present invention, determining the number of explicit size partitions to be assigned includes decoding the number of explicit size partitions to be assigned from the syntax structure; determining the sizes of explicitly sized partitions includes decoding the sizes of the explicitly sized sections from the syntactic structure; and determining the number of blocks includes decoding the number of blocks from the syntax structure.

[0013] Устройство, в соответствии с четвертым аспектом настоящего изобретения, включает средства определения количества блоков, подлежащих назначению в разделы; средства определения количества разделов явно заданного размера, подлежащих назначению; средства определения размеров для разделов явно заданного размера и средства соответствующей маркировки неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования; средства определения числа блоков; средства циклического назначения упомянутого числа блоков в разделы и средства соответствующей маркировки неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; и средства назначения, если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел.[0013] An apparatus according to a fourth aspect of the present invention includes means for determining the number of blocks to be assigned to partitions; means for determining the number of explicitly sized partitions to be assigned; means for sizing partitions of an explicit size, and means for appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; means for determining the number of blocks; means for cyclically assigning said number of blocks to partitions and means for appropriately marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and assignment means, if the number of unassigned blocks is greater than 0, unassigned blocks to the last section.

[0014] Дополнительные аспекты настоящего изобретения относятся к устройствам, включающим по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение, устройством, по меньшей мере описанных выше способов и одного или более связанных с ними вариантов осуществления настоящего изобретения.[0014] Additional aspects of the present invention relate to devices including at least one processor and at least one memory, wherein said at least one memory stores code that, when executed by said at least one processor, causes execution, by the device, at least the methods described above and one or more related embodiments of the present invention.

Краткое описание чертежейBrief description of the drawings

[0015] Для более детального понимания настоящего изобретения оно будет описано далее с помощью примеров и показано на приложенных чертежах, где:[0015] For a more detailed understanding of the present invention, it will be described below with the help of examples and shown in the attached drawings, where:

[0016] на фиг. 1 эскизно проиллюстрировано электронное устройство, в котором применяются варианты осуществления настоящего изобретения;[0016] in FIG. 1 is a schematic illustration of an electronic device in which embodiments of the present invention are applied;

[0017] на фиг. 2 эскизно проиллюстрировано абонентское оборудование, подходящее для применения в вариантах осуществления настоящего изобретения;[0017] in FIG. 2 schematically illustrates user equipment suitable for use in embodiments of the present invention;

[0018] на фиг. 3 также эскизно проиллюстрированы электронные устройства, в которых применяются варианты осуществления настоящего изобретения и которые соединены при помощи проводных и беспроводных сетевых соединений;[0018] in FIG. 3 also schematically illustrates electronic devices in which embodiments of the present invention are applied and which are connected using wired and wireless network connections;

[0019] на фиг. 4 эскизно проиллюстрирован кодер, подходящий для реализации некоторых из вариантов осуществления настоящего изобретения;[0019] in FIG. 4 is a schematic illustration of an encoder suitable for implementing some of the embodiments of the present invention;

[0020] на фиг. 5а, 5b, 5с показаны примеры разбиения изображения на блоки кодового дерева (CTU), тайлы, кирпичи и слайсы;[0020] in FIG. 5a, 5b, 5c show examples of partitioning an image into code tree blocks (CTUs), tiles, bricks, and slices;

[0021] на фиг. 6 показана синтаксическая структура для разбиения на слайсы, тайлы и кирпичи в соответствии с версией 5 проекта H.266/VVC (H.266/VVC Draft 5);[0021] in FIG. 6 shows the syntax for slicing, tiling and bricking according to version 5 of the H.266/VVC draft (H.266/VVC Draft 5);

[0022] на фиг. 7 показана блок-схема алгоритма для способа кодирования в соответствии с одним из аспектов осуществления настоящего изобретения;[0022] in FIG. 7 is a flowchart for an encoding method in accordance with one embodiment of the present invention;

[0023] на фиг. 8 показана блок-схема алгоритма для способа кодирования в соответствии с еще одним из аспектов осуществления настоящего изобретения;[0023] in FIG. 8 is a flowchart for an encoding method in accordance with another aspect of the present invention;

[0024] на фиг. 9 показана блок-схема алгоритма для способа кодирования в соответствии с одним из вариантов осуществления настоящего изобретения;[0024] in FIG. 9 is a flowchart for an encoding method according to one embodiment of the present invention;

[0025] на фиг. 10а, 10b, 10с показаны примеры разбиений на тайлы и кирпичи;[0025] in FIG. 10a, 10b, 10c show examples of partitions into tiles and bricks;

[0026] на фиг. 11 показана эскизная блок-схема декодера, подходящего для реализации некоторых из вариантов осуществления настоящего изобретения;[0026] in FIG. 11 is a schematic block diagram of a decoder suitable for implementing some of the embodiments of the present invention;

[0027] на фиг. 12 показана блок-схема алгоритма для способа декодирования в соответствии с одним из вариантов осуществления настоящего изобретения;[0027] in FIG. 12 is a flowchart for a decoding method according to one embodiment of the present invention;

[0028] на фиг. 13 показана блок-схема алгоритма для способа декодирования в соответствии с еще одним из вариантов осуществления настоящего изобретения;[0028] in FIG. 13 is a flowchart for a decoding method according to another embodiment of the present invention;

[0029] на фиг. 14а и 14b показаны блок-схемы алгоритмов для способа кодирования и декодирования в соответствии с еще одним из вариантов осуществления настоящего изобретения; и[0029] in FIG. 14a and 14b show flowcharts for an encoding and decoding method in accordance with yet another embodiment of the present invention; and

[0030] на фиг. 15 показана эскизная блок-схема типовой мультимедийной системы связи, в которой могут быть реализованы различные варианты осуществления настоящего изобретения.[0030] in FIG. 15 is a schematic block diagram of an exemplary multimedia communications system in which various embodiments of the present invention may be implemented.

Подробное описание некоторых из примеров осуществления изобретенияDetailed description of some of the embodiments of the invention

[0031] Ниже будут более подробно рассмотрены соответствующее устройство и возможные механизмы для инициирования переключения порта просмотра. С этой целью обратимся сначала к фиг. 1 и 2. На фиг. 1 показана блок-схема системы видеокодирования в соответствии с одним из вариантов осуществления настоящего изобретения, имеющая вид блок-схемы типовой аппаратуры или электронного устройства 50, которое может включать в свой состав кодек, соответствующий одному из вариантов осуществления настоящего изобретения. На фиг. 2 показана схема устройства в соответствии с одним из примеров осуществления настоящего изобретения. Далее будут описаны элементы фиг. 1 и 2.[0031] The corresponding apparatus and possible mechanisms for initiating browsing port switching will be discussed in more detail below. To this end, let us first turn to Fig. 1 and 2. In FIG. 1 is a block diagram of a video coding system in accordance with one embodiment of the present invention in the form of a block diagram of a typical hardware or electronic device 50 that may include a codec in accordance with one embodiment of the present invention. In FIG. 2 shows a diagram of a device in accordance with one embodiment of the present invention. Next, the elements of FIG. 1 and 2.

[0032] Электронное устройство 50 может, например, быть мобильным терминалом или абонентским оборудованием системы беспроводной связи. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы в любом электронном устройстве или аппаратуре, где требуется кодирование и декодирование, или только кодирование, или же только декодирование видеоизображений.[0032] The electronic device 50 may, for example, be a mobile terminal or user equipment of a wireless communication system. However, it should be understood that embodiments of the present invention may be implemented in any electronic device or apparatus that requires encoding and decoding, or only encoding, or only decoding of video images.

[0033] Устройство 50 может иметь в своем составе корпус 30 для размещения и защиты устройства. Устройство 50 может также включать дисплей 32 в форме дисплея на жидких кристаллах. В других вариантах осуществления настоящего изобретения упомянутый дисплей может быть выполнен по любой технологии, подходящей для отображения изображений или видеоинформации. Устройство 50 может также включать клавиатуру 34. В других вариантах осуществления настоящего изобретения может применяться любой подходящий интерфейс обмена данными или пользовательский интерфейс. К примеру, пользовательский интерфейс может быть реализован в виде виртуальной клавиатуры или системы ввода данных, являющейся частью сенсорного дисплея.[0033] Device 50 may include a housing 30 to house and protect the device. The device 50 may also include a display 32 in the form of a liquid crystal display. In other embodiments of the present invention, said display may be made using any technology suitable for displaying images or video information. Device 50 may also include a keyboard 34. In other embodiments of the present invention, any suitable communications interface or user interface may be used. For example, the user interface may be implemented as a virtual keyboard or input system that is part of a touch screen.

[0034] Устройство может включать микрофон 36 или любое другое подходящее устройство ввода аудиоинформации, которое может быть устройством ввода цифрового или аналогового сигнала. Устройство 50 может также включать устройство вывода аудиоинформации, которое в вариантах осуществления настоящего изобретения может представлять собой любое из следующего: головной телефон 38, громкоговоритель или же аналоговое или цифровое соединение для вывода аудиоинформации. Устройство 50 может также иметь в своем составе аккумулятор (или в других вариантах осуществления настоящего изобретения устройство может снабжаться электроэнергией от любого подходящего мобильного энергетического устройства, например, солнечной батареи, топливной батареи или заводного генератора). Устройство может дополнительно включать камеру, способную записывать, или захватывать, изображения и/или видеоинформацию. Устройство 50 может также включать инфракрасный порт для связи с другими устройствами в ближней зоне прямой видимости. В других вариантах осуществления настоящего изобретения устройство 50 может включать любые подходящие решения связи малой дальности, например, беспроводное соединение Bluetooth или проводное соединение USB/Firewire.[0034] The device may include a microphone 36 or any other suitable audio input device, which may be a digital or analog signal input device. Device 50 may also include an audio output device, which in embodiments of the present invention may be any of the following: a headset 38, a speaker, or an analog or digital audio output connection. The device 50 may also include a battery (or in other embodiments of the present invention, the device may be powered by any suitable mobile energy device, such as a solar panel, fuel cell, or clockwork generator). The device may further include a camera capable of recording, or capturing, images and/or video information. The device 50 may also include an infrared port for communication with other devices in the near field of view. In other embodiments of the present invention, device 50 may include any suitable short range communication solutions, such as a Bluetooth wireless connection or a USB/Firewire wired connection.

[0035] Устройство 50 может включать контроллер 56, процессор или схемы обработки данных для управления устройством 50. Контроллер 56 может быть соединен с памятью 58, которая в различных вариантах осуществления настоящего изобретения может хранить данные, одновременно в форме видеоинформации и аудиоинформации, и/или может также хранить инструкции для исполнения в контроллере 56. Контроллер 56 может быть также соединен со схемами 54 кодека, способными осуществлять кодирование и декодирование аудио- и/или видеоданных или являться вспомогательным средством при кодировании и декодировании, выполняемом контроллером.[0035] The device 50 may include a controller 56, a processor, or data processing circuits for controlling the device 50. The controller 56 may be connected to a memory 58, which in various embodiments of the present invention may store data, both in the form of video information and audio information, and/or may also store instructions for execution in controller 56. Controller 56 may also be coupled to codec circuits 54 capable of encoding and decoding audio and/or video data, or to assist in encoding and decoding performed by the controller.

[0036] Устройство 50 может также включать устройство 48 чтения карт и смарт-карту 46, например, карту UICC и устройство чтения UICC-карт для предоставления информации об абоненте, и для обеспечения возможности предоставления аутентификационной информации с целью аутентификации и авторизации абонента в сети.[0036] The device 50 may also include a card reader 48 and a smart card 46, such as a UICC card and a UICC card reader, to provide information about the subscriber, and to enable the provision of authentication information to authenticate and authorize the subscriber in the network.

[0037] Устройство 50 может включать схемы 52 радиоинтерфейса, связанные с контроллером, которые могут использоваться для формирования сигналов беспроводной связи, например, для связи с сетью сотовой связи, системой беспроводной связи или беспроводной локальной вычислительной сетью. Устройство 50 может также включать антенну 44, связанную со схемами 52 радиоинтерфейса, для передачи радиочастотных сигналов, формируемых в схемах 52 радиоинтерфейса, в другое устройство (или устройства), а также для приема радиочастотных сигналов от другого устройства (или устройств).[0037] Device 50 may include air interface circuits 52 associated with a controller that may be used to generate wireless communication signals, such as for communication with a cellular network, a wireless communication system, or a wireless local area network. The device 50 may also include an antenna 44 associated with the air interface circuits 52 for transmitting the RF signals generated in the air interface circuits 52 to another device (or devices), as well as for receiving RF signals from the other device (or devices).

[0038] Устройство 50 может включать камеру, способную записывать или регистрировать отдельные кадры, которые затем передают в кодек 54 или контроллер для обработки. Устройство может принимать от другого устройства данные видеоизображений для обработки перед их передачей и/или хранением. Устройство 50 может также принимать изображение для кодирования/декодирования либо беспроводным способом, либо по проводному соединению. Структурные элементы устройства 50, описанные выше, представляют собой примеры средств выполнения соответствующих функций.[0038] The device 50 may include a camera capable of recording or registering individual frames, which are then transmitted to the codec 54 or controller for processing. The device may receive video image data from another device for processing before transmission and/or storage. Device 50 may also receive an image for encoding/decoding, either wirelessly or via a wired connection. The structural elements of the device 50 described above are examples of means for performing the respective functions.

[0039] С помощью фиг. 3 проиллюстрирован один из примеров системы, в которой могут использоваться различные варианты осуществления настоящего изобретения. Система 10 включает несколько устройств связи, способных осуществлять связь при помощи одной или нескольких сетей. В состав системы 10 может входить любая комбинация проводных и беспроводных сетей, включая, без ограничения перечисленным, беспроводную сотовую телефонную сеть (например, сеть GSM, UMTS, CDMA и т.п.), беспроводную локальную вычислительную сеть (wireless local area network, WLAN), например, в соответствии с определением в любом из стандартов IEEE 802.x, персональную сеть Bluetooth, локальную вычислительную сеть Ethernet, локальную вычислительную сеть типа «маркерное кольцо» глобальную сеть и Интернет.[0039] Using FIG. 3 illustrates one example of a system in which various embodiments of the present invention may be used. System 10 includes a plurality of communication devices capable of communicating using one or more networks. System 10 may include any combination of wired and wireless networks, including, but not limited to, wireless cellular telephone network (eg, GSM, UMTS, CDMA, etc.), wireless local area network (WLAN ), for example, as defined in any of the IEEE 802.x standards, a Bluetooth personal area network, an Ethernet local area network, a token ring local area network, a wide area network, and the Internet.

[0040] Система 10 может включать как проводные, так и беспроводные устройства связи, и/или устройство 50, подходящее для реализации вариантов осуществления настоящего изобретения.[0040] System 10 may include both wired and wireless communication devices, and/or device 50 suitable for implementing embodiments of the present invention.

[0041] В качестве примера на фиг. 3 показана мобильная телефонная сеть 11 и сеть Интернет 28. Соединение с Интернетом 28 может включать, без ограничения перечисленным, беспроводные соединения с большим радиусом действия, беспроводные соединения с малым радиусом действия, а также различные проводные соединения, включая, без ограничения перечисленным, телефонные линии, кабельные линии, линии электропередач и аналогичные каналы связи.[0041] As an example, in FIG. 3 shows a mobile phone network 11 and the Internet 28. Internet connection 28 may include, but is not limited to, long range wireless connections, short range wireless connections, and various wired connections including, but not limited to, telephone lines. , cable lines, power lines and similar communication channels.

[0042] Примерами устройств связи в системе 10 могут служить, без ограничения перечисленным, электронная устройство или устройство 50, комбинация карманного персонального компьютера (personal digital assistant, PDA) и мобильного телефона 14, PDA 16, интегрированное устройство 18 обмена сообщениями (integrated messaging device, IMD), настольный компьютер 20, ноутбук 22. Устройство 50 может быть стационарным или подвижным, когда переносится движущимся оператором. Устройство 50 может также размещаться на транспортном средстве, включая, без ограничения перечисленным, автомобиль, грузовик, такси, автобус, поезд, судно, самолет, велосипед, мотоцикл или любое аналогичное подходящее транспортное средство.[0042] Examples of communication devices in system 10 include, but are not limited to, an electronic device or device 50, a combination of a personal digital assistant (PDA) and a mobile phone 14, a PDA 16, an integrated messaging device 18 , IMD), desktop computer 20, laptop computer 22. Device 50 may be stationary or mobile when carried by a moving operator. Device 50 may also be placed on a vehicle, including, but not limited to, a car, truck, taxi, bus, train, boat, airplane, bicycle, motorcycle, or any similar suitable vehicle.

[0043] Варианты осуществления настоящего изобретения могут также быть реализованы в абонентской телеприставке, т.е. в приемнике цифрового телевидения, который, опционально, может обладать функциональностью отображения видеоинформации и беспроводной связи, в планшетных или (портативных) персональных компьютерах (ПК), которые включают аппаратную или программную (или комбинированную) реализацию кодера и/или декодера, в различных операционных системах, в чипсетах (микросхемных наборах), процессорах, DSP-процессорах и/или во встраиваемых системах, обеспечивающих аппаратное и/или программное кодирование.[0043] Embodiments of the present invention may also be implemented in a set top box, ie. in a digital television receiver, which, optionally, may have the functionality of displaying video information and wireless communication, in tablet or (portable) personal computers (PCs), which include a hardware or software (or combined) implementation of an encoder and / or decoder, in various operating systems , in chipsets (chip sets), processors, DSPs and/or embedded systems providing hardware and/or software coding.

[0044] Некоторые из подобных или других устройств могут как посылать, так и принимать вызовы и сообщения, а также осуществлять связь с операторами связи при помощи беспроводного соединения 25 с базовой станцией 24. Базовая станция 24 может быть соединена с сетевым сервером 26, обеспечивающим связь между средствами 11 связи и Интернетом 28. Система может включать дополнительные устройства связи, а также устройства связи других типов.[0044] Some of these or other devices can both send and receive calls and messages, as well as communicate with telecom operators using a wireless connection 25 with a base station 24. Base station 24 can be connected to a network server 26 that provides communication between communication means 11 and the Internet 28. The system may include additional communication devices, as well as other types of communication devices.

[0045] Устройства связи могут осуществлять связь с использованием различных технологий передачи данных, включая, без ограничения перечисленным, множественный доступ с кодовым разделением (Code Division Multiple Access, CDMA), глобальную систему мобильной связи (Global System for Mobile Communications, GSM), универсальную систему мобильной связи (Universal Mobile Telecommunication System, UMTS), множественный доступ с разделением по времени (Time Division Multiple Access, TDMA), множественный доступ с разделением по частоте (Frequency Division Multiple Access, FDMA), протокол управления передачей/протокол Интернета (Transmission Control Protocol/Internet Protocol, TCP-IP), службу коротких сообщений (Short Messaging Service, SMS), службу мультимедийных сообщений (Multimedia Messaging Service, MMS), электронную почту, сервис мгновенной передачи сообщений (Instant Messaging Service, IMS), Bluetooth, IEEE 802.11, и любые аналогичные технологии беспроводной связи. Устройство связи, используемое при реализации различных вариантов осуществления настоящего изобретения, может осуществлять связь с использованием различных сред передачи данных, включая, без ограничения, радиосоединения, инфракрасные, лазерные, кабельные соединения или любые другие подходящие соединения.[0045] Communication devices may communicate using various data transmission technologies, including, but not limited to, code division multiple access (CDMA), global system for mobile communications (Global System for Mobile Communications, GSM), universal Universal Mobile Telecommunication System (UMTS), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Transmission Control Protocol/Internet Protocol (Transmission Control Protocol/Internet Protocol, TCP-IP), Short Messaging Service (SMS), Multimedia Messaging Service (MMS), Email, Instant Messaging Service (IMS), Bluetooth, IEEE 802.11, and any similar wireless technology. The communication device used in implementing various embodiments of the present invention may communicate using various communication media, including, without limitation, radio connections, infrared, laser, cable connections, or any other suitable connection.

[0046] В телекоммуникационных сетях и в сетях передачи данных под «каналом» может пониматься как физический, так логический канал. Физическим каналом может быть любая физическая среда передачи, например, провод, тогда как логическим каналом может быть логическое соединение по мультиплексируемой среде передачи, способной обеспечивать передачу нескольких логических каналов. Канал может применяться для передачи информационного сигнала, например, битового потока, от одного или нескольких отправителей (или передатчиков) на один или несколько приемников.[0046] In telecommunications and data networks, a "channel" can be understood to mean either a physical or a logical channel. A physical channel may be any physical medium, such as a wire, while a logical channel may be a logical connection over a multiplexed medium capable of carrying multiple logical channels. A channel may be used to transmit an information signal, such as a bitstream, from one or more senders (or transmitters) to one or more receivers.

[0047] Транспортный поток (transport stream, TS) MPEG-2, определенный в документе ISO/TEC 13818-1, или, эквивалентно, в Рекомендации Н.222.0 ITU-T, представляет собой формат для передачи аудио-, видео- и других медиаданных, а также метаданных программ или иных метаданных, в мультиплексированном потоке. Для идентификации элементарных потоков (также называемых, пакетированными элементарными потоками) используются идентификаторы пакетов (packet identifier, PID). Следовательно, можно считать, что каждый логический канал в потоке MPEG-2 TS соответствует конкретному значению PID.[0047] The MPEG-2 transport stream (TS) as defined in ISO/TEC 13818-1, or equivalently in ITU-T Recommendation H.222.0, is a format for transmitting audio, video, and other media data, as well as program metadata or other metadata, in the multiplexed stream. To identify elementary streams (also called packetized elementary streams), packet identifiers (PIDs) are used. Therefore, each logical channel in the MPEG-2 TS stream can be considered to correspond to a particular PID value.

[0048] Существующие стандарты для форматов медиафайлов включают базовый формат медиафайлов ISO (ISO/IEC 14496-12, сокращенно обозначаемый ISOBMFF) и формат файлов для видеоданных, структурированных блоками NAL (ISO/IEC 14496-15), являющийся производным от ISOBMFF.[0048] Existing standards for media file formats include the ISO Basic Media File Format (ISO/IEC 14496-12, abbreviated as ISOBMFF) and the NAL Block Video File Format (ISO/IEC 14496-15), which is derived from ISOBMFF.

[0049] Видеокодек состоит из кодера, при помощи которого входные видеоданные преобразуют в сжатое представление, подходящее для хранения и передачи, а также декодера, при помощи которого сжатое представление видеоданных распаковывают, возвращая их к форме, пригодной для просмотра пользователем. Видеокодер и/или видеодекодер могут быть также независимыми друг от друга, т.е. не обязательно образовывать кодек. Как правило, в кодере часть информации исходной видеопоследовательности отбрасывается с целью представления видеоинформации в более компактной форме (т.е. с меньшим битрейтом).[0049] The video codec consists of an encoder, by which the input video data is converted into a compressed representation suitable for storage and transmission, and a decoder, by which the compressed representation of the video data is decompressed, returning them to a form suitable for viewing by the user. The video encoder and/or video decoder may also be independent of each other, ie. it is not necessary to generate a codec. As a rule, in the encoder part of the information of the original video sequence is discarded in order to represent the video information in a more compact form (ie, with a lower bit rate).

[0050] Типовые гибридные видеокодеры, например, многие из реализаций кодеров, соответствующие стандартам ITU-T Н.263 и Н.264, кодируют видеоинформацию в два этапа. Сначала предсказывают значения пикселей в определенной области изображения (или «блоке пикселей»), например, с использованием механизмов компенсации движения (нахождение области в одном из предварительно кодированных видеокадров, которая близко соответствует кодируемому в текущий момент блоку пикселей, и указание на эту область) или с использованием средств пространственного предсказания (использование, заданным образом, значений пикселей вокруг кодируемого блока пикселей). Затем кодируют ошибку предсказания, т.е. разность между предсказанным блоком пикселей и исходным блоком пикселей. Как правило, это выполняется при помощи преобразования разности пиксельных значений с использованием заданного преобразования (например, дискретного косинусного преобразования (Discrete Cosine Transform, DCT), или его варианта), квантования его коэффициентов и энтропийного кодирования квантованных коэффициентов. Регулируя степень детализации в процедуре квантования, кодер может управлять балансом между точностью представления пикселей (качеством изображения) и размером результирующей кодированной видеорепрезентации (размером файла или битрейтом).[0050] Exemplary hybrid video encoders, for example, many of the ITU-T H.263 and H.264 encoder implementations encode video information in two steps. First, pixel values are predicted in a certain area of the image (or "block of pixels"), for example, using motion compensation mechanisms (finding an area in one of the pre-encoded video frames that closely matches the block of pixels currently being encoded, and pointing to this area), or using means of spatial prediction (using, in a given way, the pixel values around the encoded block of pixels). The prediction error is then encoded, i. e. the difference between the predicted block of pixels and the original block of pixels. Typically, this is done by transforming the difference of pixel values using a given transform (eg, Discrete Cosine Transform (DCT) or a variant thereof), quantizing its coefficients, and entropy encoding the quantized coefficients. By adjusting the granularity in the quantization procedure, the encoder can control the balance between pixel representation fidelity (image quality) and the size of the resulting encoded video representation (file size or bit rate).

[0051] Источником информации для внешнего предсказания являются ранее декодированные изображения (называемые опорными изображениями). При внутреннем копировании блоков (intra block copy, IBC), которое также называют «предсказанием на основе внутреннего копирования блоков», предсказание выполняют аналогично временному предсказанию, однако опорным изображением в таком случае является само текущее изображение, при этом в процессе декодирования ссылки допускаются только на уже декодированные ранее отсчеты. Межуровневое или межракурсное предсказание может выполняться аналогично временному предсказанию, однако в этом случае опорным будет, соответственно, декодированное изображение из другого масштабируемого уровня или из другого ракурса. В некоторых случаях под внешним предсказанием понимают исключительно временное предсказание, однако в других случаях внешнее предсказание может обобщенно обозначать как временное предсказание, так и любые другие типы предсказания, а именно, внутреннее копирование блоков, межуровневое и межракурсное предсказание, если их выполняют с помощью той же процедуры, что и временное предсказание, или аналогичной процедуры. Внешнее предсказание или временное предсказание иногда называют компенсацией движения или предсказанием с компенсацией движения.[0051] The source of information for inter prediction are previously decoded pictures (called reference pictures). In intra block copying (IBC), which is also called "intra block copy prediction", prediction is performed similarly to temporal prediction, but the reference picture in this case is the current picture itself, while during decoding, references are allowed only to previously decoded readings. Inter-layer or inter-view prediction can be performed similarly to temporal prediction, however, in this case, the reference will be, respectively, the decoded image from another scalable layer or from another angle. In some cases, extrinsic prediction is understood to mean purely temporal prediction, however, in other cases, extrinsic prediction can generically refer to both temporal prediction and any other types of prediction, namely, intrablock copy, interlayer, and interview prediction, if performed using the same procedure as temporal prediction, or a similar procedure. Inter-prediction or temporal prediction is sometimes referred to as motion compensation or motion-compensated prediction.

[0052] Внешнее предсказание, которое может также называться временным предсказанием, компенсацией движения или предсказанием с компенсацией движения, позволяет понизить временную избыточность. Источником информации для внешнего предсказания являются ранее декодированные изображения. Для внешнего предсказания используют тот факт, что смежные пиксели в одном изображении с большой вероятностью являются коррелированными. Внутреннее предсказание может быть либо пространственным, либо может относиться собственно к преобразованию, т.е. могут предсказываться либо значения элементов изображения, либо коэффициенты преобразования. Внутреннее предсказание обычно применяют при внутреннем кодировании, когда внешнее предсказание не применяется.[0052] Inter-prediction, which may also be referred to as temporal prediction, motion compensation, or motion-compensated prediction, can reduce temporal redundancy. The source of information for external prediction are previously decoded images. For inter prediction, the fact that adjacent pixels in the same image are highly likely to be correlated is used. Intrinsic prediction can be either spatial, or it can refer to the transformation itself, i.e. either pixel values or transform coefficients can be predicted. Intra prediction is typically used in intra coding when inter prediction is not applied.

[0053] Одним из результатов процедуры кодирования является набор параметров кодирования, таких как векторы движения и коэффициенты преобразования. Энтропийное кодирование множества параметров может быть более эффективным, если сначала выполнить их предсказание, на основе пространственно-смежных или соседних по времени параметров. Например, вектор движения может предсказываться на основе пространственно смежных векторов движения, при этом кодироваться может только разность относительно предсказания вектора движения. Предсказание параметров кодирования и внутреннее предсказание совместно могут называться внутрикадровым предсказанием.[0053] One result of the encoding procedure is a set of encoding parameters such as motion vectors and transform coefficients. Entropy encoding of multiple parameters can be more efficient if they are first predicted based on spatially contiguous or temporally adjacent parameters. For example, a motion vector may be predicted based on spatially adjacent motion vectors, and only the difference relative to the motion vector prediction may be encoded. Coding parameter prediction and intra prediction may be collectively referred to as intra prediction.

[0054] На фиг. 4 проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. На фиг. 4 проиллюстрирован кодер для двух уровней, однако нужно понимать, что проиллюстрированный кодер может быть расширен и выполнять кодирование более чем двух уровней. На фиг. 4 проиллюстрирован один вариантов осуществления видеокодера, включающий первый сегмент 500 кодера для базового уровня (кодирования) и второй сегмент 502 кодера для уточняющего уровня. Каждый из сегментов, первый сегмент 500 кодера и второй сегмент 502 кодера, могут включать аналогичные элементы для кодирования поступающих изображений. Сегменты 500, 502 кодера могут включать устройство 302, 402 предсказания пикселей, кодер 303, 403 ошибки предсказания и декодер 304, 404 ошибки предсказания. Также на фиг. 4 показан один из вариантов осуществления устройства 302, 402 предсказания пикселей, включающего устройство 306, 406 внешнего предсказания, устройство 308, 408 внутреннего предсказания, селектор 310, 410 режима, фильтр 316, 416 и память 318, 418 опорных кадров. Устройство 302 предсказания пикселей в первом сегменте 500 кодера принимает изображения 300 базового уровня кодируемого видеопотока одновременно в устройстве 306 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 318 компенсации движения) и в устройстве 308 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 310 режима. Устройство 308 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 310 режима. В селектор 310 режима передается также копия изображения 300 базового уровня. Соответственно, устройство 402 предсказания пикселей во втором сегменте 502 кодера принимает изображения 400 уточняющего уровня кодируемого видеопотока одновременно в устройстве 406 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 418 компенсации движения) и в устройстве 408 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 410 режима. Устройство 408 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 410 режима. В селектор 410 режима передается также копия изображения 400 уточняющего уровня.[0054] FIG. 4 illustrates a block diagram of a video decoder suitable for applying embodiments of the present invention. In FIG. 4 illustrates an encoder for two levels, however, it should be understood that the illustrated encoder can be extended to encode more than two levels. In FIG. 4 illustrates one embodiment of a video encoder including a first encoder segment 500 for a base layer (coding) and a second encoder segment 502 for a refinement layer. Each of the segments, the first encoder segment 500 and the second encoder segment 502, may include similar elements for encoding incoming pictures. Encoder segments 500, 502 may include a pixel predictor 302, 402, a prediction error encoder 303, 403, and a prediction error decoder 304, 404. Also in FIG. 4 shows one embodiment of a pixel predictor 302,402 including an inter predictor 306,406, an intra predictor 308,408, a mode selector 310,410, a filter 316,416, and a reference frame memory 318,418. The pixel predictor 302 in the first encoder segment 500 receives the base layer images 300 of the encoded video stream simultaneously in the inter predictor 306 (which determines the difference between this picture and the motion compensation reference frame 318) and in the intra predictor 308 (which determines the prediction for a block of image pixels , based only on the already processed parts of the current frame or image). The output from the inter predictor and from the intra predictor is passed to the mode selector 310 . The intra predictor 308 may have more than one intra prediction mode. Therefore, intra prediction can be performed in each of the modes, and the predicted signal can be provided to the mode selector 310. A copy of the base layer image 300 is also passed to the mode selector 310 . Accordingly, the pixel predictor 402 in the second encoder segment 502 receives the refinement level pictures 400 of the encoded video stream simultaneously in the inter predictor 406 (which determines the difference between this picture and the motion compensation reference frame 418) and the intra predictor 408 (which determines the prediction for the block image pixels, based only on the already processed parts of the current frame or image). The output from the inter predictor and from the intra predictor is passed to the mode selector 410 . Intra predictor 408 may have more than one intra prediction mode. Therefore, intra prediction can be performed in each of the modes, and the predicted signal can be provided to the mode selector 410. A copy of the refinement level image 400 is also passed to the mode selector 410 .

[0055] В зависимости от режима кодирования, выбранного для кодирования текущего блока пикселей, на выход селектора 310, 410 режима передают выходные данные устройства 306, 406 внешнего предсказания, выходные данные одного из опциональных режимов внутреннего предсказания или выходные данные поверхностного кодера из состава селектора режима. Выходные данные селектора режима передают в первое суммирующее устройство 321, 421. Первое суммирующее устройство может вычитать выходные данные устройства 302, 402 предсказания пикселей из изображения 300 базового уровня, или изображения 400 уточняющего уровня, соответственно, с формированием первого сигнала 320, 420 ошибки предсказания, который подают на вход кодера 303, 403 ошибки предсказания.[0055] Depending on the encoding mode selected for encoding the current block of pixels, the output of the mode selector 310, 410 is the output of the inter prediction device 306, 406, the output of one of the optional intra prediction modes, or the output of the surface encoder from the mode selector . The output of the mode selector is provided to the first adder 321, 421. The first adder may subtract the output of the pixel predictor 302, 402 from the base level image 300 or the refinement level image 400, respectively, to generate a first prediction error signal 320, 420, which is fed to the input of the prediction error encoder 303, 403 .

[0056] Также устройство 302, 402 предсказания пикселей принимает от устройства 339, 439 предварительного восстановления комбинацию предсказанного представления блока 312, 418 изображения и выходные данные 338, 438 кодера 304, 404 ошибки предсказания. Предварительно восстановленное изображение 314, 414 может быть передано в устройство 308, 408 внутреннего предсказания и фильтр 316, 416. В фильтре 316, 416, где принимается это предварительное представление, может выполняться его фильтрация и вывод окончательного восстановленного изображения 340, 440, которое может быть сохранено в память 318, 418 опорных кадров. Память 318 опорных кадров может иметь соединение с устройством 306 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 300 базового уровня при выполнении операций внешнего предсказания. При условии, что базовый уровень выбран в качестве источника для межуровневого предсказания отсчетов и/или для межуровневого предсказания информации о движении уточняющего уровня, и если на это также выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, память 318 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и может использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 400 уточняющего уровня при выполнении операций внешнего предсказания. При этом память 418 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и может использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 400 уточняющего уровня при выполнении операций внешнего предсказания.[0056] Also, the pixel predictor 302, 402 receives from the pre-recovery device 339, 439 the combination of the predicted representation of the image block 312, 418 and the output data 338, 438 of the prediction error encoder 304, 404. The pre-restored image 314, 414 may be passed to an intra prediction device 308, 408 and a filter 316, 416. In the filter 316, 416 where this pre-representation is received, it may be filtered and a final reconstructed image 340, 440 may be output, which may be stored in memory 318, 418 reference frames. The reference frame memory 318 may be connected to the inter predictor 306 and used as a reference image against which the future base layer image 300 is compared when performing inter prediction operations. Provided that the base layer is selected as the source for inter-layer sample prediction and/or for inter-layer prediction of refinement layer motion information, and if this is also indicated accordingly, in accordance with some of the embodiments of the present invention, the reference frame memory 318 may be connected to the inter prediction device 406 and can be used as a reference image against which the future refinement level image 400 is compared when performing inter prediction operations. In this case, the reference frame memory 418 may be connected to the inter prediction device 406 and may be used as a reference image against which the future refinement level image 400 is compared when performing inter prediction operations.

[0057] При условии, что базовый уровень выбран в качестве источника для предсказания параметров фильтрации уточняющего уровня, и на это выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, параметры фильтрации из фильтра 316 первого сегмента 500 кодера могут передаваться во второй сегмент 502 кодера.[0057] Provided that the base layer is selected as the source for predicting the filter parameters of the refinement layer, and this is indicated accordingly, in accordance with some of the embodiments of the present invention, the filter parameters from the filter 316 of the first segment 500 of the encoder can be transmitted to the second encoder segment 502.

[0058] Кодер 303, 403 ошибки предсказания включает блок 342, 442 преобразования и квантователь 344, 444. Блок 342 преобразования преобразует первый сигнал 320, 420 ошибки предсказания в домен преобразования. Таким преобразованием является, к примеру, преобразование DCT. Квантователь 344, 444 квантует сигнал, например, коэффициенты DCT, в домене преобразования и формирует квантованные коэффициенты.[0058] The prediction error encoder 303, 403 includes a transform block 342, 442 and a quantizer 344, 444. The transform block 342 transforms the first prediction error signal 320, 420 into a transform domain. Such a transformation is, for example, a DCT transformation. The quantizer 344, 444 quantizes the signal, such as the DCT coefficients, in the transform domain and generates the quantized coefficients.

[0059] Декодер 304, 404 ошибки предсказания принимает выходные данные из кодера 303, 403 ошибки предсказания и выполняет процедуры, обратные процедурам кодера 303, 403 ошибки предсказания, в результате чего получают декодированный сигнал 338, 438 ошибки предсказания, который при комбинировании с предсказанным представлением блока 312, 412 изображения во втором суммирующем устройстве 339, 439 дает предварительное восстановленное изображение 314, 414. Декодер ошибки предсказания можно рассматривать как имеющий в своем составе деквантователь 361, 461 который деквантует квантованные значения коэффициентов, например, коэффициентов DCT, и восстанавливает преобразованный сигнал, а также как включающий блок 363, 463 обратного преобразования, который выполняет обратное преобразование над восстановленным сигналом преобразования, при этом выходные данные блока 363, 463 обратного преобразования содержат восстановленный блок (или блоки). Декодер ошибки предсказания может также включать фильтр блоков, который может выполнять фильтрацию восстановленного блока (или блоков) в соответствии с дополнительной декодированной информацией и параметрами фильтрации.[0059] The prediction error decoder 304, 404 receives the output from the prediction error encoder 303, 403 and performs the inverse procedures of the prediction error encoder 303, 403, resulting in a decoded prediction error signal 338, 438 that, when combined with the predicted representation of the image block 312, 412 in the second adder 339, 439 produces a preliminary reconstructed image 314, 414. The prediction error decoder can be thought of as having a dequantizer 361, 461 that dequantizes the quantized coefficient values, such as the DCT coefficients, and reconstructs the transformed signal, and also as including an inverse transform block 363, 463 that performs an inverse transform on the reconstructed transform signal, wherein the output of the inverse transform block 363, 463 contains the reconstructed block (or blocks). The prediction error decoder may also include a block filter that can filter the reconstructed block (or blocks) according to additional decoded information and filter parameters.

[0060] Энтропийный кодер 330, 430 принимает выходные данные из кодера 303, 403 ошибки предсказания и может выполнять соответствующее кодирование переменной длины и/или энтропийное кодирование сигнала для обеспечения возможности обнаружения и исправления ошибок. Выходные данные энтропийных кодеров 330, 430 могут быть введены в битовый поток, например, при помощи мультиплексора 508.[0060] The entropy encoder 330, 430 receives the output from the prediction error encoder 303, 403 and may perform appropriate variable length encoding and/or entropy encoding of the signal to enable error detection and correction. The output of the entropy encoders 330, 430 may be input to the bit stream, for example, using a multiplexer 508.

[0061] Энтропийное кодирование/декодирование может выполняться множеством различных способов. К примеру, может применяться контекстно-зависимое кодирование/декодирование, при котором и кодер, и декодер меняют контекстное состояние параметров кодирования в зависимости от ранее кодированных/декодированных параметров кодирования. Примерами контекстно-зависимого кодирования являются контекстно-зависимое двоичное арифметическое кодирование (context adaptive binary arithmetic coding, CABAC), контекстно-зависимое кодирование с переменной длиной кодового слова (context-based variable length coding, CAVLC) или любое аналогичное энтропийное кодирование. Энтропийное кодирование/декодирование, альтернативно или в дополнение, может выполняться при помощи схем кодирования с переменной длиной кодового слова, например, кодирования/декодирования методом Хаффмана или кодирования/декодирования методом экспоненциального кодирования Голомба. Декодирование параметров кодирования из энтропийно-кодированного битового потока, или из кодовых слов, может называться синтаксическим анализом.[0061] Entropy encoding/decoding can be performed in many different ways. For example, context-dependent encoding/decoding may be used, in which both the encoder and the decoder change the context state of the encoding parameters depending on previously encoded/decoded encoding parameters. Examples of context-dependent coding are context-dependent binary arithmetic coding (context adaptive binary arithmetic coding, CABAC), context-dependent coding with variable length codeword (context-based variable length coding, CAVLC) or any similar entropy coding. Entropy encoding/decoding, alternatively or in addition, may be performed using variable codeword length encoding schemes, such as Huffman encoding/decoding or Exponential Golomb encoding/decoding. The decoding of encoding parameters from an entropy-encoded bitstream, or from codewords, may be referred to as parsing.

[0062] Стандарт H.264/AVC был разработан объединенной командой по видео (Joint Video Team, JVT) из состава группы экспертов по видеокодированию (Video Coding Experts Group (VCEG) сектора стандартизации телекоммуникаций Международного союза электросвязи (International Telecommunication Union, ITU-T) и группой экспертов по движущемуся изображению (Moving Picture Experts Group, MPEG) Международной организации по стандартизации (International Organization for Standardization, ISO) / Международной электротехнической комиссии (International Electrotechnical Commission, IEC). Стандарт H.264/AVC был опубликован обеими родительскими организациями по стандартизации и получил наименование Рекомендации Н.264 ITU-T и Международного стандарта ISO/IEC 14496-10, известного также как улучшенное видеокодирование (Advanced Video Coding, AVC), 10-ая часть MPEG-4. Были выпущены несколько версий стандарта H.264/AVC, в спецификацию каждой из которых добавлялись новые расширения или элементы. В число этих расширений вошли масштабируемое видеокодирование (Scalable Video Coding, SVC) и многоракурсное видекодирование (Multiview Video Coding, MVC).[0062] The H.264/AVC standard was developed by the Joint Video Team (JVT) of the Video Coding Experts Group (VCEG) of the Telecommunication Standardization Sector of the International Telecommunication Union (ITU-T). ) and the International Organization for Standardization (ISO) / International Electrotechnical Commission (IEC) Moving Picture Experts Group (MPEG). The H.264/AVC standard was published by both parent organizations standardization and was named ITU-T Recommendation H.264 and International Standard ISO/IEC 14496-10, also known as Advanced Video Coding (AVC), MPEG-4 Part 10. Several versions of the H. 264/AVC, each with new extensions or elements added to the specification. extensions included scalable video coding (Scalable Video Coding, SVC) and multiview video coding (Multiview Video Coding, MVC).

[0063] Объединенной командой по видеокодированию (Joint Collaborative Team Video Coding, JCT-VC) групп VCEG и MPEG была создана первая версия (version 1) стандарта высокоэффективного видео кодирования (High Efficiency Video Coding, HEVC), H.265. Стандарт был опубликован обеими родительскими стандартизующими организациями и в текущий момент имеет наименование Рекомендации H.265 ITU-T и Международного стандарта ISO/IEC 23008-2, известного также как высокоэффективное видеокодирование (HEVC), 2-ая часть MPEG-H. В более поздние версии стандарта H.265/HEVC вошли расширения масштабируемого многоракурсного кодирования, расширения диапазона точности, трехмерного кодирования и кодирования экранного контента, которые сокращенно обозначаются, соответственно, SHVC, MV-HEVC, REXT, 3D-HEVC и SCC.[0063] The Joint Collaborative Team Video Coding (JCT-VC) of the VCEG and MPEG groups created the first version (version 1) of the High Efficiency Video Coding (HEVC) standard, H.265. The standard was published by both parent standards bodies and is currently named ITU-T Recommendation H.265 and International Standard ISO/IEC 23008-2, also known as High Efficiency Video Coding (HEVC), MPEG-H Part 2. Later versions of the H.265/HEVC standard included extensions to scalable multiview coding, fidelity range extension, 3D coding, and screen content coding, which are abbreviated SHVC, MV-HEVC, REXT, 3D-HEVC, and SCC, respectively.

[0064] Для расширений SHVC, MV-HEVC и 3D-HEVC используется общая базовая спецификация, описанная в приложении F второй версии стандарта HEVC. Эта общая база включает, например, высокоуровневые синтаксис и семантику, к примеру, определяющие часть характеристик уровней битового потока, такие как межуровневые зависимости, а также процедуры декодирования, такие как построение списка опорных изображений, включающего опорные изображения межуровневого предсказания, а также вычисление порядковых номеров изображений для многоуровневых потоков. Приложение F может применяться и в последующих многоуровневых расширениях HEVC, которые могут появиться позднее. В приведенном ниже описании видеокодер, видеодекодер, способы кодирования, способы декодирования, структуры битового потока и/или варианты осуществления настоящего изобретения могут быть рассмотрены на примере конкретных расширений, таких как SHVC и/или MV-HEVC, однако нужно понимать, что они, в общем случае, применимы также для многоуровневых расширений HEVC, а также, в еще более общем случае, для любой многоуровневой схемы видеокодирования.[0064] The SHVC, MV-HEVC, and 3D-HEVC extensions use the common base specification described in Annex F of the second version of the HEVC standard. This common base includes, for example, high-level syntax and semantics, for example, defining part of the bitstream layer characteristics, such as inter-layer dependencies, as well as decoding procedures, such as building a reference picture list including inter-layer prediction reference pictures, as well as computing sequence numbers. images for multilevel streams. Annex F may also apply to future layered HEVC extensions that may come at a later date. In the description below, video encoder, video decoder, coding methods, decoding methods, bitstream structures and/or embodiments of the present invention may be discussed in terms of specific extensions such as SHVC and/or MV-HEVC, however, it should be understood that they, in generally applicable also to layered HEVC extensions, and even more generally to any layered video coding scheme.

[0065] Универсальное видеокодирование (VVC) (MPEG-I Part 3), также известное под наименованием ITU Н.266, является стандартом видеосжатия, разрабатываемым Объединенной командой экспертов по видео (JVET) из состава консорциума MPEG и ITU, и призванным прийти на смену стандарту HEVC/H.265.[0065] Universal Video Coding (VVC) (MPEG-I Part 3), also known as ITU H.266, is a video compression standard being developed by the Joint Video Experts Team (JVET) of the MPEG and ITU consortium to replace HEVC/H.265 standard.

[0066] В настоящем разделе приведены ключевые определения, описана структура битового потока и кодирования, а также основные понятия стандартов H.264/AVC, HEVC и VVC, а также некоторых из их расширений. Они использованы в качестве примера видеокодера, декодера, способа кодирования, способа декодирования и структуры битового потока, в которых могут быть реализованы варианты осуществления настоящего изобретения. Аспекты настоящего изобретения не ограничены стандартами H.264/AVC, HEVC или VVC, и их расширениями, напротив, данное описание приведено в качестве одного из примеров базы для частичной или полной реализации вариантов осуществления настоящего изобретения. Когда ниже упоминается стандарт VVC или версии его проекта, нужно понимать, что настоящее описание соответствует проекту спецификации VVC, и в более поздних версиях проекта, или в финальной версии (или версиях VVC) могут быть изменения, и тогда описание вариантов осуществления настоящего изобретения могут быть скорректированы для соответствия финальной версии (или версиям) стандарта VVC.[0066] This section provides key definitions, describes the structure of the bitstream and encoding, as well as the basic concepts of the H.264/AVC, HEVC and VVC standards, as well as some of their extensions. They are used as an example of a video encoder, decoder, encoding method, decoding method, and bitstream structure in which embodiments of the present invention can be implemented. Aspects of the present invention are not limited to the H.264/AVC, HEVC, or VVC standards and their extensions, but rather, this description is provided as one example of a basis for implementing embodiments of the present invention in part or in full. When the VVC standard or draft versions of it are mentioned below, it is to be understood that the present description is in accordance with the draft VVC specification, and there may be changes in later draft versions or in the final version (or versions of VVC), in which case the description of embodiments of the present invention may be adjusted to match the final version (or versions) of the VVC standard.

[0067] Стандарты видеокодирования могут определять синтаксис и семантику битового потока, а также процедуру декодирования для безошибочных битовых потоков, при этом процедура кодирования может быть не определена, однако к кодерам может предъявляться требование формирования битовых потоков, отвечающих стандарту. Соответствие битового потока и декодера стандарту может быть проверено с помощью гипотетического эталонного декодера (Hypothetical Reference Decoder, HRD). Стандарт может включать в себя инструменты кодирования, помогающие справиться с ошибками и потерями при передаче, однако использование этих инструментов при кодировании может быть опциональным, а процесс декодирования для битовых потоков с ошибками может быть не определен.[0067] Video coding standards may define the syntax and semantics of the bitstream, as well as the decoding procedure for error-free bitstreams, while the encoding procedure may not be defined, however, encoders may be required to generate bitstreams that comply with the standard. Compliance of the bitstream and decoder with the standard can be checked using a hypothetical reference decoder (Hypothetical Reference Decoder, HRD). The standard may include coding tools to help deal with errors and transmission loss, but the use of these tools in coding may be optional, and the decoding process for erroneous bitstreams may not be specified.

[0068] Синтаксическим элементом может быть назван элемент данных, представленный в битовом потоке. Синтаксической структурой может быть назван ноль или более синтаксических элементов, совместно находящихся в битовом потоке в заданном порядке.[0068] A syntax element may be a data element represented in a bitstream. A syntax structure can be referred to as zero or more syntax elements co-located in a bitstream in a given order.

[0069] Каждый синтаксический элемент может быть описан наименованием и одним дескриптором формы его кодированного представления. Может применяться соглашение о том, что наименования синтаксических элементов состоят из строчных букв с символами подчеркивания. Поведение процедуры декодирования в видеодекодере может определяться значением синтаксического элемента и значениями ранее декодированных синтаксических элементов.[0069] Each syntax element can be described by the name and one form descriptor of its encoded representation. The convention that the names of syntax elements consist of lowercase letters with underscores may apply. The behavior of the decoding procedure in the video decoder may be determined by the value of the syntax element and the values of previously decoded syntax elements.

[0070] При описании стандартов H.264/AVCAVC, HEVC и VCC, а также различных примеров осуществления настоящего изобретения, для определения процедуры синтаксического анализа синтаксических элементов могут использоваться следующие обозначения.[0070] When describing the H.264/AVCAVC, HEVC, and VCC standards, as well as various embodiments of the present invention, the following notation can be used to define the procedure for parsing syntax elements.

u(n): целое без знака с использованием n бит. Если в синтаксической таблице n равно "v", то количество битов изменяется в зависимости от значения других синтаксических элементов. Процедура синтаксического анализа данного дескриптора определяется следующими n битами в битовом потоке, которые интерпретируются как двоичное представление целого числа без знака, старший бит которого идет первым.u(n): unsigned integer using n bits. If n is equal to "v" in the syntax table, then the number of bits changes depending on the value of other syntax elements. The parsing procedure for this descriptor is determined by the next n bits in the bitstream, which are interpreted as the binary representation of an unsigned integer whose most significant bit comes first.

- ue(v): синтаксический элемент в виде целого числа без знака, кодированного экспоненциальным кодом Голомба (exp-Golomb), где старший бит находится слева.- ue(v): syntax element as an unsigned integer encoded with exponential Golomb code (exp-Golomb), where the most significant bit is on the left.

[0071] Битовая строка, кодированная экспоненциальным кодом Голомба, может быть преобразована в кодовое число (codeNum), например, с использованием следующей таблицы:[0071] A bit string encoded with an exponential Golomb code can be converted to a code number (codeNum), for example, using the following table:

Figure 00000001
Figure 00000001

[0072] В некоторых случаях в синтаксических таблицах могут использоваться значения других переменных, вычисленных на основе значений синтаксических элементов. Может применяться соглашение о наименовании переменных, в котором используют комбинации из строчных и прописных букв без символов подчеркивания. Переменные, начинающиеся с прописной буквы, могут вычисляться для декодирования текущей синтаксической структуры и всех зависимых от нее синтаксических структур. Переменные, начинающиеся с прописной буквы, могут быть использованы в процессе декодирования последующих синтаксических структур без упоминания исходной синтаксической структуры переменной. Может применяться соглашение о том, что переменные, начинающиеся со строчной буквы, используются только в контексте их вычисления.[0072] In some cases, the syntax tables may use the values of other variables calculated based on the values of the syntax elements. A variable naming convention that uses combinations of lowercase and uppercase letters without underscores may be used. Variables starting with an uppercase letter can be evaluated to decode the current syntax structure and all syntax structures dependent on it. Variables beginning with an uppercase letter may be used in the decoding process of subsequent syntactic structures without mentioning the original syntactic structure of the variable. A convention may apply that variables beginning with a lowercase letter are used only in the context of their evaluation.

[0073] В некоторых случаях «мнемонические» наименования значений синтаксических элементов или переменных используются взаимозаменяемо с их численными значениями. Иногда «мнемонические» наименования используются без каких-либо соответствующих численных значений.[0073] In some cases, "mnemonic" names for the values of syntax elements or variables are used interchangeably with their numerical values. Sometimes "mnemonic" names are used without any corresponding numerical values.

[0074] Флаг - это переменная, или однобитный синтаксический элемент, имеющий одно из двух возможных значений: 0 или 1.[0074] A flag is a variable, or a one-bit syntax element, having one of two possible values: 0 or 1.

[0075] Массивы могут быть как синтаксическими элементами, так и переменными. Для индексов массивов могут использоваться квадратные скобки. Одномерный массив может называться списком. Двумерный массив может называться матрицей.[0075] Arrays can be both syntax elements and variables. Array indices can use square brackets. A one-dimensional array can be called a list. A two-dimensional array may be called a matrix.

[0076] Функции могут описываться их именами. Может использоваться соглашение о том, что имена функций начинаются с прописных букв, содержат комбинацию из строчных и прописных букв без символов подчеркивания и заканчиваются левой и правой скобками, заключающих ноль или более имен переменных (для определения) или значений (для использования), разделенных запятыми (при наличии более одной переменной).[0076] Functions may be described by their names. The convention may be that function names begin with uppercase letters, contain a combination of lowercase and uppercase letters without underscores, and end with left and right parentheses enclosing zero or more variable names (to be defined) or values (to be used), separated by commas (if there is more than one variable).

[0077] Функция Ceil(x) может быть определена как возвращающая наименьшее целое число, большее или равное х. Функция Log2(x) может быть определена как возвращающая логарифм х по основанию 2.[0077] The Ceil(x) function can be defined as returning the smallest integer greater than or equal to x. The Log2(x) function can be defined as returning the base 2 logarithm of x.

[0078] Могут быть определены процедуры для описания декодирования синтаксических элементов. Процедура может иметь независимые описание и вызов. Может быть определено, что все синтаксические элементы и переменные с наименованием прописными буквами, относящиеся к текущей синтаксической структуре и всем зависящим от нее синтаксическим структурам, доступны при описании процедуры и ее вызове, и также может быть определено, что описание процедуры может иметь переменные с наименованием строчными буквами, явно заданные как входные. Описание любой процедуры может явно задавать одну или более выходных переменных, каждая из которых может быть либо переменной с наименованием прописными буквами, либо переменной с наименованием строчными буквами.[0078] Procedures for describing the decoding of syntax elements may be defined. A procedure can have an independent description and call. It may be specified that all syntax elements and variables named in uppercase letters relating to the current syntax structure and all syntax structures dependent on it are available in the procedure declaration and its invocation, and it may also be specified that the procedure declaration may have variables named in lower case, explicitly given as input. The declaration of any procedure may explicitly define one or more output variables, each of which may be either an uppercase variable or a lowercase variable.

[0079] Синтаксис, семантика и процедуры могут быть определены с использованием арифметических, логических, реляционных, битовых операторов и операторов назначения, аналогичных применяемым в языке программирования С. В частности, оператор / используют для указания на целочисленное деление (с округлением), а оператор % используют для указания наделение по модулю (т.е. остаток от деления).[0079] Syntax, semantics, and procedures can be defined using arithmetic, logical, relational, bitwise, and assignment operators similar to those used in the C programming language. In particular, the / operator is used to indicate integer division (with rounding), and the operator % is used to indicate the modulo endowment (i.e., the remainder of the division).

[0080] Используемые соглашения о нумерации и счете могут соответствовать началу от 0, например, «первый» может быть эквивалентно 0-му, «второй» может быть эквивалентно 1-му и т.п.[0080] The numbering and counting conventions used may be zero-based, for example, "first" may be equivalent to 0, "second" may be equivalent to 1, and the like.

[0081] Элементарной единицей для ввода в декодер и вывода из декодера, соответственно, как правило, является изображение. Изображение, передаваемое в качестве входных данных в кодер может называться исходным изображением, а изображение, декодированное декодером, может называться декодированным или восстановленным изображением.[0081] The elementary unit for input to the decoder and output from the decoder, respectively, is usually an image. The image supplied as input to the encoder may be referred to as the original image, and the image decoded by the decoder may be referred to as the decoded or reconstructed image.

[0082] Исходное и декодированное изображения, каждое, состоят из одного или более массивов отсчетов, например, одного или более следующих наборов массивов отсчетов:[0082] The original and decoded images each consist of one or more arrays of samples, for example, one or more of the following sets of arrays of samples:

- Только составляющая яркости (Y) (монохромное изображение).- Only the luminance component (Y) (monochrome image).

- Составляющая яркости и две составляющие цветности (YCbCr или YCgCo).- A luma component and two chrominance components (YCbCr or YCgCo).

- Составляющие зеленого, синего и красного (GBR или RGB).- Green, blue and red components (GBR or RGB).

- Массивы, представляющие другие не специфицированные монохромные или трехкомпонентные цветовые отсчеты (например, YZX, которые также называют XYZ).- Arrays representing other unspecified monochrome or 3-component color samples (eg YZX, also called XYZ).

[0083] Далее в настоящем описании такие массивы называются компонентами яркости (или L, или Y) и компонентами цветности, при этом два массива цветности могут обозначаться за Cb и Cr; независимо от реально используемого метода представления информации о цвете. Фактически используемый способ представления цветовой информации может, например, указываться в битовом потоке, например, с использованием синтаксиса информации об используемости видео (Video Usability Information, VUI) в стандарте HEVC или другом стандарте. Составляющая может быть определена как массив отсчетов, или одиночный отсчет, из одного из трех массивов отчетов (одного яркости и двух цветности), или как массив отсчетов, или одиночный отсчет, из массива, образующего изображение в монохромном формате.[0083] Hereinafter, such arrays are referred to as luminance (or L, or Y) components and chrominance components, with the two chrominance arrays being referred to as Cb and Cr; regardless of the actual method used to represent color information. The actual color information representation method used may, for example, be indicated in the bitstream, for example, using the Video Usability Information (VUI) syntax in the HEVC standard or another standard. A component can be defined as an array of samples, or a single sample, from one of three report arrays (one luma and two chrominance), or as an array of samples, or a single sample, from an array forming a monochrome image.

[0084] Изображение может быть определено либо как кадр, либо как поле. Кадр включает в себя матрицу отсчетов яркости, и возможно также, соответствующих отсчетов цветности. Поле представляет собой множество чередующихся строк отсчетов в кадре и может использоваться в качестве входных данных для кодера в случае, когда исходный сигнал является чересстрочным. Массивы отсчетов цветности могут отсутствовать (и, следовательно, могут применяться монохромные значения) или массивы отсчетов цветности могут иметь пониженное разрешение по сравнению с массивами отсчетов яркости.[0084] An image can be defined as either a frame or a field. The frame includes an array of luma samples, and possibly also corresponding chrominance samples. A field is a set of alternating lines of samples in a frame and can be used as input to an encoder when the source signal is interlaced. Chroma sample arrays may be missing (and therefore monochrome values may be used), or chroma sample arrays may have a reduced resolution compared to luminance sample arrays.

[0085] Ниже кратко описаны некоторые из форматов представления цветности.[0085] Some of the chroma representation formats are briefly described below.

- При дискретизации в монохромном формате имеется только один массив отсчетов, который, по определению, считают массивом яркости.- When sampling in monochrome format, there is only one array of samples, which, by definition, is considered an array of brightness.

- При дискретизации с форматом 4:2:0 каждый из двух массивов цветности имеет половину высоты массива яркости и половину его ширины.- When sampled at 4:2:0, each of the two chrominance arrays is half the height of the luma array and half its width.

- При дискретизации с форматом 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту с массивом яркости, но половину ширины.- When sampling with a 4:2:2 format, each of the two chroma arrays has the same height as the luma array, but half the width.

- При дискретизации с форматом 4:4:4, если не используются отдельные цветовые плоскости, каждый из двух массивов цветности ту же высоту и ширину, что и массив яркости.- When sampling with a 4:4:4 format, if separate color planes are not used, each of the two chrominance arrays is the same height and width as the luma array.

[0086] Форматы или стандарты кодирования могут допускать кодирование массивов отсчетов в виде отдельных цветовых плоскостей в битовом потоке, и, соответственно, может выполняться декодирование отдельно кодированных цветовых плоскостей из битового потока. Если применяются отдельные цветовые плоскости, каждую из них обрабатывают отдельно (в кодере и/или декодере) как изображение с монохромным представлением.[0086] Coding formats or standards may allow encoding arrays of samples as separate color planes in a bitstream, and accordingly decoding of separately encoded color planes from the bitstream can be performed. If separate color planes are used, each of them is processed separately (in the encoder and/or decoder) as an image with a monochrome representation.

[0087] Разбиением (partitioning) называют такое разделение множества на подмножества, при котором каждый из элементов множества находится только в одном из подмножеств. В видеокодировании разбиением может называться разделение изображения или подобласти изображения на подмножества таким образом, что каждый элемент изображения или подобласти изображения находится точно в одном подмножестве. Например, при разбиении в соответствии с кодированием и/или декодированием HEVC, и/или кодированием и/или декодированием VVC, могут использоваться описанные ниже термины. Блок кодирования (coding block) - это блок отсчетов размером N×N для некоторого значения N, такой, что разделение блока кодового дерева на блоки кодирования является разбиением. Блок кодового дерева (coding tree block, СТВ) - это блок отсчетов размером N×N для некоторого значения N, такой что разделение составляющей изображения на блоки кодового дерева будет разбиением. Пакет кодового дерева (coding tree unit, CTU) может быть определен как блок кодового дерева из отсчетов яркости, два соответствующих блока кодового дерева из отсчетов цветности в случае изображения, имеющего три массива отсчетов, или блок кодового дерева в монохромном изображении или изображении, которое кодируют с использованием трех отдельных цветовых плоскостей, и синтаксические структуры, применяемые для кодирования отсчетов. Блок кодирования (coding unit, CU) - это блок кодирования из отсчетов яркости, два соответствующих блока кодирования из отсчетов цветности для изображения, имеющего три массива значений, или блок кодирования из отсчетов монохромного изображения или изображения, которое кодируют с использованием трех отдельных цветовых плоскостей, и синтаксические структуры, применяемые для кодирования отсчетов. Блок кодирования CU максимально допустимого размера, как правило, называется LCU (largest coding unit, наибольший блок кодирования) или пакетом кодового дерева (CTU), при этом изображение в видео разбивается на неперекрывающиеся блоки LCU.[0087] Partitioning is such a division of a set into subsets, in which each of the elements of the set is in only one of the subsets. In video coding, partitioning may refer to dividing an image or image sub-region into subsets such that each element of the image or image sub-regions is in exactly one subset. For example, when splitting according to HEVC encoding and/or decoding and/or VVC encoding and/or decoding, the terms described below may be used. A coding block is a block of samples of size N×N for some value of N, such that dividing the coding tree block into coding blocks is a split. A coding tree block (CTB) is a block of samples of size N×N for some value of N, such that dividing the image component into coding tree blocks would be a split. A coding tree unit (CTU) can be defined as a luminance sample code tree block, two corresponding chrominance sample code tree blocks in the case of an image having three sample arrays, or a code tree block in a monochrome image or an image that is being coded. using three separate color planes, and syntactic structures used to encode samples. A coding unit (CU) is a luminance sample coding unit, two corresponding chrominance sample coding units for an image having three arrays of values, or a monochrome image sample coding unit or an image that is encoded using three separate color planes, and syntactic structures used to encode samples. The maximum allowed size CU coding unit is usually called LCU (largest coding unit) or Code Tree Packet (CTU), while the image in the video is divided into non-overlapping LCUs.

[0088] В стандарте HEVC блок кодирования CU состоит из одного или более блоков предсказания (prediction unit, PU), определяющих процедуру предсказания отсчетов в блоке кодирования, а также одного или более блоков преобразования (transform units, TU), определяющих процедуру кодирования ошибки предсказания для отсчетов в этом блоке кодирования. Как правило, CU состоит из квадратного блока отсчетов, размер которого выбирают из заранее заданного множества допустимых размеров кодового блока. Каждый блок предсказания, PU, и блок преобразования, TU, могут быть разбиты на менее крупные блоки предсказания и блоки преобразования с целью повышения точности процедур предсказания и кодирования ошибки предсказания, соответственно. Каждый блок предсказания, PU, имеет связанную с ним информацию предсказания, которая определяет, какого типа предсказание должно применяться к пикселям данного блока предсказания (например, информацию вектора движения в случае блока предсказания с внешним предсказанием, или информацию направления внутреннего предсказания в случае внутренне предсказываемого блока предсказания).[0088] In the HEVC standard, a CU coding unit consists of one or more prediction units (PU) defining a procedure for predicting samples in a coding block, as well as one or more transform units (TU) defining a procedure for encoding a prediction error. for samples in this coding block. Typically, a CU consists of a square block of samples, the size of which is chosen from a predetermined set of allowable code block sizes. Each prediction block, PU, and transform unit, TU, may be partitioned into smaller prediction blocks and transform blocks in order to improve the accuracy of prediction procedures and prediction error coding, respectively. Each prediction block, PU, has associated prediction information that specifies what type of prediction should be applied to the pixels of that prediction block (e.g., motion vector information in the case of an inter prediction block, or intra prediction direction information in the case of an intra prediction block). predictions).

[0089] Аналогично, каждый блок преобразования может быть связан с информацией, описывающей процедуру декодирования ошибки предсказания для значений в данном блоке преобразования (включая, например, информацию о коэффициентах DCT-преобразования). Информация о том, применяется ли кодирование ошибки предсказания для каждого CU или нет, как правило, сигнализируется в синтаксических элементах на уровне блока кодирования. Если остатка или ошибки предсказания, связанного с CU нет, то можно считать, что для данного блока кодирования блоки преобразования, TU, отсутствуют. Информация о разделении изображения на блоки кодирования, CU, и о разделении блоков кодирования на блоки предсказания, PU, и блоки преобразования, TU, сигнализируемая, как правило, в битовом потоке, позволяет декодеру воспроизводить заданную структуру этих блоков.[0089] Similarly, each transform block may be associated with information describing a prediction error decoding procedure for values in that transform block (including, for example, information about DCT transform coefficients). Whether or not per-CU prediction error coding is applied is typically signaled in syntax elements at the coding block level. If there is no residual or prediction error associated with the CU, then it can be considered that there are no transform units, TUs, for the given coding unit. Information about dividing the image into coding units, CU, and dividing the coding units into prediction units, PU, and transformation units, TU, signaled generally in the bit stream, allows the decoder to reproduce the given structure of these blocks.

[0090] Ниже описано разбиение, применяемое в проекте стандарта H.266/VVC. Следует отметить, что описанное здесь может меняться в более поздних версиях проекта H.266/VVC, до тех пор, пока стандарт не будет финализирован. Изображения разбивают на блоки CTU аналогично HEVC, однако максимальный размер CTU увеличен до 128×128. Пакет кодового дерева (CTU) сначала разбивают в соответствии со структурой квадродерева. Затем вершины квадродерева могут быть дополнительно подразбиты на древообразные структуры различных типов. Среди этих древовидных структур многих типов имеются четыре типа разделения: вертикальное двоичное разделение, горизонтальное двоичное разделение, вертикальное троичное разделение и горизонтальное троичное разделение. Такие многотипные листы дерева называют блоками кодирования (CU). Блоки кодирования, CU, блоки предсказания, PU, и блоки преобразования, TU, имеют одинаковый размер блока, если только блок кодирования не превышает максимальную длину преобразования. Структурой сегментации блока CTU является квадродерево с вложенными многотипными деревьями, в которых применяют двоичное и троичное деление, т.е. не применяют отдельных специальных моделей блоков CU, PU и TU, кроме тех случаев, когда это необходимо для блоков кодирования с размером, превышающим максимальную длину преобразования. Блок кодирования, CU, может иметь квадратную или прямоугольную форму.[0090] The partitioning used in the draft H.266/VVC standard is described below. It should be noted that what is described here is subject to change in later versions of the H.266/VVC draft until the standard is finalized. Images are split into CTUs similar to HEVC, but the maximum CTU size is increased to 128x128. The Code Tree Packet (CTU) is first split according to the quadtree structure. The vertices of the quadtree can then be further subdivided into tree structures of various types. Among these tree structures of many types, there are four types of partitions: vertical binary partition, horizontal binary partition, vertical ternary partition, and horizontal ternary partition. Such multitype tree leaves are called coding units (CUs). The coding units, CU, the prediction units, PU, and the transform units, TU, have the same block size, unless the coding unit exceeds the maximum transform length. The segmentation structure of the CTU is a quadtree with nested multitype trees that use binary and ternary division, i.e. do not apply separate special block models CU, PU and TU, except when necessary for coding blocks with a size exceeding the maximum transformation length. The coding unit, CU, may be square or rectangular.

[0091] Элементарной единицей вывода из кодеров в некоторых форматах кодирования, например, в VVC, и ввода в декодер, в некоторых форматах кодирования, например, VVC, является блок уровня сетевой абстракции (Network Abstraction Layer, NAL). С целью передачи по сетям пакетной передачи данных или хранения в структурированных файлах, блоки NAL могут инкапсулироваться в пакеты или в аналогичные структуры.[0091] The unit of output from encoders in some coding formats, such as VVC, and input to a decoder, in some coding formats, such as VVC, is the Network Abstraction Layer (NAL) block. For the purpose of transmission over packet data networks or storage in structured files, NAL units may be encapsulated in packets or similar structures.

[0092] Формат битового потока для потоков из блоков NAL может быть определен для сред передачи или хранения, не обеспечивающих структуру кадров. В таких форматах битового потока блоки NAL отделяются друг от друга при помощи прикрепления стартового кода перед каждым блоком NAL. Чтобы исключить ложное обнаружение границ блоков NAL в кодерах исполняется байтовый алгоритм предотвращения эмуляции стартового кода, который добавляет байт предотвращения эмуляции к полезной нагрузке блока NAL, если в противном случае в ней будет присутствовать стартовый код. Для обеспечения прозрачного шлюзового взаимодействия между системами пакетной и потоковой передачи данных, предотвращение эмуляции стартового кода должно выполняться в любом случае, независимо от того, применяется формат битового потока или нет.[0092] The bitstream format for streams from NAL units may be defined for transmission or storage media that do not provide a frame structure. In such bitstream formats, NAL units are separated from each other by attaching a start code before each NAL unit. To avoid false detection of NAL unit boundaries, the encoders run a start code emulation prevention byte algorithm that adds an emulation prevention byte to the NAL unit payload if the start code would otherwise be present. In order to provide transparent gateway communication between packet and streaming systems, start code emulation prevention must be performed in any case, regardless of whether the bitstream format is used or not.

[0093] Блок NAL - это синтаксическая структура, содержащая указание на тип данных, следующих за ней, и байты, содержащие эти данные в форме RBSP, чередующиеся, при необходимости, с байтами предотвращения эмуляции. Последовательность исходных байтов полезной нагрузки (raw byte sequence payload, RBSP) может быть определена как синтаксическая структура, включающая целое число байтов и инкапсулированная в блок NAL. Последовательность RBSP может быть либо пустой, либо иметь форму строки информационных битов, содержащих синтаксические элементы, за которыми следует стоп-бит RBSP и ноль или более последующих битов, равных 0.[0093] The NAL block is a syntax structure containing an indication of the type of data following it, and bytes containing this data in the form of RBSP, interleaved, if necessary, with emulation prevention bytes. A raw byte sequence payload (RBSP) sequence can be defined as a syntax structure that includes an integer number of bytes and is encapsulated in a NAL unit. The RBSP sequence may be either empty or in the form of a string of information bits containing syntax elements followed by an RBSP stop bit and zero or more subsequent bits equal to 0.

[0094] Блоки NAL состоят из заголовка и полезной нагрузки. В заголовке блока NAL указывают, помимо другой информации, тип блока NAL.[0094] NAL units consist of a header and a payload. The NAL unit header indicates, among other information, the type of the NAL unit.

[0095][0095]

[0096] Блоки NAL могут быть разделены на две категории: блоки NAL уровня видеокодирования (Video Coning Layer, VCL) и блоки NAL, не относящиеся к VCL. Блоки NAL VCL представляют собой блоки NAL со стандартным кодированием слайсов.[0096] NAL units can be divided into two categories: Video Coning Layer (VCL) NAL units and non-VCL NAL units. VCL NAL units are NAL units with standard slice coding.

[0097] Блок NAL, не относящийся к VCL, может, например, иметь один из следующих типов: набор параметров последовательности, набор параметров изображения, блок NAL дополнительной уточняющей информации (supplemental enhancement information, SEI), разделитель блока доступа, конец последовательности блоков NAL, конец битового потока блоков NAL или блок NAL с данными фильтрации. Набор параметров может быть необходим для восстановления декодированных изображений, при этом многие из остальных типов блоков NAL, не относящихся к VCL, не являются необходимыми для восстановления декодированных изображений.[0097] A non-VCL NAL unit may, for example, be one of the following types: sequence parameter set, picture parameter set, supplemental enhancement information (SEI) NAL unit, access unit delimiter, end of NAL unit sequence , the end of the NAL unit bitstream, or the NAL unit with filtering data. A set of parameters may be needed to recover decoded pictures, while many of the other non-VCL NAL unit types are not needed to recover decoded pictures.

[0098] В некоторых форматах кодирования определены наборы параметров, которые могут содержать значения параметров, необходимых для декодирования или восстановления декодированных изображений. Параметр может быть определен как синтаксический элемент в наборе параметров. Набор параметров может быть определен как синтаксическая структура, которая содержит параметры и на которую могут осуществляться ссылки из других синтаксических структур, или которые могут активироваться из других синтаксических структур, например, с помощью идентификатора.[0098] In some coding formats, parameter sets are defined that may contain parameter values necessary for decoding or restoring decoded pictures. A parameter may be defined as a syntax element in a parameter set. A parameter set may be defined as a syntax structure that contains parameters and that can be referenced from other syntax structures, or that can be activated from other syntax structures, for example by an identifier.

[0099] Ниже описаны некоторые из типов наборов параметров, однако нужно понимать, что могут существовать и другие, и варианты осуществления настоящего изобретения могут применяться в описанных типах наборов параметров, но не ограничены ими. В набор параметров последовательности (sequence parameter set, SPS) могут включаться параметры, которые остаются неизменными на протяжении всей кодированной видеопоследовательности. В дополнение к параметрам, которые могут быть необходимы в процессе декодирования, набор параметров последовательности опционально может включать информацию по используемости видео (video usability information, VUI), включающую параметры, важные для буферизации, синхронизации вывода изображения, рендеринга и резервирования ресурсов. Набор параметров изображения (picture parameter set, PPS) содержит параметры, которые с большой вероятностью будут неизменными для нескольких кодированных изображений. Набор параметров изображения может включать в себя параметры, на которые могут выполняться ссылки из сегментов одного или более кодированных изображений. Набор параметров заголовка (header parameter set, HPS) был введен для включения параметров, которые могут меняться для каждого отдельного изображения.[0099] Some of the parameter set types are described below, however, it should be understood that others may exist, and embodiments of the present invention can be applied to, but are not limited to, the described parameter set types. A sequence parameter set (SPS) may include parameters that remain the same throughout the encoded video sequence. In addition to parameters that may be needed during the decoding process, the sequence parameter set may optionally include video usability information (VUI) including parameters important for buffering, image output timing, rendering, and resource reservation. A picture parameter set (PPS) contains parameters that are likely to be the same across multiple encoded pictures. The picture parameter set may include parameters that may be referenced from segments of one or more encoded pictures. A header parameter set (HPS) was introduced to include parameters that can change for each individual image.

[0100] Битовый поток - это последовательность битов, которая, в некоторых форматах или стандартах кодирования, может иметь вид потока блоков NAL или потока байтов, который позволяет получить представление кодированных изображений и связанных с ними данных в форме одной или более кодированных видеопоследовательностей. В одном логическом канале, например, в одном файле или по одному соединению протокола связи за первым битовым потоком может следовать второй битовый поток. Элементарный поток (в контексте видеокодирования) это последовательность из одного или более битовых потоков. В некоторых форматах или стандартах кодирования конец первого битового потока может быть обозначен специальным блоком NAL, который может называться блоком NAL конца битового потока (end of bitstream, ЕОВ), и который является последним блоком NAL битового потока.[0100] A bitstream is a sequence of bits, which, in some formats or coding standards, may take the form of a stream of NAL units or a byte stream, which allows a representation of encoded images and associated data in the form of one or more encoded video sequences. In one logical channel, for example, in one file or one communication protocol connection, the first bit stream may be followed by the second bit stream. An elementary stream (in the context of video coding) is a sequence of one or more bit streams. In some formats or coding standards, the end of the first bitstream may be designated by a special NAL unit, which may be called an end of bitstream (EOB) NAL unit, which is the last NAL unit of the bitstream.

[0101] Фрагмент (portion) битового потока - это непрерывное подмножество битового потока. В некоторых контекстах может предъявляться требование, чтобы фрагмент битового потока состоял из одной или более полных синтаксических структур и не имел неполных синтаксических структур. В других контекстах фрагмент битового потока может включать любой непрерывной отрезок битового потока и может включать неполные синтаксические структуры.[0101] A portion (portion) of a bitstream is a contiguous subset of a bitstream. In some contexts, there may be a requirement that a bitstream fragment consist of one or more complete syntax structures and not have incomplete syntax structures. In other contexts, a bitstream fragment may include any contiguous section of the bitstream and may include incomplete syntactic structures.

[0102] Выражение «вместе с битовым потоком» (например, «указание вместе с битовым потоком») или «вместе с кодированным блоком битового потока» (например, «указание вместе с кодированным тайлом») может пониматься, в пунктах формулы изобретения и в описании вариантов осуществления настоящего изобретения, как передача, сигнализация или хранение данных вне основной полосы частот, таким образом, чтобы данные, не принадлежащие основной полосе частот, оставались связанными с битовым потоком или кодированным блоком, соответственно, но не были в них включены. Выражение «декодирование вместе с битовым потоком», или «вместе с кодированным блоком битового потока», или аналогичные выражения, могут обозначать декодирование данных, поступающих вне основной полосы частот, на которые осуществляют ссылки (и которые могут быть получены путем передачи, сигнализации или хранения данных вне основной полосы частоты) и которые связаны с битовым потоком или кодированным блоком, соответственно. К примеру, выражение «вместе с битовым потоком» может использоваться, когда битовый поток содержится в контейнерном файле, например, файле, соответствующему базовому формату медиафайлов ISO, а метаданные файла хранят в файле таким образом, чтобы они были связаны с битовым потоком, например, в виде боксов в записи сэмпла для трека, содержащего битовый поток, группы сэмплов для трека, содержащего битовый поток, или трека синхронизированных метаданных, связанного с треком, содержащим битовый поток.[0102] The expression "together with the bitstream" (e.g., "an indication along with the bitstream") or "together with the encoded block of the bitstream" (e.g., "an indication along with the encoded tile") can be understood, in the claims and in describing embodiments of the present invention as transmitting, signaling, or storing data outside the baseband, such that data outside the baseband remains associated with, but not included in, the bitstream or coded block, respectively. The expression "decoding along with the bitstream", or "together with the encoded block of the bitstream", or similar expressions, may refer to the decoding of data arriving outside the base band, which is referenced (and which can be received by transmission, signaling or storage data outside the baseband) and which are associated with a bitstream or a coded block, respectively. For example, the phrase "together with the bitstream" can be used when the bitstream is contained in a container file, such as a file conforming to the ISO Base Media File Format, and the file's metadata is stored in the file in such a way that it is associated with the bitstream, for example, as boxes in a sample record for a track containing a bitstream, a group of samples for a track containing a bitstream, or a sync metadata track associated with a track containing a bitstream.

[0103] Кодированная видеопоследовательность (coded video sequence, CVS) - это такая последовательность кодированных изображений в порядке декодирования, которая является независимо декодируемой и за которой следует еще одна кодированная видеопоследовательность или конец битового потока. Кодированная видеопоследовательность, альтернативно или дополнительно, может быть определена как оканчивающаяся, когда в битовом потоке встречается специальный блок NAL, который может называться блоком NAL конца последовательности (end of sequence, EOS).[0103] A coded video sequence (CVS) is a sequence of coded pictures in decoding order that is independently decodable and is followed by another coded video sequence or the end of a bitstream. An encoded video sequence, alternatively or additionally, may be defined as ending when a special NAL unit is encountered in the bitstream, which may be referred to as an end of sequence (EOS) NAL unit.

[0104] Изображения могут разбиваться на независимо кодируемые и декодируемые сегменты изображения (например, слайсы и/или тайлы, и/или группы тайлов). Такие сегменты изображения позволяют выполнять параллельную обработку. Слайсами в настоящем описании называют сегменты изображения, состоящие из заданного числа базовых блоков кодирования, которые обрабатывают в заданном по умолчанию порядке кодирования или декодирования, тогда как тайлами обычно называют сегменты изображения, определенные как прямоугольные области изображения, расположенные в виде сетки тайлов. Группа тайлов это группа из одного или более тайлов. Сегменты изображения в битовом потоке могут быть кодированы как отдельные блоки, например, блоки NAL VCL в стандартах H.264/AVC, HEVC и VVC. Кодированные сегменты изображения могут включать заголовок и полезную нагрузку, при этом заголовок содержит значения параметров, необходимых для декодирования полезной нагрузки. Полезную нагрузку слайсов называют данными слайсов.[0104] Images may be partitioned into independently encoded and decoded image segments (eg, slices and/or tiles and/or groups of tiles). Such image segments allow for parallel processing. Slices in the present description refer to image segments consisting of a given number of basic coding units that are processed in a default encoding or decoding order, while tiles are generally referred to as image segments defined as rectangular image areas arranged in a grid of tiles. A group of tiles is a group of one or more tiles. Image segments in a bitstream may be encoded as separate blocks, such as VCL NAL blocks in H.264/AVC, HEVC and VVC standards. The encoded picture segments may include a header and a payload, where the header contains parameter values needed to decode the payload. The payload of slices is called slice data.

[0105] В стандарте HEVC изображение может быть разбито на тайлы, которые имеют прямоугольную форму и содержат целое число блоков LCU. В стандарте HEVC разбиение на тайлы дает регулярную сетку, в которой максимальная разность между высотой и шириной тайлов равна одному LCU. В стандарте HEVC слайс определен как целое количество блоков кодового дерева, содержащихся в одном независимом сегменте слайса и во всех последующих зависимых сегментах слайса (если они присутствуют), которые предшествуют следующему независимому сегменту слайса (если он существует) внутри одного блока доступа. В стандарте HEVC сегмент слайса определяют как целое количество блоков кодового дерева, организованных в виде последовательности, в порядке сканирования тайла, и содержащихся в одном блоке NAL. Разделение каждого из изображений на сегменты слайса является разбиением. В стандарте HEVC независимый сегмент слайса определен как сегмент слайса, для которого значения синтаксических элементов в заголовке сегмента слайса не получают на основе значений предыдущего сегмента слайса, а зависимый сегмент слайса определен как сегмент слайса, для которого значения некоторых из синтаксических элементов в заголовке сегмента слайса получают на основе значений для предыдущего независимого сегмента слайса в порядке декодирования. В стандарте HEVC заголовок слайса определен как заголовок независимого сегмента слайса, который является текущим, или как заголовок независимого сегмента слайса, который предшествует текущему зависимому сегменту слайса, при этом заголовок сегмента слайса определен как часть кодированного сегмента слайса, включающего элементы данных, которые относятся к первому блоку (или ко всем блокам) кодового дерева, представленному (или представленным) в сегменте слайса. Блоки кодирования, CU, сканируют в порядке сканирования растра LCU в тайлах или в изображении в целом, если тайлы не используются. В LCU блоки кодирования, CU, могут иметь заданный порядок сканирования.[0105] In the HEVC standard, an image can be divided into tiles that are rectangular in shape and contain an integer number of LCUs. In the HEVC standard, tiling results in a regular grid in which the maximum difference between the height and width of the tiles is equal to one LCU. In the HEVC standard, a slice is defined as the integer number of code tree blocks contained in one independent slice segment and all subsequent dependent slice segments (if present) that precede the next independent slice segment (if any) within one access block. In the HEVC standard, a slice segment is defined as an integer number of code tree blocks organized as a sequence, in tile scan order, and contained in one NAL block. Dividing each of the images into slice segments is a partition. In the HEVC standard, an independent slice segment is defined as a slice segment for which the values of the syntax elements in the slice segment header are not derived from the values of the previous slice segment, and a dependent slice segment is defined as a slice segment for which the values of some of the syntax elements in the slice segment header are derived from based on the values for the previous independent slice segment in decoding order. In the HEVC standard, a slice header is defined as the header of an independent slice segment that is current, or as a header of an independent slice segment that precedes the current dependent slice segment, where the slice segment header is defined as part of an encoded slice segment including the data elements that refer to the first one. the block (or all blocks) of the code tree represented (or represented) in the slice segment. The coding units, CUs, are scanned in LCU raster scan order in tiles, or in the overall image if no tiles are used. In an LCU, coding units, CUs, may have a predetermined scan order.

[0106] Соответственно, стандарты и спецификации видеокодирования могут допускать разделение, в кодере, кодированного изображения на кодированные слайсы или аналогичные элементы. Предсказание внутри изображения с пересечением границ слайсов, как правило, не допускается. Следовательно, слайсы можно считать способом разделения кодированного изображения на независимо декодируемые части. В стандартах H.264/AVC и HEVC предсказание внутри изображения с пересечением границ слайсов может быть запрещено. Соответственно, слайсы можно считать способом деления кодированного изображения на независимо декодируемые части, и, следовательно, слайсы часто считаются элементарными единицами передачи. Во многих случаях кодеры могут указывать в битовом потоке, какие типы внутреннего предсказания с переходом между границами слайсов запрещены, при этом декодер учитывает данную информацию при своей работе, например, делая вывод о доступных источниках предсказания. Например, отсчеты из смежных блоков кодирования могут считаться недоступными для внутреннего предсказания, если эти блоки кодирования расположены в различных слайсах.[0106] Accordingly, video coding standards and specifications may allow the division, at the encoder, of an encoded image into encoded slices or similar elements. Intra-image prediction that crosses slice boundaries is generally not allowed. Therefore, slices can be thought of as a way of dividing an encoded image into independently decodable parts. In the H.264/AVC and HEVC standards, intra-picture prediction with slice boundary crossings may be prohibited. Accordingly, slices can be thought of as a way of dividing an encoded picture into independently decodable parts, and hence slices are often considered to be elementary units of transmission. In many cases, encoders can indicate in the bitstream which types of intra slice boundary prediction are prohibited, and the decoder takes this information into account in its work, for example, inferring available prediction sources. For example, samples from adjacent coding blocks may be considered unavailable for intra prediction if these coding blocks are located in different slices.

[0107] Ниже описано разбиение изображений на слайсы, тайлы и кирпичи в проекте стандарта VVC (т.е. в версии 5 проекта VVC). В других версиях проекта VVC разбиение изображений на слайсы, тайлы и кирпичи может быть определено аналогичным образом.[0107] The following describes the partitioning of images into slices, tiles and bricks in the draft VVC standard (ie, version 5 of the VVC draft). In other versions of the VVC project, the partitioning of images into slices, tiles, and bricks can be defined in a similar way.

[0108] Изображение разделяют на одну или более строк тайлов и один или более столбец тайлов. Разбиение изображения на тайлы формирует сетку тайлов, которая может быть охарактеризована списком значений ширины столбцов тайлов (в CTU) и списком высот строк тайлов (в CTU).[0108] The image is divided into one or more rows of tiles and one or more columns of tiles. Dividing the image into tiles forms a grid of tiles, which can be characterized by a list of tile column widths (in CTU) and a list of tile row heights (in CTU).

[0109] Тайл это последовательность блоков кодового дерева (CTU), которая покрывает одну «ячейку» в сетке тайлов, т.е. прямоугольную область изображения. Тайл разбивается на один или более кирпичей, каждый из которых состоит из набора строк CTU внутри этого тайла. Тайл, не разбитый на множество кирпичей, также называют кирпичом. Однако кирпич, являющийся истинным подмножеством тайла, не называют тайлом.[0109] A tile is a sequence of Code Tree Units (CTUs) that covers one "cell" in a grid of tiles, i.e. rectangular area of the image. A tile is broken into one or more bricks, each of which consists of a set of CTU rows within that tile. A tile that is not divided into many bricks is also called a brick. However, a brick that is a true subset of a tile is not called a tile.

[0110]Слайс содержит либо набор тайлов изображения, либо набор кирпичей тайла. Слайс является блоком NAL VCL.[0110] A slice contains either a set of image tiles or a set of tile bricks. A slice is a VCL NAL unit.

[0111] Поддерживаются два режима слайсов, а именно режим слайсов со сканированием растра и режим прямоугольных слайсов. В режиме слайсов со сканированием растра слайс содержит последовательность тайлов в порядке сканирования тайлового растра изображения. В режиме прямоугольных слайсов слайс содержит набор кирпичей изображения, которые совместно образуют прямоугольную область изображения. Кирпичи в прямоугольном слайсе располагаются в порядке сканирования растра кирпичей слайса.[0111] Two slice modes are supported, namely a raster scan slice mode and a rectangular slice mode. In raster-scan slice mode, a slice contains a sequence of tiles in the order in which the image's tiled raster was scanned. In rectangular slice mode, a slice contains a set of image bricks that together form a rectangular image area. The bricks in a rectangular slice are arranged in the order in which the slice's brick raster is scanned.

[0112] Порядок сканирования кирпича может быть определен как конкретный порядок последовательных блоков CTU, на которые разбито изображения, где CTU внутри кирпича расположены последовательно в порядке сканирования растра CTU, при этом кирпичи в тайле расположены последовательно в порядке сканирования растра кирпичей тайла, а тайлы в изображения расположены последовательно в порядке сканирования растра тайлов изображения. Может предъявляться требование, например, в стандарте кодирования, о том, что блоки NAL кодированного слайса должны располагаться в порядке увеличения адреса CTU в порядке сканирования кирпича для первого CTU каждого блока NAL кодированного слайса, при этом может быть определено, что адрес CTU увеличивается в порядке сканирования растра CTU внутри изображения. Растр может быть определен как отображение прямоугольной двумерной структуры на одномерную структуру, таким образом, что первые записи в одномерной структуре будут из первой верхней строки двумерной структуры, сканируемой слева направо, за ними будут идти, аналогично, вторая, третья и т.д. строки структуры (в направлении вниз), каждую из которых сканируют слева направо.[0112] A brick scan order can be defined as the specific order of consecutive CTUs into which images are divided, where the CTUs within a brick are sequential in CTU raster scan order, the bricks in a tile are sequential in the tile brick raster scan order, and the tiles in the images are arranged sequentially in the order in which the raster of image tiles is scanned. It may be required, for example, in a coding standard, that coded slice NALs must be arranged in order of increasing CTU address in brick scan order for the first CTU of each coded slice NAL, it may be determined that the CTU address is increased in order scanning the CTU raster inside the image. A raster can be defined as a mapping of a rectangular 2D structure onto a 1D structure such that the first entries in the 1D structure are from the top first row of the 2D structure, scanned from left to right, followed by the second, third, and so on. structure lines (in the downward direction), each of which is scanned from left to right.

[0113] На фиг. 5а показан пример разбиения изображения на слайсы в режиме сканирования растра, где изображение разбивают на 12 тайлов и 3 слайса в режиме сканирования растра. На фиг. 5b показан пример разбиения изображения на прямоугольные слайсы (с размером 18×12 CTU), где изображение разбивают на 24 тайла (6 столбцов тайлов и 4 строки тайлов) и 9 прямоугольных слайсов. На фиг. 5 с показан пример разбиения изображения на тайлы, кирпичи и прямоугольные слайсы, где изображение разбивают на 4 тайла (2 столбца тайлов и 2 строки тайлов), 11 кирпичей (верхний левый тайл содержит 1 кирпич, верхний правый тайл содержит 5 кирпичей, нижний левый тайл содержит 2 кирпича, и нижней правый тайл содержит 3 кирпича) и 4 прямоугольных слайса.[0113] In FIG. 5a shows an example of image slicing in raster scan mode, where the image is sliced into 12 tiles and 3 slices in raster scan mode. In FIG. 5b shows an example of partitioning an image into rectangular slices (with a size of 18×12 CTU), where the image is partitioned into 24 tiles (6 columns of tiles and 4 rows of tiles) and 9 rectangular slices. In FIG. 5c shows an example of splitting an image into tiles, bricks and rectangular slices, where the image is split into 4 tiles (2 columns of tiles and 2 rows of tiles), 11 bricks (top left tile contains 1 brick, top right tile contains 5 bricks, bottom left tile contains 2 bricks, and the bottom right tile contains 3 bricks) and 4 rectangular slices.

[0114] Разбиение на тайлы, кирпичи и прямоугольные слайсы задают в наборе параметров изображения (PPS). На фиг. 6 показан синтаксис указания разбиения на тайлы и кирпичи, которое выполняют в два этапа: на первом этапе формируют сетку тайлов (т.е. ширины столбцов тайлов и высоты строк тайлов), а затем указанные тайлы дополнительно разбивают на кирпичи.[0114] Tiling, bricking, and rectangular slicing is specified in a Picture Parameter Set (PPS). In FIG. 6 shows the syntax for specifying tiling and bricking, which is performed in two stages: at the first stage, a grid of tiles is formed (i.e., the width of the columns of tiles and the height of the rows of tiles), and then these tiles are further broken into bricks.

[0115] Существуют два режима задания сетки тайлов: равномерный (указывается с помощью синтаксического элемента uniform_tile_spacing_flag, равного 1) и явный. При равномерном шаге тайлов они имеют одинаковую ширину, за возможным исключением самого правого столбца тайлов, и равную высоту, за возможным исключением самой нижней строки тайлов. Пря явно заданном шаге тайлов, ширины и высоты столбцов и строк тайлов (соответственно) (в блоках CTU) указывают явно, за исключением самого правого столбца и самой нижней строки (соответственно).[0115] There are two modes for specifying a grid of tiles: uniform (indicated using the syntax element uniform_tile_spacing_flag equal to 1) and explicit. With uniform tile spacing, they have the same width, with the possible exception of the rightmost column of tiles, and the same height, with the possible exception of the bottommost row of tiles. For an explicit tile spacing, the widths and heights of columns and rows of tiles (respectively) (in CTUs) are specified explicitly, with the exception of the rightmost column and the bottommost row (respectively).

[0116] Аналогично указанию сетки тайлов, существуют два режима указания, каким образом тайл разбивают на кирпичи, т.е. для каждого тайла может быть указан либо равномерный шаг кирпичей, либо явно заданный шаг. Сигнализация аналогична строкам тайлов.[0116] Similar to specifying a grid of tiles, there are two modes of specifying how a tile is broken into bricks, i. for each tile, either a uniform brick spacing or an explicitly specified brick spacing can be specified. Signaling is similar to tile lines.

[0117] Когда используют прямоугольные слайсы, то для каждого слайса, с помощью синтаксической структуры, включающей и следующей за синтаксическим элементом num_slices_in_pic_minus1, указывают следующее:[0117] When using rectangular slices, then for each slice, using a syntax structure including and following the syntax element num_slices_in_pic_minus1, indicate the following:

- порядковый номер верхнего левого кирпича (за исключением первого слайса, для которого порядковый номер принимают равным 0).- serial number of the upper left brick (except for the first slice, for which the serial number is taken equal to 0).

- Разность порядковых номеров нижнего правого кирпича слайса и верхнего левого кирпича.- Difference of serial numbers of the lower right brick of the slice and the upper left brick.

[0118] Семантика синтаксических элементов, показанных на фиг. 6, определена в версии 5 проекта VVC следующим образом:[0118] The semantics of the syntax elements shown in FIG. 6 is defined in version 5 of the VVC project as follows:

[0119] Флаг single_tile_in_pic_flag, равный 1, определяет, что в каждом изображении, ссылающемся на данный PPS, имеется только один тайл. Флаг single_tile_in_pic_flag, равный 0, определяет, что в каждом изображении, ссылающемся на данный PPS, присутствует более одного тайла. Примечание: в отсутствие дополнительного разбиения на кирпичи внутри тайла, весь тайл называют кирпичом. Когда изображения содержит только единственный тайл, без разбиения на кирпичи, его считают одним кирпичом. Для совместимости битовых потоков необходимо, чтобы значение single_tile_in_pic_flag было одинаковым для всех PPS, активированных внутри CVS.[0119] The flag single_tile_in_pic_flag equal to 1 specifies that there is only one tile in each image referring to this PPS. The single_tile_in_pic_flag flag, equal to 0, specifies that there is more than one tile in each image that refers to this PPS. Note: In the absence of additional bricking within a tile, the entire tile is referred to as a brick. When an image contains only a single tile, with no bricking, it is considered a single brick. Bitstream compatibility requires that the value of single_tile_in_pic_flag be the same for all PPSs enabled within CVS.

[0120] Флаг uniform_tile_spacing_flag, равный 1, определяет, что границы столбцов тайлов, а также границы строк тайлов, распределены равномерно по изображению. Их сигнализируют с помощью синтаксических элементов tile_cols_width_minus1 и tile_rows_height_ minus1. Флаг uniform_tile_spacing_flag, равный 0, определяет, что границы столбцов тайлов, а также границы строк тайлов, не обязательно распределены равномерно по изображению. Их сигнализируют с помощью синтаксических элементов num_tile_columns_minus1 и num_tile_rows_minus1, а также списка пар синтаксических элементов tile_column_width_minus1[i] и tile_row_height_minus1[i]. В случае его отсутствия, значение флага uniform_tile_spacing_flag принимают равным 1.[0120] The uniform_tile_spacing_flag flag of 1 specifies that the tile column boundaries, as well as the tile row boundaries, are evenly spaced across the image. They are signaled using the tile_cols_width_minus1 and tile_rows_height_minus1 syntax elements. The uniform_tile_spacing_flag of 0 specifies that tile column boundaries, as well as tile row boundaries, are not necessarily evenly spaced across the image. They are signaled using the num_tile_columns_minus1 and num_tile_rows_minus1 syntax elements, as well as the list of tile_column_width_minus1[i] and tile_row_height_minus1[i] syntax element pairs. If it is absent, the value of the uniform_tile_spacing_flag flag is set to 1.

[0121] Значение tile_cols_width_minus1 плюс 1 определяет ширину столбцов тайлов, за исключением самого правого столбца тайлов в изображении, измеряемую в СТВ, когда флаг uniform_tile_spacing_flag равен 1. Значение tile_cols_width_minus1 должно лежать в диапазоне от 0 до PicWidthlnCtbsY - 1 включительно. В случае его отсутствия значение tile_cols_width_minus1 принимают равным PicWidthlnCtbsY - 1.[0121] The value of tile_cols_width_minus1 plus 1 specifies the width of the tile columns, excluding the rightmost column of tiles in the image, measured in CTB when the uniform_tile_spacing_flag flag is 1. The value of tile_cols_width_minus1 must be in the range 0 to PicWidthlnCtbsY - 1 inclusive. If it is absent, the value of tile_cols_width_minus1 is taken equal to PicWidthlnCtbsY - 1.

[0122] Значение tile_rows_height_minus1 плюс 1 определяет высоту строк тайлов, за исключением самой нижней строки тайлов в изображении, измеряемую в СТВ, когда флаг uniform_tile_spacing_flag равен 1. Значение tile_rows_height_minus1 должно лежать в диапазоне от 0 до PicHeightlnCtbsY 1 включительно. В случае его отсутствия значение tile rows height minus 1 принимают равным PicHeightlnCtbsY - 1.[0122] The value of tile_rows_height_minus1 plus 1 specifies the height of the rows of tiles, excluding the lowest row of tiles in the image, measured in CTB when the uniform_tile_spacing_flag flag is 1. The value of tile_rows_height_minus1 must be in the range 0 to PicHeightlnCtbsY 1 inclusive. If it is absent, the value of tile rows height minus 1 is taken equal to PicHeightlnCtbsY - 1.

[0123] Значение num_tile_columns_minus1 плюс 1 определяет количество столбцов тайлов, на которые разбито изображение, когда флаг uniform_tile_spacing_flag равен 0. Значение num_tile_columns_minus1 должно лежать в диапазоне от 0 до PicWidthlnCtbsY - 1 включительно. Если флаг single_tile_in_pic_flag равен 1, значение num_tile_columns_minus1 принимают равным 0. В противном случае, когда флаг uniform_tile_spacing_flag равен 1, значение num_tile_columns_minus1 принимают равным заданному в процедуре сканирования растра СТВ, сканирования тайлов и сканирования кирпичей.[0123] The value of num_tile_columns_minus1 plus 1 determines the number of tile columns into which the image is broken when the uniform_tile_spacing_flag flag is 0. The value of num_tile_columns_minus1 must be in the range from 0 to PicWidthlnCtbsY - 1 inclusive. If single_tile_in_pic_flag is 1, num_tile_columns_minus1 is set to 0. Otherwise, when uniform_tile_spacing_flag is 1, num_tile_columns_minus1 is set to the value specified in the CTB raster scan, tile scan, and brick scan procedure.

[0124] Значение num_tile_columns_minus1 плюс 1 определяет количество строк тайлов, на которое разбито изображение, когда флаг uniform_tile_spacing_flag равен 0. Значение numtilerowsminus 1 должно лежать в диапазоне от 0 до PicHeightlnCtbsY - 1 включительно. Если флаг single_tile_in_pic_flag равен 1, значение num_tile_columns_minus1 принимают равным 0. В противном случае, когда флаг uniform_tile_spacing_flag равен 1, значение numtilerowsminus 1 принимают равным заданному в процедуре сканирования растра СТВ, сканирования тайлов и сканирования кирпичей. Переменную NumTilesInPic задают равной (num tile columns minus 1+1) * (num_tile_columns_minus1+1). Когда флаг single_tile_in_pic_flag равен 0, NumTilesInPic должно быть больше 1.[0124] The value num_tile_columns_minus1 plus 1 determines the number of tile rows into which the image is split when the uniform_tile_spacing_flag flag is 0. The value numtilerowsminus 1 must be in the range 0 to PicHeightlnCtbsY - 1 inclusive. If single_tile_in_pic_flag is 1, num_tile_columns_minus1 is set to 0. Otherwise, when uniform_tile_spacing_flag is 1, numtilerowsminus 1 is set to the value specified in the CTB raster scan, tile scan, and brick scan procedure. The NumTilesInPic variable is set to (num tile columns minus 1+1) * (num_tile_columns_minus1+1). When single_tile_in_pic_flag is 0, NumTilesInPic must be greater than 1.

[0125] Значение tile column width minus1[i] плюс 1 определяет ширину i-го столбца тайлов, измеряемую в СТВ.[0125] The value of tile column width minus1[i] plus 1 specifies the width of the i-th tile column, measured in CTB.

[0126] Значение tile_row_height_minus1[i] плюс 1 определяет высоту i-й строки тайлов, измеряемую в СТВ.[0126] The value of tile_row_height_minus1[i] plus 1 determines the height of the i-th row of tiles, measured in CTB.

[0127] Флаг brick_splitting_present_flag, равный 1, определяет, что один или более тайлов изображений, ссылающих на этот PPS, могут быть разбиты на два или более кирпича. Флаг brick_splitting_present_flag, равный 0, определяет, что ни один из тайлов изображений, ссылающих на этот PPS, не могут быть разбиты на два или более кирпича.[0127] The flag brick_splitting_present_flag equal to 1 specifies that one or more image tiles referring to this PPS can be split into two or more bricks. The brick_splitting_present_flag flag of 0 specifies that none of the image tiles referencing this PPS may be split into two or more bricks.

[0128] Флаг brick_split_flag[i], равный 1, определяет, что i-й тайл разбит на два или более кирпича. Флаг brick_split_flag[i], равный 0, определяет, что i-й тайл не разбит на два или более кирпича. В случае его отсутствия значение brick_split_flag[i] принимают равным 0.[0128] The flag brick_split_flag[i], equal to 1, specifies that the i-th tile is split into two or more bricks. The brick_split_flag[i] flag equal to 0 specifies that the i-th tile is not split into two or more bricks. In case of its absence, the brick_split_flag[i] value is taken equal to 0.

[0129] Флаг uniform_brick_spacing_flag[i], равный 1, определяет, что горизонтальные границы кирпичей распределены равномерно по i-му тайлу и сигнализируются с использованием синтаксического элемента brickheightminus1[i]. Флаг uniform_brick_spacing_flag[i], равный 0, определяет, что горизонтальные границы кирпичей не обязательно равномерно распределены по i-му тайлу и сигнализируются с использованием синтаксического элемента numbrickrowsminus 1 [i] и списка синтаксических элементов brick_row_height_minus1[i][j]. В случае его отсутствия значение флага uniform_brick_spacing_flag[i] принимают равным 1.[0129] A uniform_brick_spacing_flag[i] flag of 1 specifies that the horizontal boundaries of bricks are evenly spaced across the i-th tile and signaled using the brickheightminus1[i] syntax element. The uniform_brick_spacing_flag[i] flag of 0 specifies that horizontal brick boundaries are not necessarily evenly spaced over the i-th tile and are signaled using the numbrickrowsminus 1 [i] syntax element and the brick_row_height_minus1[i][j] syntax element list. If it is absent, the value of the uniform_brick_spacing_flag[i] flag is taken equal to 1.

[0130] Значение brick_height_minus 1 [i] плюс 1 определяет высоту строк кирпичей, за исключением нижнего кирпича в i-м тайле, измеряемую в СТВ, когда флаг uniform_brick_spacing_flag[i] равен 1. В случае его наличия значение brick_height_minus 1 должно лежать в диапазоне от 0 до RowHeight[i] - 2 включительно. В случае его отсутствия значение brick_height_minus1[i] принимают равным RowHeight[i] - 1.[0130] The value brick_height_minus 1 [i] plus 1 determines the height of the rows of bricks, excluding the bottom brick in the i-th tile, measured in CTB, when the flag uniform_brick_spacing_flag[i] is 1. If present, the value brick_height_minus 1 must lie in the range from 0 to RowHeight[i] - 2 inclusive. If it is absent, the brick_height_minus1[i] value is taken equal to RowHeight[i] - 1.

[0131] Значение num_brick_rows_minus1 [i] плюс 1 определяет количество кирпичей, на которые разбит i-й тайл, когда флаг uniform_brick_spacing_flag[i] равен 0. В случае его наличия значение num_brick_rows_minus1[i] должно лежать в диапазоне от 1 до RowHeight[i] - 1 включительно. Если флаг brick_split_flag[i] равен 0, значение num_brick_rows_minus1 [i] принимают равным 0. В противном случае, когда флаг uniform_brick_spacing_flag[i] равен 1, значение num_brick_rows_minus1[i] принимают равным заданному в процедуре сканирования растра СТВ, сканирования тайлов и сканирования кирпичей.[0131] The value num_brick_rows_minus1 [i] plus 1 determines the number of bricks into which the i-th tile is divided when the flag uniform_brick_spacing_flag[i] is 0. If present, the value num_brick_rows_minus1[i] must be in the range from 1 to RowHeight[i ] - 1 inclusive. If brick_split_flag[i] is 0, then num_brick_rows_minus1[i] is set to 0. Otherwise, when uniform_brick_spacing_flag[i] is 1, num_brick_rows_minus1[i] is set to the value specified in CTB raster scan, tile scan, and brick scan. .

[0132] Значение brick_row_height_minus1[i][j] плюс 1 определяет высоту j-го кирпича в i-м тайле, измеряемую в СТВ, когда флаг uniform_tile_spacing_flag равен 0.[0132] The value of brick_row_height_minus1[i][j] plus 1 specifies the height of the j-th brick in the i-th tile, measured in CTB, when the uniform_tile_spacing_flag is 0.

[0133] Вычисляют перечисленные ниже переменные, и когда флаг uniform_tile_spacing_flag равен 1, значения num_tile_columns_minus1 и num_tile_columns_minus1 получают логически, и для каждого i в диапазоне от 0 до NumTilesInPic - 1 включительно, когда флаг uniform_brick_spacing_flag[i] равен 1, значение num_brick_rows_minus1 [i] получают логически с помощью вызова процедуры сканирования растра СТВ, сканирования тайлов и сканирования кирпичей:[0133] The following variables are calculated, and when the uniform_tile_spacing_flag flag is equal to 1, the values num_tile_columns_minus1 and num_tile_columns_minus1 are obtained logically, and for each i in the range from 0 to NumTilesInPic - 1 inclusive, when the flag uniform_brick_spacing_flag[i] is equal to 1, the value num_brick_rows_minus1 [i] are obtained logically by calling the CTB raster scan procedure, tile scan and brick scan:

- список RowHeight[j] для j в диапазоне от 0 до num_tile_columns_minus1 включительно, определяет высоту j-й строки тайлов, измеряемую в СТВ,- list RowHeight[j] for j in the range from 0 to num_tile_columns_minus1 inclusive, determines the height of the j-th row of tiles, measured in CTB,

- список CtbAddrRsToBs[ctbAddrRs] для ctbAddrRs в диапазоне от 0 до PicSizelnCtbsY - 1 включительно, определяет преобразование из адреса СТВ при сканировании растра СТВ изображения в адрес СТВ при сканировании кирпичей,- list CtbAddrRsToBs[ctbAddrRs] for ctbAddrRs in the range from 0 to PicSizelnCtbsY - 1 inclusive, defines the conversion from the CTB address when scanning a CTB image raster to the CTB address when scanning bricks,

- список CtbAddrBsToRs [ctbAddrBs] для ctbAddrBs в диапазоне от 0 до PicSizelnCtbsY - 1 включительно, определяет преобразование из адреса СТВ при сканировании кирпичей в адрес СТВ при сканировании растра СТВ изобаржения,- list CtbAddrBsToRs [ctbAddrBs] for ctbAddrBs in the range from 0 to PicSizelnCtbsY - 1 inclusive, defines the conversion from the CTB address when scanning bricks to the CTB address when scanning the CTB image raster,

- список BrickId[ctbAddrBs] для ctbAddrBs в диапазоне от 0 до PicSizelnCtbsY - 1 включительно, определяет преобразование из адреса СТВ при сканировании кирпичей в идентификатор (ID) кирпича.- list BrickId[ctbAddrBs] for ctbAddrBs in the range from 0 to PicSizelnCtbsY - 1 inclusive, determines the conversion from the CTB address when scanning bricks to the brick identifier (ID).

- список NumCtusInBrick[brickIdx] для brickIdx в диапазоне от 0 до NumBricksInPic - 1 включительно, определяет преобразование из порядкового номера кирпича в количество блоков CTU в этом кирпиче,- the NumCtusInBrick[brickIdx] list for brickIdx in the range from 0 to NumBricksInPic - 1 inclusive, defines the conversion from the brick serial number to the number of CTUs in this brick,

- список FirstCtbAddrBs [brickIdx] для brickIdx в диапазоне от 0 до NumBricksInPic - 1 включительно, определяет преобразование из идентификатора ID кирпича в адрес СТВ при сканировании кирпичей для первого СТВ внутри кирпича.- list FirstCtbAddrBs [brickIdx] for brickIdx in the range from 0 to NumBricksInPic - 1 inclusive, determines the conversion from brick ID to CTB address when scanning bricks for the first CTB inside the brick.

[0134] Флаг single_brick_per_slice_flag, равный 1, определяет, что каждый слайс, ссылающийся на данный PPS, содержит один кирпич. Флаг single_brickjer_slice_flag, равный 0, определяет, что каждый слайс, ссылающийся на данный PPS, может содержать более одного кирпича. В случае его отсутствия значение single_brick_per_slice_flag принимают равным 1.[0134] The flag single_brick_per_slice_flag equal to 1 specifies that each slice referring to this PPS contains one brick. The single_brickjer_slice_flag flag of 0 specifies that each slice referring to this PPS may contain more than one brick. If it is absent, the value of single_brick_per_slice_flag is taken equal to 1.

[0135] Флаг rect_slice_flag, равный 0, определяет, что кирпичи во всех слайсах расположены в порядке сканирования растра, и информация о слайсах не сигнализируется в PPS. Флаг rect_slice_flag, равный 1, определяет, что кирпичи во всех слайсах покрывают прямоугольную область изображения, и информация о слайсах сигнализируется в PPS. Когда флаг single_brick_per_slice_flag равен 1, флаг rect_slice_flag принимают равным 1.[0135] A rect_slice_flag flag of 0 specifies that the bricks in all slices are arranged in raster scan order, and slice information is not signaled in the PPS. The rect_slice_flag flag of 1 specifies that the bricks in all slices cover a rectangular area of the image, and the slice information is signaled in the PPS. When the single_brick_per_slice_flag is 1, the rect_slice_flag is set to 1.

[0136] Количество num_slices_in_pic_minus1 плюс 1 определяет количество слайсов в каждом изображении, ссылающемся на данный PPS. Значение num_slices_in_pic_minus 1 должно лежать в диапазоне от 0 до NumBricksInPic 1 включительно. Когда это значение отсутствует, и флаг single_brick_per_slice_flag равен 1, значение num_slices_in_pic_minus1 принимают равным NumBricksInPic - 1.[0136] The number num_slices_in_pic_minus1 plus 1 determines the number of slices in each image referring to a given PPS. The value num_slices_in_pic_minus 1 must be between 0 and NumBricksInPic 1 inclusive. When this value is absent and single_brick_per_slice_flag is 1, the value of num_slices_in_pic_minus1 is set to NumBricksInPic - 1.

[0137] Значение top_left_brick_idx[i] определяет порядковый номер кирпича, расположенного в левом верхнем углу i-го слайса. Значение top_left_brick_idx[i] не должно быть равно значению top_left_brick_idx[j] для любых i не равных j. Когда оно отсутствует, значение top_left_brick_idx[i] принимают равным i. Длина синтаксического элемента top_left_brick_idx[i] равна Ceil(Log2(NumBricksInPic) бит.[0137] The value of top_left_brick_idx[i] determines the serial number of the brick located in the upper left corner of the i-th slice. top_left_brick_idx[i] must not be equal to top_left_brick_idx[j] for any i that is not equal to j. When absent, top_left_brick_idx[i] is set to i. The length of the top_left_brick_idx[i] syntax element is Ceil(Log2(NumBricksInPic) bits.

[0138] Значение bottom_right_brick_idx_delta[i] определяет разность между порядковым номером кирпича, расположенного в нижнем правом углу i-го слайса, и top_left_brick_idx[i]. Когда флаг single_brick_per_slice_flag равен 1, значение bottom_right_brick_idx_delta[i] принимают равным 0. Длина синтаксического элемента bottom_right_brick_idx_delta[i] равна Ceil(Log2(NumBricksInPic - top_left_brick_idx[i])) бит.[0138] The bottom_right_brick_idx_delta[i] value defines the difference between the ordinal number of the brick located in the lower right corner of the i-th slice and top_left_brick_idx[i]. When the single_brick_per_slice_flag is 1, the value of bottom_right_brick_idx_delta[i] is set to 0. The length of the bottom_right_brick_idx_delta[i] syntax element is Ceil(Log2(NumBricksInPic - top_left_brick_idx[i])) bits.

[0139] Для совместимости битового потока предъявляется требование о том, что слайс должен включать либо набор полных тайлов, либо последовательность полных кирпичей одного тайла. Переменные NumBricksInSlice[i] и BricksToSliceMap[j], которые определяют количество кирпичей в i-м слайсе, а также соответствие кирпичей слайсам, получают следующим образом:[0139] For bitstream compatibility, a requirement is made that a slice must include either a set of full tiles or a sequence of full bricks of the same tile. The variables NumBricksInSlice[i] and BricksToSliceMap[j], which determine the number of bricks in the i-th slice, as well as the correspondence of bricks to slices, are obtained as follows:

Figure 00000002
Figure 00000002

[0140] Итак, для сигнализации разбиения на тайлы и кирпичи создана достаточно сложная синтаксическая структура. Она является во многих аспектах неоптимальной, например, в отношении количества синтаксических элементов, строк синтаксиса, количества режимов работы (т.е. отдельные равномерный режим и явный режим и для тайлов, и для кирпичей, а также отдельное указание границ тайлов и кирпичей), а также в отношении количества битов в сигнализации.[0140] So, a fairly complex syntactic structure has been created to signal the division into tiles and bricks. It is suboptimal in many aspects, for example, in terms of the number of syntax elements, syntax lines, the number of modes of operation (i.e. separate uniform mode and explicit mode for both tiles and bricks, as well as a separate specification of the boundaries of tiles and bricks), and also with respect to the number of bits in the signaling.

[0141] Версия 6 проекта VVC поддерживает субизображения. Субизображение - это прямоугольная область из одного или более слайсов внутри изображения, при этом упомянутые один или более слайсов должны быть полными. Соответственно, субизображение состоит из одного или более слайсов, которые совместно покрывают прямоугольную область изображения. Может предъявляться требование, чтобы слайсы субизображения были прямоугольными. Разбиение изображения на субизображения может указываться в SPS и/или декодироваться из него. Могут указываться (например, кодером) или декодироваться (например, декодером), или могут быть получены логически (например, кодером и/или декодером) одно или более из описанных ниже свойств субизображений, совместно, или для каждого субизображения в отдельности: i) должно ли субизображение обрабатываться как изображение в процедуре декодирования; в некоторых случаях это свойство исключает операции внутриконтурной фильтрации, - это может отдельно указываться/декодироваться/быть получено логически; ii) должны ли операции внутриконтурной фильтрации выполняться с пересечением границ субизображения или нет.[0141] Version 6 of the VVC project supports sub-images. A sub-image is a rectangular area of one or more slices within an image, said one or more slices must be complete. Accordingly, a sub-image consists of one or more slices that collectively cover a rectangular area of the image. The sub-image slices may be required to be rectangular. The splitting of an image into sub-images may be indicated in and/or decoded from the SPS. One or more of the following sub-image properties may be indicated (eg by an encoder) or decoded (eg by a decoder), or may be logically obtained (eg by an encoder and/or decoder), either together or for each sub-image individually: i) must whether the sub-image is processed as an image in the decoding procedure; in some cases this property excludes in-loop filtering operations - this can be separately specified/decoded/be obtained logically; ii) whether the in-loop filtering operations should be performed crossing sub-image boundaries or not.

[0142] Ниже будут представлены улучшенные способы сигнализации разбиения на тайлы и кирпичи.[0142] Improved methods for signaling tiling and bricking will be presented below.

[0143] Способ кодирования в соответствии с первым аспектом настоящего изобретения, который показан на фиг. 7, включает: кодирование (700) битового потока, включающего указание столбцов тайлов и указание высот кирпичей для одного или более столбцов тайлов одновременно, или кодирование, внутри битового потока или вместе с ним, указания столбцов тайлов и указания высот кирпичей для одного или более столбцов тайлов одновременно; логическое определение (702), в случае обнаружения строк кирпичей, находящихся на одной линии на протяжении изображения, потенциальных строк тайлов; логическое определение (704) или указание, является ли граница потенциальной строки тайлов границей строки тайлов; и кодирование (706) одного или более изображений в битовый поток с использованием указанных столбцов тайлов, указанных или логически полученных строк тайлов и указанных высот кирпичей, при этом одно или более изображений разбивают на сетку тайлов, следуя указанным столбцам тайлов и указанным или логически полученным строкам тайлов, при этом тайл в сетке тайлов включает целое число блоков кодового дерева и разбит на один или более кирпичей, и кирпич содержит целое число строк блоков кодового дерева внутри тайла.[0143] The encoding method according to the first aspect of the present invention, which is shown in FIG. 7 includes: encoding (700) a bitstream including tile column indication and brick height indication for one or more tile columns at the same time, or encoding, within or with the bitstream, tile column indication and brick height indication for one or more columns tiles at the same time; logical determination (702), in case of detection of rows of bricks that are on the same line throughout the image, potential rows of tiles; a boolean determination (704) or an indication of whether a potential tile row boundary is a tile row boundary; and encoding (706) one or more images into a bitstream using the specified tile columns, the specified or logically derived tile rows, and the specified brick heights, wherein the one or more images are split into a grid of tiles following the specified tile columns and the specified or logically derived rows tiles, wherein a tile in the grid of tiles includes an integer number of code tree blocks and is broken into one or more bricks, and a brick contains an integer number of lines of code tree blocks within the tile.

[0144] Способ декодирования в соответствии с первым аспектом настоящего изобретения включает декодирование, из битового потока или вместе с ним, указания столбцов тайлов и указания высот кирпичей для одного или более столбцов тайлов одновременно; логическое определение, в случае обнаружения строк кирпичей, находящихся на одной линии на протяжении изображения, потенциальных строк тайлов; логическое определение или декодирование, является ли граница потенциальной строки тайлов границей строки тайлов; и декодирование одного или более изображений из битового потока с использованием указанных столбцов тайлов, указанных или логически полученных строк тайлов и указанных высот кирпичей, при этом одно или более изображений разбивают на сетку тайлов, следуя указанным столбцам тайлов и указанным или логически полученным строкам тайлов, при этом тайл в сетке тайлов включает целое число блоков кодового дерева и разбит на один или более кирпичей, и при этом кирпич содержит целое число строк блоков кодового дерева внутри тайла.[0144] The decoding method according to the first aspect of the present invention includes decoding, from or with a bitstream, specifying tile columns and specifying brick heights for one or more tile columns simultaneously; logical determination, in case of detection of rows of bricks that are on the same line throughout the image, potential rows of tiles; logically determining or decoding whether a potential tile row boundary is a tile row boundary; and decoding the one or more images from the bitstream using the specified tile columns, the specified or inferred tile rows, and the specified brick heights, wherein the one or more images are split into a grid of tiles following the specified tile columns and the specified or inferred tile rows, wherein In this case, a tile in the grid of tiles includes an integer number of code tree blocks and is divided into one or more bricks, and the brick contains an integer number of lines of code tree blocks within the tile.

[0145] То есть, столбцы тайлов и высоты кирпичей для каждого столбца тайлов указывает кодер и/или декодирует декодер. Потенциальные границы строк тайлов логически получают как границы кирпичей, расположенных на одной (горизонтальной) линии на протяжении изображения. То есть, для потенциальной границы строки тайлов может быть сделано заключение, что эта потенциальная граница строки тайлов является действительной границей строки тайлов. Логическое заключение о том, что потенциальная граница строки тайлов является действительной границей строки тайлов, может быть основано на заключениях, выполненных на основе другой информации, доступной в синтаксической структуре, или на основе отсутствия некоторой информации в синтаксической структуре, например, на основе отсутствия некоторого флага.[0145] That is, the tile columns and brick heights for each tile column are specified by the encoder and/or decoded by the decoder. Potential tile row boundaries are logically obtained as the boundaries of bricks located on the same (horizontal) line throughout the image. That is, for a potential tile-row boundary, it can be concluded that this potential tile-row boundary is a valid tile-row boundary. The logical conclusion that a potential tile-row boundary is an actual tile-row boundary can be based on inferences drawn from other information available in the syntax structure, or based on the absence of some information in the syntax structure, such as the absence of some flag. .

[0146] Альтернативно, является ли потенциальная граница строки тайлов реальной границей строки тайлов, может быть указано кодером и/или декодировано декодером. Такое указание может быть основано, например, на одном или более флагов, присутствующих в синтаксической структуре.[0146] Alternatively, whether a potential tilestring boundary is a real tilestring boundary may be indicated by the encoder and/or decoded by the decoder. Such an indication may be based, for example, on one or more flags present in the syntax structure.

[0147] Следовательно, путем указания только столбцов тайлов и высот кирпичей для каждого столбца тайлов, а также логического определения потенциальных строк тайлов, разбиение может быть сигнализировано без сигнализации высот строк тайлов. В результате может быть повышена эффективность кодирования и снижен битрейт, необходимый для упомянутой сигнализации.[0147] Therefore, by specifying only tile columns and brick heights for each tile column, as well as logically determining potential tile rows, splitting can be signaled without signaling tile row heights. As a result, the coding efficiency can be improved and the bit rate required for said signaling can be reduced.

[0148] Ниже рассмотрены несколько примеров осуществления для первого аспекта настоящего изобретения, т.е. синтаксис и семантика для указания столбцов тайлов и высоты кирпичей для каждого столбца тайлов, без высот строк тайлов. Варианты осуществления настоящего изобретения одинаково применимы как для кодирования, формирующего фрагмент битового потока, соответствующего предложенным синтаксису и семантике, так и для декодирования, декодирующего фрагмент битового потока в соответствии с предложенными синтаксисом и семантикой.[0148] Several exemplary embodiments for the first aspect of the present invention are discussed below, i.e. syntax and semantics for specifying tile columns and brick heights for each tile column, without tile row heights. Embodiments of the present invention are equally applicable to both encoding generating a bitstream fragment according to the proposed syntax and semantics and decoding decoding a bitstream fragment according to the proposed syntax and semantics.

[0149] Пример 1 синтаксиса и семантики:[0149] Syntax and semantics example 1:

Figure 00000003
Figure 00000003

[0150] Флаг uniform_tile_col_spacing_flag, равный 1, определяет, что границы столбцов тайлов распределены равномерно по изображению и сигнализируются с помощью синтаксического элемента tile_cols_width_minus1. Флаг uniform_tile_spacing_flag, равный 0, определяет, что границы столбцов тайлов не обязательно распределены равномерно по изображению и сигнализируются с помощью синтаксического элемента num_tile_columns_minus1, а также списка синтаксических элементов tile_column_width_minus1[i]. В случае его отсутствия значение uniform_tile_col_spacing_flag принимают равным 1.[0150] The uniform_tile_col_spacing_flag flag of 1 specifies that the tile column boundaries are evenly spaced across the image and is signaled using the tile_cols_width_minus1 syntax element. The uniform_tile_spacing_flag of 0 specifies that tile column boundaries are not necessarily evenly spaced across the image and are signaled by the num_tile_columns_minus1 syntax element as well as the tile_column_width_minus1[i] syntax element list. If it is absent, the value of uniform_tile_col_spacing_flag is taken equal to 1.

[0151] Семантика tile_cols_width_minus1, num_tile_columns_minus1 и tile_column_width_minus1[i] определена идентично семантике синтаксических элементов с теми же именами в версии 5 проекта VVC.[0151] The semantics of tile_cols_width_minus1, num_tile_columns_minus1 and tile_column_width_minus1[i] are defined identically to the semantics of the syntax elements with the same names in version 5 of the VVC project.

[0152] Если флаг uniform_tile_col_spacing_flag равен 1, NumTileColsInPic назначают равным PicWidthlnCtbsY / (tile_cols_width_minus1+1)+PicWidthlnCtbsY % (tile_cols_width_minus1+1). В противном случае NumTileColsInPic назначают равным num_tile_columns_minus 1+1.[0152] If the flag uniform_tile_col_spacing_flag is 1, NumTileColsInPic is set equal to PicWidthlnCtbsY / (tile_cols_width_minus1+1)+PicWidthlnCtbsY % (tile_cols_width_minus1+1). Otherwise, NumTileColsInPic is set to num_tile_columns_minus 1+1.

[0153] Флаг uniform_brick_spacing_flag[i], равный 1, определяет, что горизонтальные границы кирпичей распределены равномерно по i-му столбцу тайлов и сигнализируются с использованием синтаксического элемента brick_height_minus1[i]. Флаг uniform_brick_spacing_flag[i], равный 0, определяет, что горизонтальные границы кирпичей не обязательно равномерно распределены по i-му столбцу тайлов и сигнализируются с использованием синтаксического элемента num_brick_rows_minus1 [i] и списка синтаксических элементов brick_row_height_minus1[i] [j]. В случае его отсутствия значение флага uniform_brick_spacing_flag[i] принимают равным 1.[0153] A uniform_brick_spacing_flag[i] flag of 1 specifies that the horizontal brick boundaries are evenly spaced across the i-th tile column and signaled using the brick_height_minus1[i] syntax element. The uniform_brick_spacing_flag[i] flag of 0 specifies that horizontal brick boundaries are not necessarily evenly spaced across the i-th tile column and are signaled using the num_brick_rows_minus1 [i] syntax element and the brick_row_height_minus1[i] [j] syntax element list. If it is absent, the value of the uniform_brick_spacing_flag[i] flag is taken equal to 1.

[0154] Значение brick_height_minus1 [i] плюс 1 определяет высоту строк кирпичей, за исключением нижнего кирпича в i-м столбце тайлов, измеряемую в СТВ, когда флаг uniform_brick_spacing_flag[i] равен 1.[0154] The value of brick_height_minus1[i] plus 1 determines the height of the rows of bricks, excluding the bottom brick in the i-th column of tiles, measured in CTB when the flag uniform_brick_spacing_flag[i] is 1.

[0155] Значение num_brick_rows_minus1 [i] плюс 1 определяет количество кирпичей, на которые разбит i-й столбец тайлов, когда флаг uniform_brick_spacing_flag[i] равен 0.[0155] The value num_brick_rows_minus1 [i] plus 1 determines the number of bricks into which the i-th column of tiles is split when the flag uniform_brick_spacing_flag[i] is 0.

[0156] Значение brick_row_height_minus1[i][j] плюс 1 определяет высоту j-го кирпича в i-м столбце тайлов, измеряемую в СТВ, когда флаг uniform_tile_spacing_flag равен 0.[0156] The value of brick_row_height_minus1[i][j] plus 1 specifies the height of the j-th brick in the i-th tile column, measured in CTB, when the uniform_tile_spacing_flag is 0.

[0157] Пример 2 синтаксиса и семантики:[0157] Syntax and semantics example 2:

[0158] Пример 2 аналогичен примеру 1, однако дополнительно кодер указывает и/или декодер декодирует, является ли разбиение текущего столбца тайла на кирпичи идентичным предыдущему столбцу тайлов.[0158] Example 2 is similar to example 1, however, in addition, the encoder indicates and/or the decoder decodes whether the current tile column's bricking is identical to the previous tile column.

Figure 00000004
Figure 00000004

[0159] Семантика синтаксических элементов идентична примеру 1 за исключением введения описанной ниже семантики для copy_previous_col_flag[i]:[0159] The semantics of the syntax elements are identical to Example 1 except for the introduction of the following semantics for copy_previous_col_flag[i]:

Флаг copy_previous_col_flag[i], равный 1, определяет все из нижеперечисленного:The copy_previous_col_flag[i] flag of 1 specifies all of the following:

- Значение uniform_brick_spacing_flag[i] принимают равным uniform_brick_spacing_flag[i-1].- The value of uniform_brick_spacing_flag[i] is taken equal to uniform_brick_spacing_flag[i-1].

- Когда brick_height_minus1[i-1] присутствует, значение brick_height_minus1[i] принимают равным brickheightminus 1 [i-1].- When brick_height_minus1[i-1] is present, brick_height_minus1[i] is set to brickheightminus 1 [i-1].

- Когда num_brick_rows_minus1[i-l] присутствует, значение num_brick_rows_minus1 [i] принимают равным num_brick_rows_minus1[i-1], а значение brick_row_height_minus1[i][j] принимают равным brick_row_height_minus1[i-1][j] для каждого значения] в диапазоне от 0 до num_brick_rows_minus1 [i] - 1 включительно.- When num_brick_rows_minus1[i-l] is present, num_brick_rows_minus1[i] is set to num_brick_rows_minus1[i-1] and brick_row_height_minus1[i][j] is set to brick_row_height_minus1[i-1][j] for each value] in the range of 0 up to num_brick_rows_minus1 [i] - 1 inclusive.

[0160] С другой стороны, проблема неоптимальной синтаксической структуры версии 5 проекта VVC может быть частично решена с помощью подхода, в котором ширины столбцов тайлов, высоты строк тайлов или высоты кирпичей могут указываться кодером и/или декодироваться декодером в заранее заданном порядке сканирования, до тех пор, пока не будет указано или декодировано (соответственно), что оставшиеся столбцы тайлов, строки тайлов или кирпичи (соответственно) имеют равный размер.[0160] On the other hand, the problem of the non-optimal syntactic structure of version 5 of the VVC project can be partially solved with an approach in which tile column widths, tile row heights, or brick heights can be specified by the encoder and/or decoded by the decoder in a predetermined scan order, up to until it is indicated or decoded (respectively) that the remaining tile columns, tile rows, or bricks (respectively) are of equal size.

[0161] Способ кодирования в соответствии с этим вторым аспектом изобретения показан на фиг. 8, при этом способ включает следующие шаги: а) указание (800) количества разделов, подлежащих назначению; b) определение (802) количества блоков, подлежащих назначению в разделы; с) указание (804), является ли количество блоков, подлежащих назначению, назначаемым равномерно в упомянутое количество разделов; и, если это не так, d) указание (806) количества блоков, подлежащих назначению в следующий раздел, и е) повтор (808) шагов с) и d) до тех пор, пока все блоки не будут назначены в разделы.[0161] An encoding method in accordance with this second aspect of the invention is shown in FIG. 8, wherein the method includes the following steps: a) specifying (800) the number of partitions to be assigned; b) determining (802) the number of blocks to be assigned to partitions; c) indicating (804) whether the number of blocks to be assigned is assigned evenly to said number of partitions; and, if not, d) indicating (806) the number of blocks to be assigned to the next partition, and e) repeating (808) steps c) and d) until all blocks have been assigned to partitions.

[0162] Способ декодирования в соответствии со вторым аспектом настоящего изобретения включает следующие шаги: а) декодирование количества разделов, подлежащих назначению; b) определение количества блоков, подлежащих назначению в разделы; с) декодирование, является ли количество блоков, подлежащих назначению, назначаемым равномерно в упомянутое количество разделов; и если это не так, d) декодирование количества блоков, подлежащих назначению в следующий раздел, и е) повтор шагов с) и d) до тех пор, пока все блоки не будут назначены в разделы.[0162] The decoding method according to the second aspect of the present invention includes the following steps: a) decoding the number of partitions to be assigned; b) determining the number of blocks to be assigned to partitions; c) decoding whether the number of blocks to be assigned is evenly assigned to said number of partitions; and if not, d) decoding the number of blocks to be assigned to the next partition, and e) repeating steps c) and d) until all blocks have been assigned to partitions.

[0163] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, количество блоков, подлежащих назначению в разделы, является одним из следующего: ширина изображения в единицах CTU (например, когда разделы представляют собой столбцы тайлов), высота изображения в единицах CTU (например, когда разделы представляют собой строки тайлов, или когда разделы представляют собой строки кирпичей, указанные для одного или более полных столбцов тайлов одновременно), количество строк CTU в тайле (например, когда разделы представляют собой кирпичи тайла).[0163] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, the number of blocks to be assigned to sections is one of the following: image width in CTU units (for example, when sections are columns of tiles), image height in CTU units (for example, when sections are rows of tiles, or when sections are rows of bricks specified for one or more full columns of tiles at the same time), the number of CTU lines in a tile (for example, when sections are bricks of a tile).

[0164] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, упомянутые разделы являются одним или более из следующего: столбцы тайлов, строки тайлов, строки кирпичей.[0164] According to one embodiment of the present invention applicable to encoding and/or decoding, said partitions are one or more of the following: tile columns, tile rows, brick rows.

[0165] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, упомянутые блоки являются прямоугольными блоками отсчетов изображения. Например, блок во втором аспекте настоящего изобретения, проиллюстрированном на фиг. 8, может быть блоком кодового дерева.[0165] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, said blocks are rectangular blocks of image samples. For example, the block in the second aspect of the present invention illustrated in FIG. 8 may be a code tree block.

[0166] Следовательно, при помощи указания количества блоков, подлежащих назначению в разделы в заранее заданном порядке сканирования, могут быть значительно сокращены количество синтаксических элементов и битрейт, необходимые для упомянутой сигнализации, в особенности, когда оставшиеся блоки, еще подлежащие назначению в разделы, назначают в оставшиеся разделы равномерно.[0166] Therefore, by specifying the number of blocks to be assigned to partitions in a predetermined scan order, the number of syntax elements and the bit rate required for said signaling can be significantly reduced, especially when the remaining blocks still to be assigned to partitions are assigned to the remaining sections evenly.

[0167] На фиг. 9 показан пример того, каким образом способ, показанный на фиг. 8, может быть реализован в соответствии с одним из вариантов осуществления настоящего изобретения. Так, сначала указывают (900) количество разделов, например, столбцов тайлов и/или строк тайлов, подлежащих назначению, и определяют (902) количество блоков, NU, например блоков кодового дерева (СТВ), подлежащих назначению в разделы. Для формирования цикла проверки того, что все блоки были назначены в один из разделов, проверяют (904), является ли количество разделов, NP, подлежащих назначению, большим единицы. Если это не так, т.е. NP=1, логически получают, или указывают (910), что все оставшиеся блоки, все еще подлежащие назначению, должны быть назначены в оставшийся раздел.[0167] FIG. 9 shows an example of how the method shown in FIG. 8 may be implemented in accordance with one embodiment of the present invention. Thus, first, the number of partitions, such as columns of tiles and/or rows of tiles, to be assigned is indicated (900), and the number of blocks, NU, such as code tree blocks (CTBs) to be assigned to the partitions, is determined (902). To generate a verification loop that all blocks have been assigned to one of the partitions, it is checked (904) whether the number of partitions, NP, to be assigned is greater than one. If this is not the case, i.e. NP=1 logically obtain or indicate (910) that all remaining blocks still to be assigned should be assigned to the remaining section.

[0168] Однако если NP>1, проверяют (906), делится ли количество блоков, NU, подлежащих назначению, без остатка на количество NP разделов. Если это так, определяют (908), должно ли количество блоков, NU, быть назначено равномерно в оставшиеся разделы. Если это так, логически получают, или указывают (910), что все оставшиеся блоки, все еще подлежащие назначению, NU, должны быть назначены в оставшийся раздел (или разделы). Если найдено, что количество блоков, NU, подлежащих назначению, не делится без остатка на количество NP разделов (906), или определено (908), что количество блоков, NU, не должно быть распределено равномерно в оставшиеся разделы, указывают (912) количество блоков, подлежащих назначению в следующий раздел, в заранее заданном порядке сканирования. Количество блоков, NU, подлежащих назначению, уменьшают (914) на указанное количество блоков, подлежащих назначению в упомянутый следующий раздел, а количество разделов, NP, подлежащих назначению уменьшают на единицу (916). Затем цикл возвращается к проверке, превосходит ли количество разделов, NP, подлежащих назначению, единицу.[0168] However, if NP>1, it is checked (906) whether the number of blocks, NU, to be assigned is divisible without remainder by the number of partitions, NP. If so, it is determined (908) whether the number of blocks, NU, should be assigned evenly to the remaining partitions. If so, logically get or indicate (910) that all remaining blocks still to be assigned, NU, should be assigned to the remaining section (or sections). If it is found that the number of blocks, NU, to be assigned is not evenly divisible by the number of partitions NP (906), or it is determined (908) that the number of blocks, NU, should not be distributed evenly to the remaining partitions, indicate (912) the number blocks to be assigned to the next section, in a predetermined scan order. The number of blocks, NU, to be assigned is reduced (914) by the specified number of blocks to be assigned to said next partition, and the number of partitions, NP, to be assigned is reduced by one (916). The loop then returns to checking if the number of partitions, NP, to be assigned is greater than one.

[0169] Способ, показанный на фиг. 9, может быть реализован аналогично декодированию в соответствии с одним из вариантов осуществления настоящего изобретения, описанным ниже. Сначала из битового потока, или параллельно битовому потому, декодируют количество разделов, например, столбцов тайлов и/или строк тайлов, подлежащих назначению, и определяют количество блоков, NU, например, блоков кодового дерева (СТВ), подлежащих назначению в разделы. Для формирования цикла проверки того, что все блоки были назначены в один из разделов, проверяют, является ли количество разделов, NP, подлежащих назначению, большим единицы. Если это не так, т.е. NP=1, логически получают, или декодируют, из битового потока или вместе с ним, что все оставшиеся блоки, все еще подлежащие назначению, должны быть назначены в оставшийся раздел.[0169] The method shown in FIG. 9 may be implemented similarly to decoding in accordance with one of the embodiments of the present invention described below. First, from the bitstream, or parallel to the bitstream, the number of partitions, such as columns of tiles and/or rows of tiles, to be assigned is decoded, and the number of blocks, NU, such as code tree blocks (CTBs) to be assigned to the partitions, is determined. To form a loop for checking that all blocks have been assigned to one of the partitions, it is checked whether the number of partitions, NP, to be assigned is greater than one. If this is not the case, i.e. NP=1, logically obtain, or decode, from or with the bitstream that all remaining blocks still to be assigned should be assigned to the remaining section.

[0170] Однако если NP>1, проверяют, делится ли количество блоков, NU, подлежащих назначению, без остатка на количество NP разделов. Если это так, декодируют, из битового потока или вместе с ним, должно ли количество блоков, NU, быть назначено равномерно в оставшиеся разделы. Если найдено, что количество блоков, NU, подлежащих назначению, не делится без остатка на количество NP разделов, или если декодировано, из битового потока или вместе с ним, что количество блоков, NU, не должно быть распределено равномерно в оставшиеся разделы, то декодируют, из битового потока или вместе с ним, количество блоков, подлежащих назначению в следующий раздел, в заранее заданном порядке сканирования. Количество блоков, NU, подлежащих назначению, уменьшают на указанное количество блоков, подлежащих назначению в упомянутый следующий раздел, а количество разделов, NP, подлежащих назначению уменьшают на единицу. Затем цикл возвращается к проверке, превосходит ли количество разделов, NP, подлежащих назначению, единицу.[0170] However, if NP>1, it is checked whether the number of blocks, NU, to be assigned is divisible without a remainder by the number NP of partitions. If so, decode, from or along with the bitstream, whether the number of blocks, NU, should be assigned evenly to the remaining partitions. If it is found that the number of blocks, NU, to be assigned is not evenly divisible by the number of partitions, NP, or if decoded, from or with the bitstream, that the number of blocks, NU, is not to be distributed evenly into the remaining partitions, then decode , from or along with the bitstream, the number of blocks to be assigned to the next section, in a predetermined scan order. The number of blocks, NU, to be assigned is reduced by the specified number of blocks to be assigned to said next partition, and the number of partitions, NP, to be assigned is reduced by one. The loop then returns to checking if the number of partitions, NP, to be assigned is greater than one.

[0171] Ниже рассмотрен один из примеров осуществления для второго аспекта настоящего изобретения, т.е. для синтаксиса и семантики унифицированной сигнализации о явно заданном или равномерном разбиении на тайлы и кирпичи. Данный вариант осуществления настоящего изобретения одинаково применим как для кодирования, формирующего фрагмент битового потока, соответствующего предложенным синтаксису и семантике, так и для декодирования, декодирующего фрагмент битового потока в соответствии с предложенными синтаксисом и семантикой.[0171] The following is an exemplary embodiment for the second aspect of the present invention, i.e. for the syntax and semantics of a unified signaling of an explicit or uniform partition into tiles and bricks. This embodiment of the present invention is equally applicable to both encoding generating a bitstream fragment according to the proposed syntax and semantics and decoding decoding a bitstream fragment according to the proposed syntax and semantics.

[0172] В данном примере упомянутую унифицированную сигнализацию используют для задания ширины столбцов тайлов и высот строк тайлов, тогда как сигнализация кирпичей идентична версии 5 проекта VVC.[0172] In this example, said unified signaling is used to set tile column widths and tile row heights, while brick signaling is identical to version 5 of the VVC project.

Figure 00000005
Figure 00000005

Figure 00000006
Figure 00000006

[0173] Флаг rem_tile_col_equal_flag[i], равный 0, определяет, что столбцы тайлов с порядковыми номерами в диапазоне от 0 до i включительно не обязательно имеют одинаковую ширину, измеряемую в СТВ. Флаг rem_tile_col_equal_flag[i], равный 1, определяет, что столбцы тайлов с порядковыми номерами в диапазоне от 0 до i включительно имеют одинаковую ширину, измеряемую в СТВ, при этом tile_column_width_minus1[j] принимают равным remWidthInCtbsY / (i+1) для каждого значения] в диапазоне от 0 до i включительно.[0173] The flag rem_tile_col_equal_flag[i], equal to 0, specifies that the columns of tiles with serial numbers in the range from 0 to i, inclusive, do not necessarily have the same width, measured in CTB. The rem_tile_col_equal_flag[i] flag equal to 1 specifies that the tile columns with serial numbers in the range from 0 to i inclusive have the same width, measured in CTB, while tile_column_width_minus1[j] is taken equal to remWidthInCtbsY / (i+1) for each value ] in the range from 0 to i inclusive.

[0174] Флаг rem_tile_row_equal_flag[i], равный 0, определяет, что строки тайлов с порядковыми номерами в диапазоне от 0 до i включительно не обязательно должны иметь равную высоту, измеряемую в СТВ. Флаг rem_tile_row_equal_flag[i], равный 1, определяет, что строки тайлов с порядковыми номерами в диапазоне от 0 до i включительно имеют равную высоту, измеряемую в СТВ, при этом tile_row_height_minus1 [j] принимают равным remHeightlnCtbsY / (i+1) для каждого значения] в диапазоне от 0 до i включительно.[0174] The flag rem_tile_row_equal_flag[i], equal to 0, specifies that rows of tiles with serial numbers in the range from 0 to i, inclusive, do not have to have equal height, measured in CTB. The rem_tile_row_equal_flag[i] flag, equal to 1, determines that the rows of tiles with serial numbers in the range from 0 to i inclusive have equal height, measured in CTB, while tile_row_height_minus1 [j] is taken equal to remHeightlnCtbsY / (i+1) for each value ] in the range from 0 to i inclusive.

[0175] Семантика остальных синтаксических элементов может быть определена идентично семантике синтаксических элементов с идентичными именами в версии 5 проекта VVC.[0175] The semantics of the remaining syntax elements can be defined identically to the semantics of the identically named syntax elements in version 5 of the VVC project.

[0176] Ниже будет рассмотрен пример осуществления для еще одного из аспектов настоящего изобретения, то есть, синтаксис и семантика, включающие одновременно указание столбцов тайлов и высот кирпичей для каждого столбца тайла, а также унифицированную сигнализацию о явно заданном или равномерном разбиении на тайлы и кирпичи. Данный вариант осуществления настоящего изобретения одинаково применим как для кодирования, формирующего фрагмент битового потока, соответствующего предложенным синтаксису и семантике, так и для декодирования, декодирующего фрагмент битового потока в соответствии с предложенными синтаксисом и семантикой.[0176] An exemplary implementation will be discussed below for another aspect of the present invention, i.e., syntax and semantics, including simultaneously specifying tile columns and brick heights for each tile column, as well as unified signaling of explicit or uniform tiling and bricking. . This embodiment of the present invention is equally applicable to both encoding generating a bitstream fragment according to the proposed syntax and semantics and decoding decoding a bitstream fragment according to the proposed syntax and semantics.

[0177] Ниже кратко изложена сущность данного примера осуществления изобретения, при этом он может быть адаптирован для декодирования заменой слова «указание» на «декодирование».[0177] The following is a summary of this embodiment of the invention, while it can be adapted for decoding by replacing the word "indication" with "decoding".

[0178] Столбцы тайлов указывают следующим образом:[0178] The tile columns are indicated as follows:

- Указывают количество столбцов тайлов (num tile columns minus1).- Specify the number of tile columns (num tile columns minus1).

- В цикле, проходящем по столбцам тайлов слева направо до тех пор, пока не будут пройдены все столбцы тайлов, или до тех пор, пока не будет указано, что все оставшиеся столбцы тайлов имеют равную ширину, указывают:- In a loop through the tile columns from left to right until all tile columns have been traversed, or until it is indicated that all remaining tile columns are of equal width, indicate:

Figure 00000007
Если оставшаяся ширина (измеряемая в СТВ) делится без остатка на количество столбцов тайлов, еще подлежащих назначению, указывают, имеют ли оставшиеся столбцы тайлов равную ширину (rem_tile_col_equal_flag[i]).
Figure 00000007
If the remaining width (measured in CTB) is divided without remainder by the number of tile columns still to be assigned, it is indicated whether the remaining tile columns have equal width (rem_tile_col_equal_flag[i]).

Figure 00000008
Если оставшиеся столбцы тайлов не имеют равную ширину, указывают ширину столбца тайла (tile_column_width_minus1[i]).
Figure 00000008
If the remaining tile columns are not of equal width, specify the tile column width (tile_column_width_minus1[i]).

[0179] Перечисленное ниже указывают в цикле, который проходит по столбцам тайлов слева направо, для прямоугольных слайсов, и включает только одну запись цикла, которая определяет высоты строк тайлов для слайсов в режиме сканирования растра:[0179] The following is indicated in a loop that goes through the tile columns from left to right, for rectangular slices, and includes only one loop entry that determines the tile row heights for slices in raster scan mode:

- Флаг, указывающий, является разбиение столбца тайлов на кирпичи идентичным предыдущему столбцу тайлов. Этот флаг отсутствует для самого левого столбца тайлов (copy_jtrevious_col_flag[i]). Следует отметить, что этот флаг в данном примере осуществления настоящего изобретения может быть опущен, или могут быть другие альтернативы, описанные ниже, подходящие для достижения аналогичной этому флагу функциональности.- A flag indicating whether the tile column is split into bricks identical to the previous tile column. This flag is missing for the leftmost tile column (copy_jtrevious_col_flag[i]). It should be noted that this flag may be omitted in this exemplary embodiment of the present invention, or there may be other alternatives described below that are suitable to achieve similar functionality to this flag.

- Когда разбиение тайлов на кирпичи в столбце тайлов не идентично предыдущему столбцу тайлов, кирпичи столбца тайлов указывают следующим образом:- When the bricking of tiles in a tile column is not identical to the previous tile column, the bricks of the tile column are indicated as follows:

Figure 00000009
Указывают количество кирпичей в столбце тайлов (num_bricks_minus1[i]).
Figure 00000009
Specify the number of bricks in the tile column (num_bricks_minus1[i]).

Figure 00000010
В цикле, проходящем по кирпичам сверху снизу вверх, пока не будут пройдены все кирпичи столбца тайлов, или до тех пор, пока не будет указано, что все оставшиеся кирпичи в столбце тайлов имеют равную высоту, указывают следующее:
Figure 00000010
In a loop through the bricks from top to bottom up until all bricks in a tile column have been traversed, or until it is specified that all remaining bricks in a tile column are of equal height, the following is indicated:

Figure 00000011
если оставшаяся высота (измеряемая в СТВ) делится на количество кирпичей, все еще подлежащих определению, указывают, имеют ли оставшиеся кирпичи равную высоту (rem_brick_height_equal_flag[i][j]).
Figure 00000011
if the remaining height (measured in CTB) is divided by the number of bricks still to be determined, indicate whether the remaining bricks have the same height (rem_brick_height_equal_flag[i][j]).

Figure 00000012
Если оставшиеся кирпичи не имеют равную высоту, указывают высоту кирпича (brick_height_minus1 [i] [j]).
Figure 00000012
If the remaining bricks do not have the same height, indicate the height of the brick (brick_height_minus1[i][j]).

[0180] В данном примере осуществления настоящего изобретения может использоваться приведенный ниже синтаксис.[0180] In this embodiment of the present invention, the following syntax may be used.

Figure 00000013
Figure 00000013

Figure 00000014
Figure 00000014

[0181] Значение num_tile_columns_minus1 плюс 1 определяет количество столбцов тайлов, на которые разбито изображение, когда флаг uniform_tile_spacing_flag равен 0. Значение num tile columns minus 1 должно лежать в диапазоне от 0 до PicWidthlnCtbsY - 1 включительно. Когда флаг single_tile_in_pic_flag равен 1, значение num_tile_columns_minus1 принимают равным 0.[0181] The value num_tile_columns_minus1 plus 1 determines the number of tile columns into which the image is split when the uniform_tile_spacing_flag flag is 0. The value num tile columns minus 1 must be in the range 0 to PicWidthlnCtbsY - 1 inclusive. When the flag single_tile_in_pic_flag is equal to 1, the value of num_tile_columns_minus1 is set to 0.

[0182] Флаг rem_tile_col_equal_flag[i], равный 0, определяет, что столбцы тайлов с порядковыми номерами в диапазоне от 0 до i включительно не обязательно должны иметь одинаковую ширину, измеряемую в СТВ. Флаг rem_tile_col_equal_flag[i], равный 1, определяет, что столбцы тайлов с порядковыми номерами в диапазоне от 0 до i включительно, считают имеющими одинаковую ширину, измеряемую в СТВ. Когда это флаг отсутствует, значение rem_tile_col_equal_flag[i] принимают равным 0.[0182] The flag rem_tile_col_equal_flag[i] equal to 0 specifies that the columns of tiles with serial numbers in the range from 0 to i inclusive do not have to have the same width, measured in CTB. The flag rem_tile_col_equal_flag[i] equal to 1 specifies that columns of tiles with serial numbers in the range from 0 to i inclusive are considered to have the same width, measured in CTB. When this flag is absent, rem_tile_col_equal_flag[i] is set to 0.

[0183] Значение tile_column_width_minus1[i] плюс 1 определяет ширину i-го столбца тайлов, измеряемую в СТВ.[0183] The value of tile_column_width_minus1[i] plus 1 specifies the width of the i-th tile column, measured in CTB.

[0184] Флаг copy_previous_col_flag[i], равный 0, определяет, что присутствует num_bricks_minus1[i]. Флаг copy_previous_col_flag[i], равный 1, определяет все из нижеперечисленного:[0184] Flag copy_previous_col_flag[i] equal to 0 specifies that num_bricks_minus1[i] is present. The copy_previous_col_flag[i] flag of 1 specifies all of the following:

- Значение num_bricks_minus1[i] принимают равным num_bricks_minus1[i-1].- The value of num_bricks_minus1[i] is taken equal to num_bricks_minus1[i-1].

- Флаг rem_brick_height_equal_flag[i][j] принимают равным rem_brick_height_equal_flag[i-1][j] для всех таких значений j в диапазоне от 0 до num_bricks_minus1[i] включительно, для которых значение rem_brick_height_equal_flag[i-1][j] присутствует или получено логически.- The flag rem_brick_height_equal_flag[i][j] is taken equal to rem_brick_height_equal_flag[i-1][j] for all such values of j in the range from 0 to num_bricks_minus1[i] inclusive, for which the value rem_brick_height_equal_flag[i-1][j] is present or received logically.

- Значение brick_height_minus1[i][j] принимают равным brick height minus 1 [i-1] [j] для таких значений j в диапазоне от 0 до num bricks minus 1 [i] включительно, для которых значение brick_height_minus1[i-1][j] присутствует.- The value of brick_height_minus1[i][j] is taken equal to brick height minus 1 [i-1] [j] for such values of j in the range from 0 to num bricks minus 1 [i] inclusive, for which the value of brick_height_minus1[i-1] [j] is present.

[0185] Флаг copy_previous_col_flag[i], равный 0, определяет, что присутствует numbricksminus 1 [i]. Флаг copy_previous_col_flag[i], равный 1, определяет все из нижеперечисленного:[0185] A copy_previous_col_flag[i] flag of 0 specifies that numbricksminus 1 [i] is present. The copy_previous_col_flag[i] flag of 1 specifies all of the following:

- Значение num_bricks_minus1[i] принимают равным num bricks minus1[i-1].- The value num_bricks_minus1[i] is taken equal to num bricks minus1[i-1].

- Флаг rem_brick_height_equal_flag[i][j] принимают равным rem_brick_height_equal_flag[i-1] [j] для всех таких значений j в диапазоне от 0 до numbricksminus 1 [i] включительно, для которых значение rem_brick_height_equal_flag[i-1][j] присутствует или получено логически.- The flag rem_brick_height_equal_flag[i][j] is taken equal to rem_brick_height_equal_flag[i-1] [j] for all such values of j in the range from 0 to numbricksminus 1 [i] inclusive, for which the value rem_brick_height_equal_flag[i-1][j] is present or received logically.

- Значение brick_height_minus1[i][j] принимают равным brick_height_minus1 [i-1] [j] для таких значений j в диапазоне от 0 до num_bricks_minus1 [i] включительно, для которых значение brick_height_minus1[i-1][j] присутствует.- The brick_height_minus1[i][j] value is taken equal to brick_height_minus1 [i-1] [j] for such j values in the range from 0 to num_bricks_minus1 [i] inclusive, for which the brick_height_minus1[i-1][j] value is present.

[0186] Флаг rem_brick_height_equal_flag[i][j], равный 0, определяет, что кирпичи с порядковыми номерами в диапазоне от 0 до j включительно в i-м столбце тайлов не обязательно имеют равную высоту, измеряемую в СТВ. Флаг rem_brick_height_equal_flag[i][j], равный 1, определяет, что кирпичи с порядковыми номерами в диапазоне от 0 до j включительно в i-м столбце тайлов считают имеющими равную высоту, измеряемую в СТВ. Когда этот флаг отсутствует, значение rem_brick_height_equal_flag[i][j] принимают равным 0.[0186] The flag rem_brick_height_equal_flag[i][j], equal to 0, specifies that bricks with serial numbers in the range from 0 to j inclusive in the i-th tile column do not necessarily have equal height, measured in CTB. The flag rem_brick_height_equal_flag[i][j] equal to 1 specifies that bricks with serial numbers in the range from 0 to j inclusive in the i-th tile column are considered to have equal height, measured in CTB. When this flag is absent, rem_brick_height_equal_flag[i][j] is set to 0.

[0187] Значение brick_height_minus1[i][j] плюс 1 определяет высоту j-го кирпича в i-м столбце тайлов, измеряемую в СТВ.[0187] The value of brick_height_minus1[i][j] plus 1 determines the height of the j-th brick in the i-th tile column, measured in CTB.

[0188] Семантика остальных синтаксических элементов может быть определена идентично семантике синтаксических элементов с идентичными именами в версии 5 проекта VVC.[0188] The semantics of the remaining syntax elements can be defined identically to the semantics of the identically named syntax elements in version 5 of the VVC project.

[0189] В процедуре декодирования могут применяться переменные, соответствующие приведенному ниже описанию или аналогичные ему.[0189] In the decoding procedure, variables corresponding to the description below or similar to it can be used.

[0190] Список colWidth[i] в диапазоне от 0 до num tile columns minus1 включительно, определяющий ширину i-го столбца тайлов, измеряемую в СТВ, получают следующим образом:[0190] The list colWidth[i] in the range from 0 to num tile columns minus1 inclusive, defining the width of the i-th tile column, measured in CTB, is obtained as follows:

Figure 00000015
Figure 00000015

[0191] Списки colBrickHeight[i][j] для i в диапазоне от 0 до num_tile_columns_minus1 включительно и j в диапазоне от 0 до num_bricks_minus1[i] включительно, определяющие высоту j-й строки кирпичей, измеряемую в СТВ, в i-м столбце тайла, список RowHeight[j] для j в диапазоне от 0 до NumTileRows 1 включительно, определяющий высоту j-й строкитайлов, измеряемую в СТВ, список tileRowBd[j] для j в диапазоне от 0 до NumTileRows включительно, определяющий местоположение границы j-й строки тайлов, измеряемое в СТВ, значение NumTileRows и значение NumTilesInPic получают следующим образом:[0191] Lists colBrickHeight[i][j] for i in the range from 0 to num_tile_columns_minus1 inclusive and j in the range from 0 to num_bricks_minus1[i] inclusive, defining the height of the j-th row of bricks, measured in CTB, in the i-th column tile, the RowHeight[j] list for j in the range from 0 to NumTileRows 1 inclusive, which defines the height of the j-th row of tiles, measured in CTB, the tileRowBd[j] list for j in the range from 0 to NumTileRows inclusive, which determines the location of the border of the j-th the rows of tiles measured in CTB, the NumTileRows value, and the NumTilesInPic value are obtained as follows:

Figure 00000016
Figure 00000016

Figure 00000017
Figure 00000017

Figure 00000018
Figure 00000018

[0192] Когда флаг single_tile_in_pic_flag равен 0, NumTilesInPic должно быть больше 1. Список tileColBd[i] для i в диапазоне от 0 до num tile columns minus 1+1 включительно, определяющий местоположение границы i-го столбца тайлов, измеряемое в СТВ, получают следующим образом:[0192] When the single_tile_in_pic_flag flag is 0, NumTilesInPic must be greater than 1. A list tileColBd[i] for i in the range 0 to num tile columns minus 1+1 inclusive, specifying the location of the border of the i-th tile column, measured in CTB, is obtained in the following way:

Figure 00000019
Figure 00000019

[0193] Описанным ниже образом вычисляют переменную NumBricksInPic, определяющую количество кирпичей в изображении, ссылающемся на данный PPS, и списки BrickColBd[brickIdx], BrickRowBd [brickIdx], BrickWidth[brickIdx], BrickHeight[brickIdx] для brickIdx в диапазоне от 0 до NumBricksInPic - 1 включительно, определяющие местоположения вертикальных границ кирпичей, измеряемые в СТВ, местоположения горизонтальных границ кирпичей, измеряемые в СТВ, ширины столбцов кирпичей, измеряемые в СТВ, и высоты столбцов кирпичей, измеряемые в СТВ, и логически получают, для каждого i в диапазоне от 0 до NumTilesInPic - 1 включительно, когда флаг uniform_brick_spacing_flag[i] равен 1, значение num_brick_rows_minus1 [i].[0193] As described below, the NumBricksInPic variable is calculated, which determines the number of bricks in the image referring to this PPS, and the lists BrickColBd[brickIdx], BrickRowBd [brickIdx], BrickWidth[brickIdx], BrickHeight[brickIdx] for brickIdx in the range from 0 to NumBricksInPic - 1 inclusive, defining the locations of vertical brick boundaries measured in CFI, the locations of horizontal brick boundaries measured in CFI, brick column widths measured in CFI, and brick column heights measured in CFI, and are logically obtained, for each i in the range from 0 to NumTilesInPic - 1 inclusive, when uniform_brick_spacing_flag[i] is 1, the value is num_brick_rows_minus1[i].

Figure 00000020
Figure 00000020

Figure 00000021
Figure 00000021

[0194] В соответствии с одним из вариантов осуществления настоящего изобретения, способ кодирования включает следующие шаги: а) определение количества блоков, подлежащих назначению в разделы; b) указание или логическое определение количества разделов явно заданного размера, подлежащих назначению; с) указание размеров разделов явно заданного размера или количества блоков в них; и d) указание или логическое определение количества разделов явно заданного размера, подлежащих назначению.[0194] In accordance with one embodiment of the present invention, the encoding method includes the following steps: a) determining the number of blocks to be assigned to partitions; b) an indication or logical determination of the number of explicitly sized partitions to be assigned; c) an indication of the size of partitions of an explicitly specified size or number of blocks in them; and d) an indication or logical determination of the number of explicitly sized partitions to be assigned.

[0195] В соответствии с одним из вариантов осуществления настоящего изобретения шаг d) включает следующие шаги: d1) указание числа блоков; d2) назначение этого числа блоков в разделы циклически до тех пор, пока количество неназначенных блоков не станет меньше числа блоков; и d3) назначение, если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел в заранее заданном порядке сканирования.[0195] In accordance with one embodiment of the present invention, step d) includes the following steps: d1) specifying the number of blocks; d2) assigning that number of blocks to partitions cyclically until the number of unassigned blocks is less than the number of blocks; and d3) assigning, if the number of unassigned blocks is greater than 0, unassigned blocks to the last partition in a predetermined scan order.

[0196] Таким образом, способ кодирования, соответствующий рассмотренному выше варианту осуществления настоящего изобретения, может быть реализован как независимо, так и в комбинации с одним или более другими вариантами осуществления настоящего изобретения, в соответствии с иллюстрацией фиг. 14а. Способ включает:[0196] Thus, the encoding method according to the above embodiment of the present invention can be implemented either independently or in combination with one or more other embodiments of the present invention, in accordance with the illustration of FIG. 14a. The method includes:

определение (1400) количества блоков, подлежащих назначению в разделы и инициализированных как неназначенные; указание или логическое определение (1402) количества разделов явно заданного размера, подлежащих назначению; указание (1404) размеров для разделов явно заданного размера и соответствующую маркировку неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования; указание (1406) числа блоков; циклическое назначение (1408) упомянутого числа блоков в разделы и соответствующую маркировку неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; и назначение (1410), если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел.determining (1400) the number of blocks to be assigned to sections and initialized as unassigned; an indication or logical determination (1402) of the number of explicitly sized partitions to be assigned; specifying (1404) sizes for partitions of an explicit size and appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; indicating (1406) the number of blocks; cyclically assigning (1408) said number of blocks to partitions and correspondingly marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and assigning (1410), if the number of unassigned blocks is greater than 0, unassigned blocks to the last section.

[0197] В соответствии с одним из вариантов осуществления настоящего изобретения способ декодирования включает следующие шаги: а) определение количества блоков, подлежащих назначению в разделы; b) декодирование или логическое определение количества разделов явно заданного размера, подлежащих назначению; с) декодирование размеров разделов явно заданного размера или количества блоков в них; и d) декодирование или логическое определение количества разделов явно заданного размера, подлежащих назначению.[0197] In accordance with one embodiment of the present invention, a decoding method includes the following steps: a) determining the number of blocks to be assigned to partitions; b) decoding or inferring the number of explicitly sized partitions to be assigned; c) decoding the sizes of sections of an explicitly given size or number of blocks in them; and d) decoding or inferring the number of explicitly sized partitions to be assigned.

[0198] В соответствии с одним из вариантов осуществления настоящего изобретения в случае декодирования шаг d) включает следующие шаги: d1) декодирование числа блоков; d2) назначение этого единственного числа блоков в разделы циклически до тех пор, пока количество неназначенных блоков не станет меньше числа блоков; и d3) назначение, если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел в заранее заданном порядке сканирования.[0198] In accordance with one embodiment of the present invention, in the case of decoding, step d) includes the following steps: d1) decoding the number of blocks; d2) assigning that single number of blocks to partitions cyclically until the number of unassigned blocks is less than the number of blocks; and d3) assigning, if the number of unassigned blocks is greater than 0, unassigned blocks to the last partition in a predetermined scan order.

[0199] Таким образом, способ декодирования, соответствующий рассмотренному выше варианту осуществления настоящего изобретения, может быть реализован как независимо, так и в комбинации с одним или более другими вариантами осуществления настоящего изобретения, в соответствии с иллюстрацией фиг. 14b. Способ включает:[0199] Thus, the decoding method according to the above embodiment of the present invention can be implemented either independently or in combination with one or more other embodiments of the present invention, in accordance with the illustration of FIG. 14b. The method includes:

определение (1450) количества блоков, подлежащих назначению в разделы; определение (1452) количества разделов явно заданного размера, подлежащих назначению; определение (1454) размеров для разделов явно заданного размера и соответствующую маркировку неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования; определение (1456) числа блоков; циклическое назначение (1458) упомянутого числа блоков в разделы и соответствующую маркировку неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; и назначение (1460), если количество неназначенных блоков больше 0, неназначенных блоков в последний раздел.determining (1450) the number of blocks to be assigned to partitions; determining (1452) the number of explicitly sized partitions to be assigned; determining (1454) sizes for partitions of an explicit size and appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; determining (1456) the number of blocks; cyclically assigning (1458) said number of blocks to partitions and correspondingly marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and assigning (1460), if the number of unassigned blocks is greater than 0, unassigned blocks to the last section.

[0200] В соответствии с одним из вариантов осуществления настоящего изобретения, для кодирования и/или декодирования, способ дополнительно включает:[0200] In accordance with one embodiment of the present invention, for encoding and/or decoding, the method further includes:

- маркировку упомянутого количества блоков исходно как неназначенных, или, эквивалентно, исходно упомянутое количество блоков не назначены, например, как часть шага а) или в связи с ним;marking said number of blocks initially as unassigned, or equivalently, said number of blocks initially not assigned, for example as part of or in connection with step a) ;

- маркировку неназначенных блоков как назначенных в соответствии с количеством разделов явно заданного размера, подлежащих назначению, и размерами разделов явно заданного размера, например, как часть шагов b) и/или с), или в связи с ними;- marking unassigned blocks as assigned according to the number of explicitly sized partitions to be assigned and the sizes of explicitly sized partitions, for example, as part of steps b) and/or c), or in connection with them;

- маркировку неназначенных блоков как назначенных, всякий раз, когда упомянутое число блоков назначают в раздел, например, как часть шага 62 или в связи с ним.marking unassigned blocks as assigned whenever said number of blocks are assigned to a partition, for example as part of or in connection with step 62.

[0201] Назначение блоков в разделы и/или маркировка неназначенных блоков как назначенных могут выполняться в соответствии с порядком сканирования. В одном из вариантов осуществления настоящего изобретения порядок сканирования заранее задан, например, в стандарте кодирования. Сканирование может выполняться, например, слева направо (например, для назначения столбцов CTU в столбцы тайлов), или сверху вниз (например, для назначения строк CTU в строки тайлов, или строк CTU внутри тайла в кирпичи. В одном из вариантов осуществления настоящего изобретения кодер может выбирать порядок сканирования из списка заранее заданных порядков сканирования и указывать выбранный порядок сканирования, например, как порядковый номер в списке заранее заданных порядков сканирования, в битовом потоке или вместе с ним. В одном из вариантов осуществления настоящего изобретения декодер может декодировать порядок сканирования, например, порядковый номер в списке заранее заданных порядков сканирования, из битового потока или вместе с ним.[0201] Assigning blocks to partitions and/or marking unassigned blocks as assigned may be performed in accordance with the scan order. In one embodiment of the present invention, the scan order is predetermined, for example, in a coding standard. Scanning may be performed, for example, from left to right (for example, to assign CTU columns to tile columns), or from top to bottom (for example, to assign CTU rows to tile rows, or CTU rows within a tile to bricks. In one embodiment of the present invention, the encoder may select a scan order from a list of predefined scan orders and indicate the selected scan order, for example, as a sequence number in the list of predefined scan orders, in or along with the bitstream.In one embodiment of the present invention, the decoder may decode the scan order, for example , a sequence number in a list of predefined scan orders, from or with a bitstream.

[0202] В соответствии с одним из вариантов осуществления настоящего изобретения, для кодирования и/или декодирования, шаг с) дополнительно включает, или за ним следует, шаг назначения размеров, или количества блоков, в разделы явно заданного размера.[0202] In accordance with one embodiment of the present invention, for encoding and/or decoding, step c) further includes or is followed by a step of assigning sizes, or number of blocks, into explicitly sized partitions.

[0203] Размер раздела явно заданного размера может быть указан как количество блоков, подлежащих назначению.[0203] The size of an explicit size partition may be indicated as the number of blocks to be assigned.

[0204] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, упомянутые блоки являются одним из следующего: СТВ, CTU, строка CTU, столбец CTU, ячейка сетки (в случае сетки, используемой для указания разбиения на субизображения), строка сетки (в случае сетки, используемой для указания разбиения на субизображения), столбец сетки (в случае сетки, используемой для указания разбиения на субизображения).[0204] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, said blocks are one of the following: CTB, CTU, CTU row, CTU column, grid cell (in the case of a grid used to indicate a partition into sub-images), grid row (in the case of a grid used to indicate a sub-image split), grid column (in the case of a grid used to indicate a sub-image split).

[0205] В вариантах осуществления настоящего изобретения, применимых для кодирования и/или декодирования, может сохраняться информация о блоках, которые все еще являются не назначенными. Сразу после определения количества блоков, подлежащих назначению в разделы, все эти блоки могут быть промаркированы как не назначенные. Когда набор блоков назначают в один из разделов, этот набор блоков может быть промаркирован как назначенные, или маркировка «неназначенные» в этом наборе блоков может быть удалена или отменена. Маркировка блоков как назначенных или неназначенных, например, может представлять собой переменную типа массива, или аналогичную ей, в которой каждый блок, подлежащий назначению, представлен одной записью массива, а значение этой записи в массиве указывает, был ли соответствующий блок назначен или нет.В другом примере количество блоков, все еще подлежащих назначению, т.е. количество оставшихся неназначенных блоков, сохраняют на протяжении шагов варианта осуществления настоящего изобретения.[0205] In embodiments of the present invention applicable to encoding and/or decoding, information about blocks that are still unassigned may be stored. Once the number of blocks to be assigned to sections has been determined, all of these blocks can be marked as unassigned. When a block set is assigned to one of the partitions, that block set may be marked as assigned, or the "unassigned" marking in that block set may be removed or omitted. Marking blocks as assigned or unassigned, for example, can be an array type variable, or similar, in which each block to be assigned is represented by a single array entry, and the value of that array entry indicates whether the corresponding block has been assigned or not. In another example, the number of blocks still to be assigned, ie. the number of remaining unassigned blocks is maintained throughout the steps of an embodiment of the present invention.

[0206] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, количество блоков, подлежащих назначению в разделы, является одним из следующего: ширина изображения в блоках CTU (например, когда разделы представляют собой столбцы тайлов), высота изображения в блоках CTU (например, когда разделы представляют собой строки тайлов, или когда разделы представляют собой строки кирпичей, указанные для одного или более полных столбцов тайлов одновременно), количество строк блоков CTU в тайле (например, когда разделы представляют собой кирпичи тайла), ширина изображения в столбцах сетки (в случае сетки, используемой для указания разбиения на субизображения), высота изображения в строках сетки (в случае сетки, используемой для указания разбиения на субизображения).[0206] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, the number of blocks to be assigned to sections is one of the following: image width in CTUs (for example, when sections are columns of tiles), image height in CTUs (for example, when sections are rows of tiles, or when sections are rows of bricks specified for one or more full columns of tiles at the same time), number of rows of CTUs in a tile (for example, when sections are bricks of a tile) , image width in grid columns (in the case of a grid used to indicate sub-image splitting), image height in grid rows (in the case of a grid used to specify sub-image splitting).

[0207] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, упомянутые разделы являются одним или более из следующего: столбцы тайлов, строки тайлов, строки кирпичей, столбцы сетки (в случае сетки, используемой для указания разбиения на субизображения), строки сетки (в случае сетки, используемой для указания разбиения на субизображения).[0207] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, said partitions are one or more of the following: tile columns, tile rows, brick rows, grid columns (in the case of a grid used to specify a partition into sub-images), grid lines (in the case of the grid used to indicate sub-images).

[0208] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, в котором шаг d включает шаги d1, d2 и d3, описанные выше, может использоваться следующий, или аналогичный, синтаксис:[0208] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, in which step d includes steps d1, d2 and d3 described above, the following, or similar, syntax may be used:

Figure 00000022
Figure 00000022

Figure 00000023
Figure 00000023

[0209] Значение num_exp_tile_columns_minus1 плюс 1 определяет количество явно предоставляемых ширин столбцов тайлов.[0209] The value num_exp_tile_columns_minus1 plus 1 determines the number of explicitly provided tile column widths.

[0210] num_exp_tile_rows_minus1 плюс 1 определяет количество явно предоставляемых высот строк тайлов.[0210] num_exp_tile_rows_minus1 plus 1 specifies the number of explicitly provided tile row heights.

[0211] Значение tile_column_width_minus1[i] плюс 1 определяет ширину i-го столбца тайлов, измеряемую в СТВ, для i в диапазоне от 0 до num_exp_tile_columns_minus1 - 1 включительно. Значение tile_column_width_minus 1 [num_exp_tile_columns_minus1] используют для вычисления ширины столбцов тайлов с порядковыми номерами, большими или равными num_exp_tile_columns_minus1.[0211] The value of tile_column_width_minus1[i] plus 1 specifies the width of the i-th tile column, measured in CTB, for i in the range from 0 to num_exp_tile_columns_minus1 - 1 inclusive. The value tile_column_width_minus 1 [num_exp_tile_columns_minus1] is used to calculate the width of tile columns with index numbers greater than or equal to num_exp_tile_columns_minus1.

[0212] Значение tile_row_height_minus1[i] плюс 1 определяет высоту i-й строки тайлов, измеряемую в СТВ, для i в диапазоне от 0 до num_exp_tile_rows_minus1 - 1 включительно. Значение tile_row_height_minus1 [num_exp_tile_rows_minus1] используют для вычисления высоты строк тайлов с порядковыми номерами, большими или равными num_exp_tile_rows_minus1.[0212] The value tile_row_height_minus1[i] plus 1 determines the height of the i-th row of tiles, measured in CTB, for i in the range from 0 to num_exp_tile_rows_minus1 - 1 inclusive. The value tile_row_height_minus1 [num_exp_tile_rows_minus1] is used to calculate the row height of tiles with serial numbers greater than or equal to num_exp_tile_rows_minus1.

[0213] Флаги brick_splitting_present_flag и brick_spit_flag[i] могут быть определены в соответствии с приведенным выше описанием.[0213] The brick_splitting_present_flag and brick_spit_flag[i] flags may be defined as described above.

[0214] NumTilesInPic может быть принято равным количеству тайлов в изображении. NumTileColumns может быть принято равным количеству столбцов тайлов в изображении. Значение RowHeight[tileY] может быть принято равным количеству строк CTU в tile Y-й строке тайлов.[0214] NumTilesInPic can be taken equal to the number of tiles in the image. NumTileColumns can be taken equal to the number of tile columns in the image. The RowHeight[tileY] value can be taken equal to the number of CTU rows in tile in the Yth tile row.

[0215] Значение num_exp_brick_rows_minus1[i] плюс 1 определяет количество явно предоставляемых высот строк кирпичей в i-м тайле. В случае его отсутствия значение num_exp_brick_rows_minus1[i] может быть принято равным -1.[0215] The value num_exp_brick_rows_minus1[i] plus 1 determines the number of explicitly provided brick row heights in the i-th tile. In case of its absence, the value num_exp_brick_rows_minus1[i] can be taken equal to -1.

[0216] Значение brick_row_height_minus1[i][j] плюс 1 определяет высоту j-ro кирпича в i-м тайле, измеряемую в СТВ, для j в диапазоне от 0 до num_exp_brick_rows_minus1[i] - 1 включительно. Значение brick_row_height_minus1[i][num_exp_brick_rows_minus1] используют для вычисления высоты строк кирпичей с порядковыми номерами, большими или равными num_exp_brick_rows_minus1[i] в i-м тайле.[0216] The value of brick_row_height_minus1[i][j] plus 1 defines the height of the j-ro brick in the i-th tile, measured in CTB, for j in the range from 0 to num_exp_brick_rows_minus1[i] - 1 inclusive. The brick_row_height_minus1[i][num_exp_brick_rows_minus1] value is used to calculate the row height of bricks with serial numbers greater than or equal to num_exp_brick_rows_minus1[i] in the i-th tile.

[0217] В соответствии с одним из примеров осуществления настоящего изобретения, где для кодирования используют приведенный выше синтаксис (или, соответственно, для декодирования, что приведено ниже в скобках), столбцы тайлов определяют следующим образом:[0217] In accordance with one embodiment of the present invention, where the above syntax is used for encoding (or, respectively, for decoding, which is given below in brackets), tile columns are defined as follows:

- Указывают (или декодируют) количество явно предоставляемых ширин столбцов тайлов, (num_exp_tile_columns_minus1).- Indicate (or decode) the number of explicitly provided tile column widths, (num_exp_tile_columns_minus1).

- Явно предоставляют (или декодируют и назначают) ширины столбцов тайлов, слева направо, (tile_column_width_minus1[i]).- Explicitly provide (or decode and assign) tile column widths, from left to right, (tile_column_width_minus1[i]).

- Последнюю явно предоставленную (или декодированную) ширину столбца тайлов (tile_column_width_minus1 [num_exp_tile_columns_minus1]) повторяют до тех пор, пока столбцы такой ширины не перестанут вмещаться в границы изображения.- The last explicitly provided (or decoded) tile column width (tile_column_width_minus1 [num_exp_tile_columns_minus1]) is repeated until columns of that width no longer fit within the image borders.

- Оставшиеся блоки CTU, не назначенные ни в один столбец тайлов, если таковые имеются, назначают в самый правый столбец тайлов.- Remaining CTUs not assigned to any tile column, if any, are assigned to the rightmost tile column.

[0218] Высоты строк тайлов и строк кирпичей задают аналогично строкам тайлов.[0218] The heights of the rows of tiles and rows of bricks are set similarly to the rows of tiles.

[0219] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым к приведенному выше синтаксису, и применимым для кодирования и/или декодирования, переменную numTileColumns, определяющую количество столбцов тайлов, и список colWidth[i] для i в диапазоне от 0 до numTileColumns - 1 включительно, определяющую ширину i-го столбца тайлов, измеряемую в СТВ, вычисляют следующим образом:[0219] In accordance with one embodiment of the present invention, applicable to the above syntax, and applicable to encoding and/or decoding, a numTileColumns variable specifying the number of tile columns, and a colWidth[i] list for i in the range from 0 to numTileColumns - 1 inclusive, which determines the width of the i-th column of tiles, measured in CTB, is calculated as follows:

Figure 00000024
Figure 00000024

[0220] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым к приведенному выше синтаксису, и применимым для кодирования и/или декодирования, переменную numTileRows, определяющую количество строк тайлов, и список RowHeight[j] для] в диапазоне от 0 до numTileRows - 1 включительно, определяющий высоту j-й строки тайлов, измеряемую в СТВ, вычисляют следующим образом:[0220] In accordance with one embodiment of the present invention, applicable to the above syntax, and applicable to encoding and/or decoding, a numTileRows variable specifying the number of tile rows, and a RowHeight[j] list for] ranging from 0 to numTileRows - 1 inclusive, which determines the height of the j-th row of tiles, measured in CTB, is calculated as follows:

Figure 00000025
Figure 00000025

[0221] В некоторых из вариантов осуществления настоящего изобретения может применяться следующее:[0221] In some of the embodiments of the present invention, the following may apply:

- Переменную NumTilesInPic задают равной numTileColumns * numTileRows.- The NumTilesInPic variable is set to numTileColumns * numTileRows.

- Список tileColBd[i] для i в диапазоне от 0 до numTileColumns включительно, определяющий местоположение границы i-го столбца тайлов, измеряемое в СТВ, получают следующим образом:- The list tileColBd[i] for i in the range from 0 to numTileColumns inclusive, specifying the location of the border of the i-th tile column, measured in CTB, is obtained as follows:

Figure 00000026
Figure 00000026

- Список tileRowBd[j] для j в диапазоне от 0 до numTileRows включительно, определяющий местоположение границы j-й строки тайлов, измеряемое в СТВ, вычисляют следующим образом:- The list tileRowBd[j] for j in the range from 0 to numTileRows inclusive, defining the location of the border of the j-th row of tiles, measured in CTB, is calculated as follows:

Figure 00000027
Figure 00000027

[0222] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым к приведенному выше синтаксису, и применимым для кодирования и/или декодирования, описанным ниже образом вычисляют переменную NumBricksInPic, определяющую количество кирпичей в изображении, ссылающемся на данный PPS, и списки BrickColBd[brickIdx], BrickRowBd[brickIdx], BrickWidth[brickIdx], BrickHeight[brickIdx] для brickIdx в диапазоне от 0 до NumBricksInPic - 1 включительно, определяющие местоположения вертикальных границ кирпичей, измеряемые в СТВ, местоположения горизонтальных границ кирпичей, измеряемые в СТВ, ширины кирпичей, измеряемые в СТВ, и высоты кирпичей:[0222] In accordance with one of the embodiments of the present invention, applicable to the above syntax, and applicable to encoding and/or decoding, the NumBricksInPic variable determining the number of bricks in the image referring to this PPS, and the BrickColBd[ brickIdx], BrickRowBd[brickIdx], BrickWidth[brickIdx], BrickHeight[brickIdx] for brickIdx in the range from 0 to NumBricksInPic - 1 inclusive, specifying the locations of vertical brick boundaries measured in CBM, locations of horizontal brick boundaries measured in CBM, brick widths , measured in STV, and the height of the bricks:

Figure 00000028
Figure 00000028

Figure 00000029
Figure 00000029

[0223] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, шаг d включает определение количества блоков, все еще подлежащих назначению в разделы, при помощи вычитания количества блоков в разделах явно заданного размера из количества блоков, подлежащих назначению в разделы, при этом способ дополнительно включает:[0223] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, step d includes determining the number of blocks still to be assigned to partitions by subtracting the number of blocks in the explicitly sized partitions from the number of blocks to be assignment to sections, the method further comprising:

- назначение разделов как разделы явно заданного размера в соответствии с размерами или с количеством блоков в разделах явно заданного размера, и в соответствии с заранее заданным или указанным/декодированным порядком сканирования;- designating partitions as explicitly sized partitions according to the sizes or number of blocks in the explicitly sized partitions, and according to a predefined or specified/decoded scan order;

- назначение разделов как разделы равного размера при помощи деления блоков, все еще подлежащих назначению в разделы, на количество разделов равного размера, и в соответствии с заранее заданным или указанным/декодированным порядком сканирования.assigning partitions as partitions of equal size by dividing the blocks still to be assigned to partitions by the number of partitions of equal size, and according to a predetermined or specified/decoded scan order.

[0224] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, количество разделов явно заданного размера указывают и/или декодируют из высокоуровневой синтаксической структуры (например, SPS), тогда как размеры разделов явно заданного размера и/или количество разделов равного размера, подлежащих назначению, могут указываться и/или декодироваться из низкоуровневой синтаксической структуры (например, PPS).[0224] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, the number of explicit size partitions is indicated and/or decoded from a high-level syntactic structure (e.g., SPS), while the sizes of explicit size partitions and/ or the number of equally sized sections to be assigned may be indicated and/or decoded from a low-level syntax structure (eg, PPS).

[0225] В соответствии с одним из вариантов осуществления настоящего изобретения логически получают, что количество разделов явно заданного размера равно 1 (например, это может быть заранее задано в стандарте кодирования).[0225] In accordance with one embodiment of the present invention, it is logically obtained that the number of explicit size partitions is 1 (for example, this may be predefined in the encoding standard).

[0226] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, шаг d включает:[0226] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, step d includes:

- определение набора или списка размеров разделов, на которые может быть равномерно распределено количество блоков, все еще подлежащих назначению в разделы;- defining a set or list of partition sizes over which the number of blocks still to be assigned to partitions can be evenly distributed;

- если количество элементов в упомянутом наборе или списке равно 1, логическое заключение о том, что количество разделов равного размера равно 1;- if the number of elements in said set or list is 1, the logical conclusion is that the number of partitions of equal size is 1;

- указание и/или декодирование порядкового номера (или аналогичной информации), соответствующей одному из элементов набора или списка, при этом порядковый номер указывает на количество разделов равного размера, подлежащих назначению.- indicating and/or decoding a sequence number (or similar information) corresponding to one of the elements of the set or list, whereby the sequence number indicates the number of partitions of equal size to be assigned.

[0227] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, набор или список размеров разделов, в которые могут быть равномерно распределено упомянутое количество блоков, все еще подлежащих назначению, ограничивают путем исключения размеров разделов, меньших порога, при этом порог может быть заранее задан, например, в стандарте кодирования, или указан/декодирован. Например, заранее задана или указана/декодирована может быть минимальная ширина столбца тайлов в CTU.[0227] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, the set or list of partition sizes into which said number of blocks still to be assigned can be evenly distributed is limited by excluding partition sizes smaller than a threshold , wherein the threshold may be predetermined, for example, in a coding standard, or specified/decoded. For example, the minimum width of a tile column in the CTU may be predetermined or specified/decoded.

[0228] В соответствии с одним из вариантов осуществления настоящего изобретения порядковый номер, соответствующий элементу упомянутого набора или списка, кодируют с помощью кодового слова фиксированной длины, например, u(v), при этом длина кодового слова определяется количеством элементов в наборе или списке.[0228] According to one embodiment of the present invention, the sequence number corresponding to an element of said set or list is encoded with a fixed length codeword, such as u(v), whereby the length of the codeword is determined by the number of elements in the set or list.

Указание, является ли граница потенциальной строки тайлов границей строки тайловSpecifying whether a potential tile row boundary is a tile row boundary

[0229] В некоторых из вариантов осуществления настоящего изобретения границу строки тайлов получают логически, когда горизонтальные границы кирпичей находятся на одной линии на протяжении всего изображения. В этом разделе представлен вариант осуществления настоящего изобретения для сигнализации границ строк тайлов. Этот вариант осуществления настоящего изобретения может применяться совместно с любыми вариантами осуществления изобретения, в которых, в синтаксисе, границы кирпичей указывают раньше границ строк тайлов.[0229] In some of the embodiments of the present invention, the border of a row of tiles is obtained logically when the horizontal borders of the bricks are on the same line throughout the entire image. This section presents an embodiment of the present invention for tile line boundary signaling. This embodiment of the present invention can be used in conjunction with any embodiments of the invention in which, in syntax, brick boundaries indicate before tile row boundaries.

[0230] Данный вариант осуществления настоящего изобретения может включать один или более из следующих шагов (некоторые из которых уже были описаны выше):[0230] This embodiment of the present invention may include one or more of the following steps (some of which have already been described above):

- Потенциальные границы строк тайлов логически получают как границы кирпичей, находящихся на одной (горизонтальной) линии во всем изображении.- Potential tile row boundaries are logically derived as the boundaries of bricks that are on the same (horizontal) line in the entire image.

- кодер логически определяет, в битовом потоке или вместе с ним, и/или декодер декодирует, из битового потока или вместе с ним, образуют ли все находящиеся на одной линии границы кирпичей границы строк тайлов. Например, может использоваться флаг в синтаксисе битового потока.- the encoder logically determines, in or with the bitstream, and/or the decoder decodes, from or with the bitstream, whether all co-linear brick boundaries form tile row boundaries. For example, a flag may be used in bitstream syntax.

- если все находящиеся на одной линии границы кирпичей не образуют границы строк тайлов, кодер указывает, в битовом потоке или вместе с ним, и/или декодер декодирует, из битового потока или вместе с ним, является ли эта граница границей строк тайлов. К примеру, в синтаксисе битового потока может присутствовать флаг для каждой границы находящихся на одной линии кирпичей (за исключением находящихся на одной линии границ кирпичей, которые являются границами изображения).- if all brick boundaries on the same line do not form tile row boundaries, the encoder indicates, in or with the bitstream, and/or the decoder decodes, from or with the bitstream, whether this boundary is a tile row boundary. For example, in the bitstream syntax, there may be a flag for each boundary of the bricks that are in line (with the exception of the boundaries of the bricks that are in line, which are the boundaries of the image).

[0231] Например, может использоваться следующий синтаксис:[0231] For example, the following syntax may be used:

Figure 00000030
Figure 00000030

[0232] Значение NumAlignedBrickRows может быть вычислено аналогично NumTileRows в других вариантах осуществления настоящего изобретения.[0232] The value of NumAlignedBrickRows can be calculated similarly to NumTileRows in other embodiments of the present invention.

[0233] Семантика представленных синтаксических элементов может быть определена описанным ниже образом.[0233] The semantics of the presented syntax elements can be determined as described below.

[0234] Флаг explicit_tile_rows_flag, равный 0, определяет, что границу строк тайлов логически получают всякий раз, когда горизонтальные границы кирпичей находятся на одной линии на протяжении изображения. Флаг explicit_tile_rows_flag, равный 1, определяет, что присутствует синтаксический элемент tile_row_flag[i].[0234] The flag explicit_tile_rows_flag equal to 0 specifies that a tile row boundary is logically obtained whenever the horizontal brick boundaries are in line throughout the image. An explicit_tile_rows_flag flag of 1 specifies that the tile_row_flag[i] syntax element is present.

[0235] Флаг tile_row_flag[i], равный 0, определяет, что i-я горизонтальная граница, где горизонтальные границы кирпичей находятся на одной линии по ширине изображения, не является границей строк тайлов. Флаг tile_row_flag[i], равный 1, определяет, что i-я горизонтальная граница, где горизонтальные границы кирпичей находятся на одной линии по ширине изображения, является границей строк тайлов. 0-я горизонтальная граница, где горизонтальные границы кирпичей находятся на одной линии по ширине изображения, является верхней границей изображения.[0235] The flag tile_row_flag[i] equal to 0 specifies that the i-th horizontal border, where the horizontal borders of the bricks are on the same line across the width of the image, is not a tile row border. The tile_row_flag[i] flag equal to 1 specifies that the i-th horizontal border, where the horizontal borders of the bricks are on the same line across the width of the image, is a tile row border. The 0th horizontal border, where the horizontal borders of the bricks are on the same line across the width of the image, is the top border of the image.

Указание столбцов тайлов. идентично разбиваемых на кирпичиSpecifying tile columns. identically broken into bricks

[0236] В некоторых из примеров осуществления настоящего изобретения синтаксис включает указание на то, что столбец тайлов разбивают на кирпичи идентично предыдущему столбцу тайлов, в порядке входа цикла (например, сканирование столбцов тайлов слева направо). Нужно понимать, что варианты осуществления настоящего изобретения могут быть равноценно применимы без такого указания или с любым аналогичным указанием. К примеру, сканирование столбцов тайлов может выполняться слева направо, и, следовательно, может быть указано, что разбиение на кирпичи текущего столбца тайлов должно быть скопировано из столбца тайлов справа. В другом примере может быть указано, или логически определено, что все столбцы тайлов равной ширины имеют одинаковое разбиение на кирпичи. В еще одном из примеров указывают порядковый номер столбца тайлов, из которого должно быть скопировано разбиение на кирпичи. Нужно также понимать, что могут равноценно применяться варианты осуществления настоящего изобретения, в которых используют другие методы заключения о разбиении столбца тайлов на кирпичи на основе предшествующих указаний. В настоящем разделе представлены некоторые из соответствующих вариантов осуществления изобретения.[0236] In some of the embodiments of the present invention, the syntax includes indicating that the tile column is bricked identically to the previous tile column, in loop entry order (eg, scanning the tile columns from left to right). It is to be understood that embodiments of the present invention may be equally applicable without such indication or with any similar indication. For example, scanning of tile columns can be performed from left to right, and therefore it can be specified that the bricking of the current tile column should be copied from the tile column on the right. In another example, it may be specified, or logically determined, that all columns of tiles of equal width have the same bricking. In yet another example, the ordinal number of the tile column from which the bricking should be copied is specified. It should also be understood that embodiments of the present invention that use other methods of inferring the bricking of a column of tiles into bricks based on the foregoing indications can be equally applied. This section presents some of the relevant embodiments of the invention.

[0237] В одном из вариантов осуществления настоящего изобретения кодер указывает, в битовом потоке или вместе с ним, и/или декодер декодирует, из битового потока или вместе с ним, имеют ли все столбцы тайлов, имеющие одинаковую ширину (например, в СТВ), одинаковое разбиение на кирпичи. К примеру, может использоваться синтаксический элемент с именем same_brick_spacing_in_equally_wide_tile_cols_flag.[0237] In one embodiment of the present invention, the encoder indicates, in or with the bitstream, and/or the decoder decodes, from or with the bitstream, whether all tile columns have the same width (e.g., in CTB) , the same partition into bricks. For example, a syntax element named same_brick_spacing_in_equally_wide_tile_cols_flag could be used.

[0238] В одном из вариантов осуществления настоящего изобретения кодер указывает, в битовом потоке или вместе с ним, и/или декодер декодирует, из битового потока или вместе с ним, количество смежных столбцов тайлов, в порядке входа цикла (например, сканирование столбцов тайлов слева направо), имеющих одинаковое разбиение на кирпичи. Например, синтаксический элемент с именем num_tile_cols_with_same_brick_partitioning_minus1[i], может быть кодирован в формате u(v), где v определяется количеством оставшихся столбцов тайлов, для которых разбиение на кирпичи еще не указано.[0238] In one embodiment of the present invention, the encoder indicates, in or with the bitstream, and/or the decoder decodes, from or with the bitstream, the number of contiguous tile columns, in loop entry order (e.g., tile column scan from left to right) having the same partition into bricks. For example, a syntax element named num_tile_cols_with_same_brick_partitioning_minus1[i] could be encoded in the format u(v), where v is the number of remaining tile columns for which no bricking has yet been specified.

[0239] В одном из вариантов осуществления настоящего изобретения кодер может указывать, в битовом потоке или вместе с ним, и/или декодер может декодировать, из битового потока или вместе с ним, присутствуют ли синтаксические элементы, относящиеся к указанию на то, что столбцы тайлов идентично разбивают на кирпичи (например, флаг copy_previous_col_flag[i]). В одном из вариантов осуществления настоящего изобретения такое указание находится в синтаксической структуре на уровне последовательности, например, в SPS. В еще одном из вариантов осуществления настоящего изобретения такое указание может находиться в синтаксической структуре на уровне изображения, например, в PPS. В одном из вариантов осуществления настоящего изобретения может быть заранее задано, например, в стандарте кодирования, что отсутствие синтаксических элементов, относящихся к указанию на то, что столбцы тайлов идентично разбивают на кирпичи, может вызывать указание и/или декодирование разбиения на кирпичи для всех столбцов тайлов по отдельности. В одном из вариантов осуществления настоящего изобретения может быть заранее задано, например, в стандарте кодирования, что отсутствие синтаксических элементов, относящихся к указанию на то, что столбцы тайлов идентично разбивают на кирпичи, может вызывать указание и/или декодирование разбиения на кирпичи для одного столбца тайлов и логическое заключение о том, что оно такое же для всех столбцов тайлов. В одном из вариантов осуществления настоящего изобретения способ обработки отсутствия синтаксических элементов, относящихся к указанию на то, что столбцы тайлов идентично разбивают на кирпичи, указывает кодер, в битовом потоке или вместе с ним, например, в SPS, и/или декодирует декодер, из битового потока или вместе с ним, например, из SPS. Упомянутый способ может быть указан и/или декодирован в составе заранее заданного набора процедур, который может включать, без ограничения перечисленным: i) указание и/или декодирование разбиения на кирпичи для всех столбцов тайлов по отдельности, и ii) указание и/или декодирование разбиения на кирпичи для одного столбца тайлов и логическое заключение о том, что оно является одинаковым для всех столбцов тайлов.[0239] In one of the embodiments of the present invention, the encoder may indicate, in or with the bitstream, and/or the decoder may decode, from or with the bitstream, whether there are syntax elements related to indicating that the columns tiles are bricked identically (for example, the copy_previous_col_flag[i] flag). In one of the embodiments of the present invention, such an indication is in the syntactic structure at the sequence level, for example, in the SPS. In another of the embodiments of the present invention, such an indication may be in the syntactic structure at the image level, for example, in the PPS. In one embodiment of the present invention, it may be predetermined, for example in an encoding standard, that the absence of syntax elements relating to indicating that columns of tiles are bricked identically may cause bricking to be indicated and/or decoded for all columns. tiles separately. In one of the embodiments of the present invention, it may be predetermined, for example, in an encoding standard, that the absence of syntax elements related to indicating that columns of tiles are identically bricked may cause bricking to be indicated and/or decoded for one column. tiles and the logical conclusion that it is the same for all columns of tiles. In one embodiment of the present invention, a method for handling the absence of syntax elements related to indicating that columns of tiles are identically bricked, indicates an encoder, in or with a bitstream, for example, in an SPS, and/or decodes a decoder, from bit stream or together with it, for example, from SPS. Said method may be specified and/or decoded as part of a predetermined set of procedures, which may include, but is not limited to: i) specifying and/or decoding the bricking for all columns of tiles individually, and ii) specifying and/or decoding the bricking on bricks for one column of tiles and the logical conclusion that it is the same for all columns of tiles.

[0240] В некоторых из вариантов осуществления настоящего изобретения определяют, или логически получают, количество блоков, подлежащих назначению в разделы. Количество блоков может быть, например, количеством столбцов CTU в изображении, количеством строк CTU в изображении или количеством строк CTU в тайле. При декодировании количество блоков, подлежащих назначению в разделы, может быть декодировано из SPS и/или PPS. В некоторых из вариантов осуществления настоящего изобретения может быть желательным исключение зависимостей анализа между синтаксическими структурами, и все синтаксические элементы, достаточные для логического определения количества блоков, включают в одну синтаксическую структуру, например, в PPS. К примеру, в PPS могут быть включены ширина изображения в отсчетах яркости, высота изображения в отсчетах яркости и размер CTU, что позволяет логически получать количество столбцов CTU в изображении и количество строк CTU в изображении.[0240] In some of the embodiments of the present invention, the number of blocks to be assigned to sections is determined, or logically obtained. The number of blocks can be, for example, the number of CTU columns in a picture, the number of CTU rows in a picture, or the number of CTU rows in a tile. When decoding, the number of blocks to be assigned to partitions may be decoded from the SPS and/or PPS. In some of the embodiments of the present invention, it may be desirable to eliminate parsing dependencies between syntax structures, and all syntax elements sufficient to logically determine the number of blocks are included in one syntax structure, for example, in a PPS. For example, the PPS can include image width in luminance samples, image height in luminance samples, and CTU size, which makes it possible to logically obtain the number of CTU columns in the image and the number of CTU rows in the image.

[0241] Например, в PPS может быть включен синтаксический элемент log2_pps_ctu_size_minus5, кодированный в формате u(2). Значение log2_pps_ctu_size_minus5 плюс 5 определяет размер блока кодового дерева в каждом из CTU. Значение log2_pps_ctu_size_minus5, равное 0, 1 или 2, определяет, что размер блока кодового дерева яркости в каждом CTU равен 32×32, 64×64 или 128×128 отсчетов яркости соответственно. Может предъявляться требование, чтобы значение log2_pps_ctu_size_minus5 было меньше или равным 2. Может предъявляться требование, чтобы значение log2_pps_ctu_size_minus5, равное log2_ctu_size_minus5, было указано в SPS.[0241] For example, the u(2) encoded syntax element log2_pps_ctu_size_minus5 may be included in the PPS. The value of log2_pps_ctu_size_minus5 plus 5 determines the size of the code tree block in each of the CTUs. A log2_pps_ctu_size_minus5 value of 0, 1, or 2 specifies that the luminance code tree block size in each CTU is 32x32, 64x64, or 128x128 luma samples, respectively. A log2_pps_ctu_size_minus5 value may be required to be less than or equal to 2. A log2_pps_ctu_size_minus5 value of log2_ctu_size_minus5 may be required to be specified in the SPS.

Указание разбиения на субизображенияSpecifying split into sub-images

[0242] Следует отметить, что многие из рассмотренных вариантов осуществления изобретения для указания разбиения на слайсы, тайлы и/или кирпичи, не зависит от метода указания субизображений. В настоящем разделе представлены варианты осуществления настоящего изобретения для указания и/или декодирования разбиения изображения на субизображения. Многие из вариантов осуществления настоящего изобретения в данном разделе могут использоваться независимо от других вариантов осуществления изобретения, например, для указания разбиения на слайсы, тайлы и/или кирпичи, однако это не является обязательным.[0242] It should be noted that many of the considered embodiments of the invention for indicating a partition into slices, tiles and / or bricks, does not depend on the method of specifying sub-images. This section presents embodiments of the present invention for specifying and/or decoding the partitioning of an image into sub-images. Many of the embodiments of the present invention in this section can be used independently of other embodiments of the invention, for example, to indicate a partition into slices, tiles and/or bricks, however this is not required.

[0243] В соответствии с одним из вариантов осуществления настоящего изобретения сетку, используемую при сигнализации разбиения на субизображения, указывают, в битовом потоке или вместе с ним (например, в SPS), или декодируют, из битового потока или вместе с ним (например, из SPS). Ячейки этой сетки определяют блоки, в соответствии с которыми сигнализируют границы субизображений. То есть, граница субизображения может находиться только на границе указанной сетки.[0243] In accordance with one embodiment of the present invention, the grid used in sub-picture split signaling is indicated in or with a bitstream (e.g., in SPS), or decoded, from or in conjunction with a bitstream (e.g., from SPS). The cells of this grid define the blocks according to which the boundaries of the sub-images are signaled. That is, the border of the sub-image can only be on the border of the specified grid.

[0244] В соответствии с одним из вариантов осуществления настоящего изобретения сетку указывают и/или декодируют, используя CTU в качестве элементарной единицы (или аналогичные элементарные блоки кодирования в кодеке).[0244] In accordance with one embodiment of the present invention, the grid is indicated and/or decoded using the CTU as the elementary unit (or similar elementary coding units in the codec).

[0245] В соответствии с одним из вариантов осуществления настоящего изобретения сигнализация включает указание информации о количестве столбцов сетки, количестве строк сетки, ширин столбцов сетки (например, измеряемое в числе CTU) и высот строк сетки (например, измеряемое в числе CTU). Например, может использоваться следующий синтаксис:[0245] In accordance with one embodiment of the present invention, signaling includes indicating information about the number of grid columns, the number of grid rows, grid column widths (eg, measured in CTU counts), and grid row heights (eg, measured in CTU counts). For example, the following syntax might be used:

Figure 00000031
Figure 00000031

Figure 00000032
Figure 00000032

[0246] Значение num_Id_columns_minus1 определяет количество столбцов, на которые разбивают изображение, минус 1. Значение num_Id_rows_minus1 определяет количество строк, на которые разбивают изображение, минус 1. Значение Id_column_width_minus1[i] плюс 1 определяет ширину i-го столбца, измеряемое в блоках кодового дерева. Значение Id_row_height_minus1[i] плюс один определяет высоту i-й строки, измеряемую в блоках кодового дерева. Самый правый столбец сетки может рассматриваться как состоящий из столбцов блоков кодового дерева, не назначенных в остальные столбцы сетки. Самая нижняя строка сетки может рассматриваться как состоящая из блоков кодового дерева, не назначенных в остальные строки сетки.[0246] The value of num_Id_columns_minus1 specifies the number of columns into which the image is split, minus 1. The value of num_Id_rows_minus1 specifies the number of rows into which the image is split, minus 1. The value of Id_column_width_minus1[i] plus 1 specifies the width of the i-th column, measured in code tree blocks . The value of Id_row_height_minus1[i] plus one determines the height of the i-th row, measured in blocks of the code tree. The rightmost grid column can be thought of as consisting of code tree block columns not assigned to other grid columns. The bottommost grid row can be considered to consist of code tree blocks not assigned to the remaining grid rows.

[0247] В соответствии с еще одним из примеров, может использоваться следующий синтаксис:[0247] According to yet another example, the following syntax may be used:

Figure 00000033
Figure 00000033

[0248] Когда применяют описанную выше сигнализацию, все столбцы сетки имеют равную ширину, за исключением, возможно, самого правого столбца сетки, который может рассматриваться как состоящий из столбцов блоков кодового дерева, не назначенных в остальные столбцы сетки. Аналогично, все строки сетки могут иметь равную высоту, за исключением, возможно, самой нижней строки сетки, которая может рассматриваться как состоящая из блоков кодового дерева, не назначенных в остальные строки сетки. Значение Id_column_width_minus1 плюс 1 определяет ширину столбцов сетки, измеряемую в блоках кодового дерева. Значение Id_row_height_minus1 плюс один определяет высоту строк сетки, измеряемую в блоках кодового дерева.[0248] When the signaling described above is applied, all grid columns are of equal width, except possibly the rightmost grid column, which can be considered to be composed of code tree block columns not assigned to other grid columns. Likewise, all grid lines may be of equal height, except possibly for the bottommost grid line, which may be considered to be composed of code tree blocks not assigned to other grid lines. The value of Id_column_width_minus1 plus 1 specifies the width of the grid columns, measured in code tree blocks. The value of Id_row_height_minus1 plus one determines the height of the grid rows, measured in code tree blocks.

[0249] В соответствии с одним из вариантов осуществления настоящего назначение ячеек сетки в субизображения указывают, в битовом потоке или вместе с ним (например, в SPS), и/или декодируют, из битового потока или вместе с ним (например, из SPS).[0249] In accordance with one of the embodiments of the present assignment of grid cells to sub-images indicate, in or along with the bitstream (for example, in SPS), and / or decode, from or along with the bitstream (for example, from SPS) .

[0250] В одном из вариантов осуществления настоящего изобретения назначение ячеек сетки в субизображения указывают с помощью и/или декодируют из порядкового номера нижней правой ячейки сетки для каждого субизображения (возможно, помимо последнего субизображения, для которого нижняя правая ячейка соты может считаться нижней правой ячейкой всей сетки). К примеру, может использоваться следующий синтаксис, или аналогичный ему (который может быть добавлен после любого рассмотренного выше, или аналогичного, синтаксиса):[0250] In one embodiment of the present invention, the assignment of grid cells to sub-pictures is indicated by and/or decoded from the lower right grid cell sequence number for each sub-picture (perhaps other than the last sub-picture, for which the lower right cell of a cell can be considered the lower right cell the entire grid). For example, the following syntax, or a similar one (which can be added after any of the above or similar syntaxes) may be used:

Figure 00000034
Figure 00000034

Значение num_subpics_minus2 плюс два определяет количество субизображений в изображении. Значение bottom_right_grid_idx_length-minus1 плюс один определяет количество битов, используемых для представления синтаксического элемента bottom right_grid_idx_delta[i]. Значение bottom right_grid_idx_delta[i], когда i больше 0, определяет разность между порядковым номером ячейки сетки, расположенной в правом нижнем углу i-го субизображения, и порядковым номером ячейки сетки в правом нижнем углу (i - 1)-го субизображения. Значение bottom_right_grid_idx delta[0] определяет порядковый номер ячейки в правом нижнем углу 0-го субизображения. Правый нижний угол последнего субизображения считают правой нижней ячейкой сетки. Флаг grid_idx_delta_sign_flag[i], равный 1, указывает на положительный знак bottom_right_grid_idx_delta[i]. Флаг sign_bottom_right_grid_idx_delta[i], равный 0, указывает на отрицательный знак bottom_right_grid_idx_delta[i]. Переменные NumGridRows, NumGridCols и NumGridCellsInPic могут быть логически определены равными количествам строк сетки, столбцов сетки и ячеек сетки в изображении, соответственно. Переменные TopLeftGridIdx[i], BottomRightGridIdx[i], NumGridCellsInSubpic[i] и GridCellsToSubpicMap[j], которые определяют порядковый номер ячейки сетки, расположенной в верхнем левом углу i-го субизображения, порядковый номер ячейки сетки, расположенной в правом нижнем углу i-го субизображения, количество ячеек сетки в i-м субизображении и соответствие ячеек сетки субизображениям, вычисляют следующим образом:The value num_subpics_minus2 plus two determines the number of sub-images in the image. The value of bottom_right_grid_idx_length-minus1 plus one determines the number of bits used to represent the bottom right_grid_idx_delta[i] syntax element. The bottom right_grid_idx_delta[i] value, when i is greater than 0, defines the difference between the grid cell number located in the lower right corner of the i-th subimage and the grid cell number in the lower right corner of the (i - 1)th subimage. The bottom_right_grid_idx delta[0] value defines the ordinal number of the cell in the lower right corner of the 0th subimage. The lower right corner of the last sub-image is considered the lower right grid cell. A grid_idx_delta_sign_flag[i] flag of 1 indicates a positive bottom_right_grid_idx_delta[i] sign. The sign_bottom_right_grid_idx_delta[i] flag of 0 indicates the negative sign of bottom_right_grid_idx_delta[i]. The variables NumGridRows, NumGridCols, and NumGridCellsInPic can be logically defined to equal the number of grid rows, grid columns, and grid cells in the image, respectively. Variables TopLeftGridIdx[i], BottomRightGridIdx[i], NumGridCellsInSubpic[i] and GridCellsToSubpicMap[j], which determine the ordinal number of the grid cell located in the upper left corner of the i-th subimage, the ordinal number of the grid cell located in the lower right corner of i- th sub-image, the number of grid cells in the i-th sub-image, and the correspondence of grid cells to sub-images are calculated as follows:

Figure 00000035
Figure 00000035

Указание разбиения на тайлы как дополнительного деления разбиения на субизображенияSpecifying a tiling as an additional division of a sub-image tiling

[0251] В соответствии с одним из вариантов осуществления настоящего изобретения, который может применяться совместно с другими вариантами изобретения или независимо от них, разбиение изображения на субизображения указывают, в битовом потоке или вместе с ним, например, в SPS, и/или декодируют, из битового потока или вместе с ним, например, из SPS, а разбиение на столбцы тайлов, строки тайлов и/или кирпичи указывают, в битовом потоке или вместе с ним, например в PPS, и/или декодируют, из битового потока или вместе с ним, например из PPS, на основе разбиения на субизображения.[0251] In accordance with one of the embodiments of the present invention, which can be used in conjunction with other variants of the invention or independently, the division of an image into sub-images is indicated, in or together with a bitstream, for example, in SPS, and / or decoded, from the bitstream or together with it, for example, from SPS, and the partitioning into columns of tiles, rows of tiles and / or bricks indicate, in or together with the bitstream, for example in PPS, and / or decode, from the bitstream or together with them, for example from PPS, on the basis of splitting into sub-images.

[0252] В соответствии с одним из вариантов осуществления настоящего изобретения кодер указывает границы столбцов тайлов, в битовом потоке или вместе с ним, и/или декодер декодирует границы столбцов тайлов, из битового потока или вместе с ним, описанным ниже образом. Поскольку вертикальные границы прямоугольных слайсов совпадают с границами столбцов тайлов и поскольку субизображения состоят из одного или нескольких полных прямоугольных слайсов, можно сделать вывод, что граница столбцов тайлов совпадает с вертикальной границей субизображения. Таким образом, вертикальные границы субизображений получают (например, в кодере) или декодируют (например, в декодере), и делают вывод, что они являются границами столбцов тайлов. Кроме того, кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, существуют ли дополнительные границы столбцов тайлов (в дополнение к тем, о которых был сделан вывод на основе вертикальных границ субизображения). К примеру, флаг tile_col_splitting_present_flag может быть указан, в битовом потоке или вместе с ним, (например, кодером) и/или декодирован, из битового потока или вместе с ним (например, декодером). Флаг tile_col_splitting_present_flag, равный 0, определяет, что границы столбцов тайлов идентичны полученным или декодированным вертикальным границам субизображений. Флаг tile_col_splitting_present_flag, равный 1, определяет, что есть дополнительные столбцы тайлов в дополнение к столбцам, о которых был сделан вывод на основе вертикальных границ субизображений.[0252] In accordance with one embodiment of the present invention, an encoder indicates tile-column boundaries, in or with the bitstream, and/or a decoder decodes tile-column boundaries, from or with the bitstream, as described below. Since the vertical borders of the rectangular slices coincide with the borders of the tile columns, and since the subimages consist of one or more complete rectangular slices, it can be concluded that the border of the tile columns coincides with the vertical border of the subimage. Thus, the vertical boundaries of the sub-images are received (eg, at an encoder) or decoded (eg, at a decoder) and inferred to be tile-column boundaries. In addition, the encoder indicates, in or with the bitstream, e.g. PPS, and/or the decoder decodes, in or out of the bitstream, e.g. PPS, whether there are additional tile column boundaries (in addition to those which have been inferred from the vertical borders of the sub-image). For example, the tile_col_splitting_present_flag flag may be specified, in or with the bitstream (eg, by an encoder) and/or decoded, from or with the bitstream (eg, by a decoder). The flag tile_col_splitting_present_flag equal to 0 specifies that the tile column boundaries are identical to the received or decoded sub-image vertical boundaries. The tile_col_splitting_present_flag flag of 1 specifies that there are additional tile columns in addition to the columns inferred from the subimage vertical borders.

[0253] В одном из вариантов осуществления настоящего изобретения, когда кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, что существуют дополнительные границы столбцов тайлов (в дополнение к тем, о которых был сделан вывод на основе вертикальных границ субизображений), применяют описанное ниже. Вертикальные границы субизображений, которые не являются границами изображения, могут быть упорядочены, например, слева направо, и пронумерованы от 0 до NumSubPicCols - 2 включительно, где NumSubPicCols - это количество отдельных вертикальных границ субизображений, которые не являются границами изображения, i-й столбец субизображений может быть определен как окаймленный слева правой границей (i-1)-го столбца субизображений, когда i больше 0, или левой границей изображения, когда i равно 0, и справа границей i-го субизображения, когда i меньше NumSubPicCols - 1, или правой границей изображения, когда i равно NumSubPicCols - 1. Кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например из PPS, разделен ли столбец субизображений на более чем один столбец тайлов. Например, флаг tile_col_split_flag[i] может быть указан, в битовом потоке или вместе с ним (например, кодером), и/или декодирован, из битового потока или вместе с ним, (например, декодером), для каждого столбца субизображений. Флаг tile_col_split_flag[i], равный 0, указывает, что i-й столбец субизображений состоит ровно из одного столбца тайлов. Флаг tile_col_split_flag [i], равный 1, указывает, что i-й столбец субизображений состоит более чем из одного столбца тайлов.[0253] In one embodiment of the present invention, when an encoder indicates, in or with a bitstream, such as in a PPS, and/or a decoder decodes, in or with a bitstream, such as in a PPS, that there are additional tile column borders (in addition to those inferred from sub-image vertical borders) apply as described below. The vertical borders of sub-images that are not image borders may be ordered, for example, from left to right, and numbered from 0 to NumSubPicCols - 2 inclusive, where NumSubPicCols is the number of individual vertical borders of sub-images that are not image borders, i-th column of sub-images may be defined as bordered on the left by the right border of the (i-1)th sub-image column when i is greater than 0, or by the left border of the image when i is 0, and to the right by the border of the i-th sub-image when i is less than NumSubPicCols - 1, or by the right boundary of the picture when i is equal to NumSubPicCols - 1. The encoder indicates, in or with the bitstream, for example in PPS, and/or the decoder decodes, in or with the bitstream, for example in PPS, whether the sub-picture column is divided into more than one column of tiles. For example, the tile_col_split_flag[i] flag may be specified, in or along with the bitstream (eg, by an encoder), and/or decoded, from or along with the bitstream (eg, by a decoder), for each subimage column. A tile_col_split_flag[i] flag of 0 indicates that the i-th subimage column consists of exactly one tile column. A tile_col_split_flag [i] flag of 1 indicates that the i-th sub-image column consists of more than one tile column.

[0254] В одном из вариантов осуществления настоящего изобретения, когда кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, что столбец субизображений разделен более чем на один столбец тайлов, столбцы тайлов в столбце субизображений указывают аналогично проекту стандарта VVC или любому из рассмотренных вариантов осуществления настоящего изобретения. Например, кодер может указывать, в битовом потоке или вместе с ним, и/или декодер может декодировать, из битового потока или вместе с ним, синтаксический элемент, указывающий на количество столбцов тайлов в столбце субизображений. К примеру, может использоваться синтаксический элемент num_tile_cols_minus2[i], при этом значение num_tile_cols_minus2 [i] плюс 2 определяет количество столбцов тайлов в i-м столбце субизображений. Ширину каждого столбца тайлов в столбце субизображений указывают, в битовом потоке или вместе с ним, и/или декодируют, из битового потока или вместе с ним (за исключением последнего столбца тайлов в столбце субизображений, ширина которого может быть логически определена как содержащая всю оставшуюся, еще нераспределенную область субизображения). К примеру, может использоваться элемент tile_col_width_minus1[i][j], при этом значение tile_col_width_minus1[i][j] плюс 1 определяет ширину]-го столбца тайлов в i-м столбце субизображений, измеряемую в CTU.[0254] In one embodiment of the present invention, when the encoder indicates, in or with the bitstream, such as in the PPS, and/or the decoder decodes, in or with the bitstream, such as in the PPS, that the sub-image column divided into more than one tile column, the tile columns in the sub-image column are indicated similarly to the draft VVC standard or any of the considered embodiments of the present invention. For example, an encoder may indicate, in or with the bitstream, and/or a decoder may decode, with or with the bitstream, a syntax element indicating the number of tile columns in a sub-image column. For example, the syntax element num_tile_cols_minus2[i] can be used, with the value num_tile_cols_minus2 [i] plus 2 specifying the number of tile columns in the i-th subimage column. The width of each tile column in a sub-image column is indicated, in or with the bitstream, and/or decoded, from or with the bitstream (with the exception of the last tile column in the sub-image column, whose width can be logically determined to contain all the remaining, as yet unallocated sub-image area). For example, the element tile_col_width_minus1[i][j] may be used, with the value tile_col_width_minus1[i][j] plus 1 specifying the width of the]-th column of tiles in the i-th column of sub-images measured in CTU.

[0255] В рассмотренных выше вариантах осуществления настоящего изобретения может применяться, например, следующий синтаксис, или аналогичный ему:[0255] In the above embodiments of the present invention, for example, the following syntax, or similar to it, can be used:

Figure 00000036
Figure 00000036

[0256] В соответствии с одним из вариантов осуществления настоящего изобретения кодер указывает границы строк тайлов, в битовом потоке или вместе с ним, и/или декодер декодирует границы строк тайлов, из битового потока или вместе с ним, описанным ниже образом. Горизонтальная граница субизображения может совпадать либо с границей строки тайлов, либо с границей кирпича внутри тайла. Таким образом, горизонтальные границы субизображения получают (например, в кодере) или декодируют (например, в декодере), и делают вывод, что они являются границами либо строки тайлов, либо границами кирпича.[0256] In accordance with one embodiment of the present invention, an encoder indicates tile line boundaries, in or with a bitstream, and/or a decoder decodes tile line boundaries, from or with a bitstream, as described below. The horizontal border of a subimage can match either the border of a row of tiles, or the border of a brick within a tile. Thus, the horizontal boundaries of the sub-image are received (eg, at the encoder) or decoded (eg, at the decoder) and inferred to be either a tile-row or a brick boundary.

[0257] В одном из вариантов осуществления настоящего изобретения, когда кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, совпадают ли границы строк тайлов один в один с горизонтальными границами субизображения (и наоборот), или есть дополнительные границы строк тайлов, или некоторые горизонтальные границы субизображения являются границами кирпичей внутри тайла (или тайлов). К примеру, флаг tile_row_splitting_present_flag может быть указан, в битовом потоке или вместе с ним, (например, кодером) и/или декодирован, из битового потока или вместе с ним (например, декодером). Флаг tile_row_splitting_present_flag, равный 0, определяет, что границы строк тайлов идентичны полученным или декодированным горизонтальным границам субизображения. Флаг tile_row_splitting_present_flag, равный 1, определяет, что существуют дополнительные строки тайлов, в дополнение к тем, о которых был сделан вывод на основе горизонтальных границ субизображения, или что некоторые из горизонтальных границ субизображения являются границами кирпича тайла (или тайлов).[0257] In one embodiment of the present invention, when the encoder indicates, in or with the bitstream, for example, in PPS, and / or the decoder decodes, from or with the bitstream, for example, from PPS, whether the boundaries match tile lines are one to one with horizontal subimage borders (and vice versa), or there are additional tileline borders, or some horizontal subimage borders are brick borders within a tile (or tiles). For example, the tile_row_splitting_present_flag flag may be specified, in or with the bitstream (eg, by an encoder) and/or decoded, from or with the bitstream (eg, by a decoder). The tile_row_splitting_present_flag flag of 0 specifies that the tile row boundaries are identical to the received or decoded horizontal sub-image boundaries. The tile_row_splitting_present_flag flag of 1 specifies that there are additional tile rows in addition to those inferred from the subimage's horizontal boundaries, or that some of the subimage's horizontal boundaries are brick tile (or tiles) boundaries.

[0258] В одном из вариантов осуществления настоящего изобретения, когда кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, что существуют дополнительные границы строк тайлов (в дополнение к тем, о которых был сделан вывод на основе горизонтальных границ субизображения), или что некоторые из горизонтальных границ субизображений являются границами кирпичей внутри тайла (или тайлов), применяют описанное ниже. Горизонтальные границы субизображений, которые не являются границами изображения, могут быть упорядочены, например, сверху вниз, и пронумерованы от 0 до NumSubPicRows - 2 включительно, где NumSubPicRows - это количество отдельных горизонтальных границ субизображения, не являющихся границами изображения, i-ая строка субизображений может быть определена как окаймленная сверху нижней границей (i-1)-oft строки субизображений, когда i больше 0, или верхней границей изображения, когда i равно 0, и снизу границей i-го субизображения, когда i меньше NumSubPicRows - 1, или нижней границей изображения, когда i равно NumSubPicRows - 1. Кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например из PPS, является ли граница строки субизображений границей строки тайлов или границей кирпича. Например, флаг tile_row_flag[i] может быть указан, в битовом потоке или вместе с ним (например, кодером), и/или декодирован, из битового потока или вместе с ним, (например, декодером), для каждого столбца субизображений. Флаг tile_row_flag[i], равный 0, определяет, что граница i-й строки субизображений является границей кирпича внутри тайла (или тайлов). Флаг tile_row_flag[i], равный 1, определяет, что граница i-й строки субизображений является границей строки тайлов. Кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, содержит ли строка субизображений данные для более чем одной строки тайлов. Например, флаг tile_row_split_flag[i] может быть указан, в битовом потоке или вместе с ним (например, кодером), и/или декодирован, из битового потока или вместе с ним (например, декодером), для каждой строки субизображений. Флаг tile_row_split_flag [i], равный 0, определяет, что i-я строка субизображений содержит данные для одной строки тайлов. Флаг tile_row_split_flag[i], равный 1, определяет, что i-я строка субизображений содержит данные более чем для одной строки тайлов.[0258] In one embodiment of the present invention, when an encoder indicates, in or with a bitstream, such as a PPS, and/or a decoder decodes, from or with a bitstream, such as a PPS, that there are additional the boundaries of the rows of tiles (in addition to those inferred from the horizontal boundaries of the sub-image), or that some of the horizontal boundaries of the sub-images are the boundaries of bricks within a tile (or tiles), apply as described below. The horizontal sub-image borders that are not image borders may be ordered, for example, from top to bottom, and numbered from 0 to NumSubPicRows - 2 inclusive, where NumSubPicRows is the number of individual horizontal sub-image borders that are not image borders, the i-th row of sub-images can be defined as bordered at the top by the bottom border of (i-1)-oft the sub-image row when i is greater than 0, or by the top border of the image when i is 0, and from the bottom by the border of the i-th sub-image when i is less than NumSubPicRows - 1, or by the bottom border images when i is equal to NumSubPicRows - 1. The encoder indicates, in or along with the bitstream, for example, in PPS, and/or the decoder decodes, from or together with the bitstream, for example, in PPS, whether the sub-picture line boundary is a line boundary tiles or brick border. For example, the tile_row_flag[i] flag may be specified, in or with the bitstream (eg, by an encoder), and/or decoded, from or with the bitstream (eg, by a decoder), for each sub-image column. The flag tile_row_flag[i] equal to 0 specifies that the boundary of the i-th row of subimages is the boundary of a brick within a tile (or tiles). The flag tile_row_flag[i] equal to 1 specifies that the boundary of the i-th row of sub-images is the boundary of a row of tiles. The encoder indicates, in or with the bitstream, eg in PPS, and/or the decoder decodes, in or with the bitstream, eg in PPS, whether the sub-image row contains data for more than one tile row. For example, the flag tile_row_split_flag[i] may be specified, in or along with the bitstream (eg, by an encoder), and/or decoded, from or along with the bitstream (eg, by a decoder), for each row of subimages. The tile_row_split_flag [i] flag equal to 0 specifies that the i-th subimage row contains data for one tile row. The tile_row_split_flag[i] flag equal to 1 specifies that the i-th subimage row contains data for more than one tile row.

[0259] В одном из вариантов осуществления настоящего изобретения, когда кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, что строка субизображений содержит данные более чем для одной строки тайлов, строки тайлов в строке субизображений указывают аналогично проекту стандарта VVC или любому из рассмотренных вариантов осуществления настоящего изобретения. Например, кодер может указывать, в битовом потоке или вместе с ним, и/или декодер может декодировать, из битового потока или вместе с ним, синтаксический элемент, указывающий на количество границ строк тайлов в строке субизображений. Например, может применяться синтаксический элемент num_tile_rows_minus2[i], при этом значение num_tile_rows_minus2 [i] плюс 2 определяет количество границ строк тайлов в i-й строке субизображений. Высоту каждой строки тайлов в строке субизображений указывают, в битовом потоке или вместе с ним, и/или декодируют, из битового потока или вместе с ним (за исключением последней строки тайлов в строке субизображений, высота которой может быть логически определена как содержащая всю оставшуюся, еще нераспределенную область до следующей границы строки тайлов в следующей строке (или строках) субизображений, в зависимости от значения tile_row_flag[j], где j больше i). Например, может использоваться элемент tile_row_height_minus1[i][j], при этом значение tile_row_height_minus1[i][j] плюс 1 определяет высоту j-й строки тайлов в i-й строке субизображений, измеряемую в CTU.[0259] In one embodiment of the present invention, when the encoder indicates, in or along with the bitstream, for example, in PPS, and/or the decoder decodes, from or in conjunction with the bitstream, for example, from PPS, that the sub-image string contains data for more than one tile row, the tile rows in the sub-image row are indicated similarly to the draft VVC standard or any of the considered embodiments of the present invention. For example, the encoder may indicate, in or with the bitstream, and/or the decoder may decode, with or with the bitstream, a syntax element indicating the number of tile line boundaries in the subimage line. For example, the syntax element num_tile_rows_minus2[i] may be used, with the value num_tile_rows_minus2 [i] plus 2 specifying the number of tile row borders in the i-th subimage row. The height of each tile row in the sub-image row is indicated, in or with the bitstream, and/or decoded, from or with the bitstream (except for the last tile row in the sub-image row, whose height can be logically determined to contain all the remaining, the yet unallocated area up to the next tile row boundary in the next row (or rows) of subimages, depending on the value of tile_row_flag[j], where j is greater than i). For example, the element tile_row_height_minus1[i][j] may be used, with the value tile_row_height_minus1[i][j] plus 1 specifying the height of the j-th row of tiles in the i-th row of sub-images, measured in CTU.

[0260] В рассмотренных выше вариантах осуществления настоящего изобретения может применяться, например, следующий синтаксис, или аналогичный ему:[0260] In the above embodiments of the present invention, for example, the following syntax, or similar to it, can be used:

Figure 00000037
Figure 00000037

Figure 00000038
Figure 00000038

[0261] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования и/или декодирования, когда граница субизображения не совпадает с границей строки тайлов, логически заключают, что граница субизображения совпадает с границей кирпича. Кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, существуют ли дополнительные кирпичи (в дополнение к тем, о которых был сделан вывод на основе границ субизображения). К примеру, флаг brick_splitting_present_flag может быть указан, в битовом потоке или вместе с ним (например, кодером), и/или декодирован, из битового потока или вместе с ним (например, декодером). Переменную NumInferredBricksInPic задают в соответствии с количеством кирпичей, логически полученным на основе количества тайлов в указанной сетке тайлов, и дополнительного деления тайлов по логически полученным границам кирпичей. Флаг brick_splitting_present_flag, равный 0, определяет, что нет границ кирпичей, кроме тех, которые были логически определены на основе границ субизображения. Флаг brick_splitting_present_flag, равный 1, определяет, что есть границы кирпичей, которые не определены логически на основе границ субизображения (т.е. количество кирпичей больше, чем NumInferredBricksInPic).[0261] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, when the sub-image boundary does not coincide with the tile-row boundary, it is logically concluded that the sub-image boundary coincides with the brick boundary. The encoder indicates, in or with the bitstream, e.g. PPS, and/or the decoder decodes, in or with the bitstream, e.g. PPS, whether there are additional bricks (in addition to those that have been inferred based on sub-image boundaries). For example, the brick_splitting_present_flag flag may be specified, in or with the bitstream (eg, by an encoder), and/or decoded, from or with the bitstream (eg, by a decoder). The NumInferredBricksInPic variable is set according to the number of bricks, logically derived from the number of tiles in the specified grid of tiles, and an additional division of tiles along the logically derived brick boundaries. The brick_splitting_present_flag flag of 0 specifies that there are no brick boundaries other than those that have been logically determined based on the sub-image boundaries. The brick_splitting_present_flag flag of 1 specifies that there are brick boundaries that are not logically determined based on the sub-image boundaries (i.e. the number of bricks is greater than NumInferredBricksInPic).

[0262] В одном из вариантов осуществления настоящего изобретения, когда кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, что существуют границы кирпичей, которые не определены логически на основе границ субизображения, применяют описанное ниже. Логически полученные кирпичи могут быть пронумерованы в заранее заданном порядке сканирования. Кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, разделен ли логически полученный потенциальный кирпич более чем на один кирпич. К примеру, может быть указан, в битовом потоке или вместе с ним (например, кодером), и/или декодирован, из битового потока или вместе с ним (например, декодером), флаг brick_split_flag[i] для каждого логически полученного потенциального кирпича. Флаг brick_split_flag[i], равный 0, определяет, что i-й логически полученный потенциальный кирпич состоит ровно из одного кирпича. Флаг brick_split_flag[i], равный 1, определяет, что i-й логически полученный потенциальный кирпич состоит более чем из одного кирпича.[0262] In one embodiment of the present invention, when the encoder indicates, in or with the bitstream, such as in the PPS, and/or the decoder decodes, in or with the bitstream, such as in the PPS, that there are boundaries bricks that are not logically defined based on sub-image boundaries apply as described below. The logically obtained bricks can be numbered in a predetermined scan order. The encoder indicates, in or with the bitstream, eg in PPS, and/or the decoder decodes, in or with the bitstream, eg in PPS, whether the logically obtained potential brick is divided into more than one brick. For example, a brick_split_flag[i] flag may be specified, in or with the bitstream (eg, by an encoder), and/or decoded, from or with the bitstream (eg, by a decoder), for each logically derived candidate brick. The flag brick_split_flag[i] equal to 0 specifies that the i-th logically obtained potential brick consists of exactly one brick. The brick_split_flag[i] flag equal to 1 specifies that the i-th logically obtained potential brick consists of more than one brick.

[0263] В рассмотренных выше вариантах осуществления настоящего изобретения может применяться, например, следующий синтаксис, или аналогичный ему:[0263] In the above embodiments of the present invention, for example, the following syntax, or similar to it, can be used:

Figure 00000039
Figure 00000039

[0264] В одном из вариантов осуществления настоящего изобретения, когда кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например, из PPS, что логически полученный потенциальный кирпич разделен более чем на один кирпич, дальнейшее разделение логически полученного потенциального кирпича указывают, в битовом потоке или вместе с ним (например, с помощью кодера), и/или декодируют, из битового потока или вместе с ним (например, с помощью декодера) аналогично проекту стандарта VVC или любому из рассмотренных вариантов осуществления настоящего изобретения. Например, кодер может указывать, в битовом потоке или вместе с ним, и/или декодер может декодировать, из битового потока или вместе с ним, синтаксический элемент, указывающий на количество кирпичей в логически полученном потенциальном кирпиче. К примеру, может использоваться синтаксический элемент num_bricks_minus2[i], при этом значение num_bricks_minus2[i] плюс 2 определяет количество кирпичей в i-м логически полученном потенциальном кирпиче. Высоту каждого кирпича в логически полученном потенциальном кирпиче указывают, в битовом потоке или вместе с ним, и/или декодируют, из битового потока или вместе с ним (за исключением последнего кирпича в логически полученном потенциальном кирпиче, ширину которого логически получают как содержащую всю оставшуюся, нераспределенную область логически полученного потенциального кирпича). К примеру, может использоваться элемент brick_row_height_minus1[i][j] при этом значение brick_row_height_minus1[i][j] плюс 1 определяет высоту j-го кирпича в i-м логически полученном потенциальном кирпиче, измеряемую в CTU.[0264] In one of the embodiments of the present invention, when the encoder indicates, in or with the bitstream, for example, in PPS, and / or the decoder decodes, from or with the bitstream, for example, from PPS, that the logically obtained potential brick is divided into more than one brick, further division of the logically obtained potential brick is indicated, in or along with the bitstream (for example, using an encoder), and/or decoded, from or along with the bitstream (for example, using a decoder ) similar to the draft VVC standard or any of the considered embodiments of the present invention. For example, an encoder may indicate, in or with the bitstream, and/or a decoder may decode, from or with the bitstream, a syntax element indicating the number of bricks in a logically derived potential brick. For example, the syntax element num_bricks_minus2[i] can be used, with the value num_bricks_minus2[i] plus 2 specifying the number of bricks in the i-th logically obtained potential brick. The height of each brick in a logically derived potential brick is indicated, in or with the bitstream, and/or decoded, from or with the bitstream (with the exception of the last brick in the logically derived potential brick, whose width is logically derived as containing all the remaining, unallocated area of a logically obtained potential brick). For example, the element brick_row_height_minus1[i][j] can be used, while the value of brick_row_height_minus1[i][j] plus 1 determines the height of the j-th brick in the i-th logically obtained potential brick, measured in CTU.

[0265] Таким образом, синтаксис и семантика для сигнализации разбиения на тайлы и кирпичи, в соответствии с вариантами осуществления настоящего изобретения, обеспечивают значительное сокращение количества синтаксических элементов и строк синтаксиса, необходимых для реализации упомянутой сигнализации. В результате достигается значительная экономия количества битов, необходимых для указания разбиения на тайлы и кирпичи.[0265] Thus, the syntax and semantics for tiling and brick signaling, in accordance with embodiments of the present invention, provide a significant reduction in the number of syntax elements and syntax lines needed to implement said signaling. The result is a significant savings in the number of bits required to specify the tiling and bricking.

[0266] Эти преимущества проиллюстрированы на следующем примере, где три различных разбиения на тайлы и кирпичи, показанные на фиг. 9а, 9b и 9с, используются для сравнения эффективности разбиения на тайлы и кирпичи согласно версии 5 проекта VVC и разбиения на тайлы и кирпичи в соответствии с некоторыми из вариантов осуществления настоящего изобретения.[0266] These advantages are illustrated in the following example, where the three different tilings and bricks shown in FIG. 9a, 9b and 9c are used to compare the performance of tiling and bricking according to version 5 of the VVC project and tiling and bricking in accordance with some of the embodiments of the present invention.

[0267] На фиг. 10а и 10b представлены разбиения на тайлы и кирпичи, которые обеспечивают реализацию равнопрямоугольной проекции (equirectangular projection, ERP) и проекции кубической карты (cubemap projection, CMP) с эффективным разрешением 6К (соответственно), которые описаны в пунктах D. 6.3 и D.6.4 (соответственно) формата всенаправленных медиа (Omnidirectional Media Format, OMAF, ISO/IEC 23090-2). Эти схемы приведены в рекомендациях Форума индустрии виртуальной реальности (VR Industry Forum Guidelines). Схема, представленная на фиг. 10 с, практически эквивалентна схеме на фиг. 10b, однако там применяют отличающееся соотношение сторон изображения.[0267] FIG. 10a and 10b show tile and brick partitions that provide the implementation of equirectangular projection (ERP) and cubemap projection (CMP) with an effective resolution of 6K (respectively), which are described in clauses D.6.3 and D.6.4 (respectively) Omnidirectional Media Format (OMAF, ISO/IEC 23090-2). These diagrams are provided in the VR Industry Forum Guidelines. The scheme shown in Fig. 10 s is practically equivalent to the circuit in FIG. 10b, however, a different aspect ratio of the image is used there.

[0268] Для версии 5 проекта VVC и варианта осуществления настоящего изобретения, объединяющего указание столбцов тайлов и высот кирпичей для каждого столбца тайлов, и унифицированную сигнализацию о явно заданном или равномерном разбиении на тайлы и кирпичи, были получены следующие характеристики:[0268] For version 5 of the VVC project and an embodiment of the present invention that combines the indication of tile columns and brick heights for each column of tiles, and unified signaling of explicit or uniform tiling and bricking, the following characteristics were obtained:

- Количество синтаксических элементов для указания разбиения на тайлы и кирпичи- The number of syntax elements to indicate the division into tiles and bricks

- Количество строк синтаксиса для указания разбиения на тайлы и кирпичи- Number of syntax lines for specifying tiling and bricking

- Количество битов, необходимых для указания разбиения на тайлы и кирпичи для схем, представленных на чертеже ниже- The number of bits required to indicate the tiling and bricking for the schemes shown in the drawing below

- Экономия числа битов в процентах, обеспечиваемая упомянутым вариантом осуществления настоящего изобретения, по сравнению с версией 5 проекта VVC для схем, представленных на чертеже ниже.- Percentage bit savings provided by said embodiment of the present invention compared to version 5 of the VVC draft for the circuits shown in the drawing below.

[0269] Характеристики, полученные при размере блоков СТВ яркости, равном 128×128, представлены в таблице ниже.[0269] The characteristics obtained with a luminance CTB block size of 128×128 are shown in the table below.

Figure 00000040
Figure 00000040

[0270] Соответственно, можно видеть, что количество синтаксических элементов сократилось с 13 до 7, а количество требуемых строк синтаксиса сократилось с 26 до 20. Экономия числа битов, обеспечиваемая предложенным вариантом осуществления настоящего изобретения, для каждого из разбиений на тайлы и кирпичи на фиг. 10а-10 с составляет более 50% по сравнению с версией 5 проекта VVC. Также следует отметить, что посредством настоящего изобретения могут быть сокращены семантика и процедуры вычислений.[0270] Accordingly, it can be seen that the number of syntax elements has been reduced from 13 to 7, and the number of required syntax lines has been reduced from 26 to 20. The bit savings provided by the proposed embodiment of the present invention for each of the tiling and bricking in FIG. . 10a-10s is more than 50% compared to version 5 of the VVC project. It should also be noted that the semantics and calculation procedures can be reduced by the present invention.

Указание некодированных тайлов или кирпичейSpecifying uncoded tiles or bricks

[0271] В некоторых применениях желательно иметь возможность назначить контент, который должен быть кодирован и/или декодирован, в тайлы и/или кирпичи таким образом, чтобы было занято только подмножество тайлов и/или кирпичей. К примеру, при потоковой передаче 360-градусного видео, зависящей от порта просмотра, может приниматься только подмножество независимо кодированных областей изображения, например, тайлов. В другом примере может применяться кодирование, на основе патчей (patch-based), объемного видео или видео облака точек, где патчи занимают только подмножество тайлов и/или кирпичей изображения.[0271] In some applications, it is desirable to be able to assign content to be encoded and/or decoded to tiles and/or bricks such that only a subset of tiles and/or bricks are occupied. For example, when streaming 360-degree video depending on the viewport, only a subset of independently encoded image areas, such as tiles, can be received. In another example, patch-based 3D video or point cloud video encoding may be used, where the patches occupy only a subset of the tiles and/or bricks of the image.

[0272] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для кодирования, некодированные тайлы или кирпичи указывают в синтаксической структуре до данных слайсов, в битовом потоке или вместе с ним. Для некодированных тайлов или кирпичей в данные слайсов не кодируют никаких синтаксических элементов. Некодированные тайлы или кирпичи восстанавливают (например, в декодированное опорное изображение) с использованием заранее заданного или указанного способа, например, устанавливают значения восстановленных отсчетов в массивах отсчетов равными 0.[0272] In accordance with one embodiment of the present invention applicable to encoding, unencoded tiles or bricks are indicated in the syntactic structure prior to slice data, in or along with the bitstream. For non-encoded tiles or bricks, no syntax elements are encoded into the slice data. Uncoded tiles or bricks are reconstructed (for example, into a decoded reference image) using a predetermined or specified method, for example, setting the values of the reconstructed samples in the sample arrays to 0.

[0273] В соответствии с одним из вариантов осуществления настоящего изобретения, применимым для декодирования, некодированные тайлы или кирпичи декодируют из синтаксической структуры, предшествующей данным слайсов, из битового потока или вместе с ним. Для некодированных тайлов или кирпичей из данных слайсов не декодируют никаких синтаксических элементов. Некодированные тайлы или кирпичи декодируют (например, в декодированное опорное изображение) с использованием заранее заданного или указанного способа, например, устанавливают значения восстановленных отсчетов в массивах отсчетов равными 0.[0273] In accordance with one embodiment of the present invention applicable to decoding, uncoded tiles or bricks are decoded from the syntactic structure preceding the slice data, from or along with the bitstream. For non-encoded tiles or bricks, no syntax elements are decoded from these slices. Uncoded tiles or bricks are decoded (eg, into a decoded reference image) using a predetermined or specified method, for example, setting the values of the reconstructed samples in the sample arrays to 0.

[0274] В соответствии с одним из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, количество некодированных кирпичей указывают для отдельных столбцов тайлов, например, с использованием слова переменной длины в формате ue(v). Кирпичи в столбце тайлов проходят в заранее заданном порядке сканирования (например, снизу вверх). Для каждого пройденного кирпича указывают и/или декодируют флаг, позволяющий заключить, является кирпич некодированным или нет. Если кирпич не кодирован, количество кирпичей, оставшихся для обозначения как некодированные, уменьшают на 1. Процедура продолжается до тех пор, пока не останется кирпичей, которые можно обозначить некодированными.[0274] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, the number of unencoded bricks is indicated for individual columns of tiles, for example, using a variable length word in the format ue(v). Bricks in a tile column pass in a predefined scan order (eg bottom to top). For each brick passed, a flag is indicated and/or decoded, allowing one to conclude whether the brick is uncoded or not. If a brick is not coded, the number of bricks left to be labeled as non-coded is reduced by 1. The procedure continues until there are no bricks left that can be labeled as non-coded.

[0275] На фиг. 11 проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. На фиг. 11 показана структура двухуровневого декодера, однако нужно понимать, что те же операции декодирования могут аналогичным образом применяться в одноуровневом декодере.[0275] FIG. 11 illustrates a block diagram of a video decoder suitable for applying embodiments of the present invention. In FIG. 11 shows the structure of a two-layer decoder, however, it should be understood that the same decoding operations can be similarly applied in a single-layer decoder.

[0276] Видеодекодер 550 включает первую секцию 552 декодера для базового уровня и вторую секцию 554 декодера для предсказываемого уровня. Блок 556 иллюстрирует демультиплексор, предназначенный для предоставления информации об изображениях базового уровня в первую секцию 552 декодера, а также для предоставления информации об изображениях предсказываемого уровня во вторую секцию 554 декодера. Р'n обозначены предсказанные представления блока пикселей изображения. D'n обозначены восстановленные сигналы ошибки предсказания. Блоки 704, 804 иллюстрируют предварительно восстановленные изображения (I'n). R'n обозначено окончательное восстановленное изображение. Блоками 703, 803 проиллюстрированное обратное преобразование (Т-1). Блоками 702, 802 проиллюстрировано обратное квантование (Q-1). Блоками 701, 801 проиллюстрировано энтропийное декодирование (Е-1). Блоками 705, 805 проиллюстрирована память опорных кадров (reference frame memory, RFM). Блоками 706, 806 проиллюстрировано предсказание (Р) (либо внутреннее, либо внешнее предсказание). Блоками 707, 807 проиллюстрирована фильтрация (F). Блоки 708, 808 могут использоваться для комбинирования декодированной информации ошибки предсказания с предсказанными изображениями базового или предсказываемого уровня, в результате чего получают предварительно восстановленные изображения (Гп). Предварительно восстановленные и прошедшие фильтрацию изображения базового уровня могут выводиться (709) из первой секции 552 декодера, а предварительно восстановленные и прошедшие фильтрацию изображения предсказываемого ракурса могут выводиться (809) из второй секции 554 декодера.[0276] The video decoder 550 includes a first decoder section 552 for the base layer and a second decoder section 554 for the predictive layer. Block 556 illustrates a demultiplexer for providing base layer image information to a first decoder section 552 and also for providing predictive layer image information to a second decoder section 554. P'n are the predicted representations of a block of image pixels. D'n denotes recovered prediction error signals. Blocks 704, 804 illustrate previously reconstructed images (I'n). R'n denotes the final reconstructed image. Blocks 703, 803 illustrate the inverse transform (T -1 ). Blocks 702, 802 illustrate inverse quantization (Q -1 ). Blocks 701, 801 illustrate entropy decoding (E -1 ). Blocks 705, 805 illustrate the reference frame memory (RFM). Blocks 706, 806 illustrate prediction (P) (either intra or inter prediction). Blocks 707, 807 illustrate filtering (F). Blocks 708, 808 may be used to combine the decoded prediction error information with the predicted baseline or predictive level images, resulting in pre-restored images (RP). The pre-restored and filtered base layer images may be output (709) from the first decoder section 552, and the pre-restored and filtered predictive-view images may be output (809) from the second decoder section 554.

[0277] Здесь под декодером понимают любой функциональный блок, способный выполнять операции декодирования, например, это может быть проигрыватель, приемник, шлюз, демультиплексор и/или декодер.[0277] Here, a decoder is understood to mean any functional unit capable of performing decoding operations, such as a player, receiver, gateway, demultiplexer, and/or decoder.

[0278] На фиг. 12 показана блок-схема алгоритма работы декодера в соответствии с одним из вариантов осуществления настоящего изобретения. Операции декодирования в вариантах осуществления настоящего изобретения практически аналогичны операциям кодирования, за исключением того, что декодер декодирует указания из битового потока или вместе с ним. Так, способ декодирования включает:[0278] FIG. 12 is a flow diagram of a decoder in accordance with one embodiment of the present invention. The decoding operations in the embodiments of the present invention are essentially the same as the encoding operations, except that the decoder decodes the indications from or along with the bitstream. Thus, the decoding method includes:

декодирование (1200) фрагмента битового потока, включающего указание столбцов тайлов и указание высот кирпичей для одного или более столбцов тайлов одновременно; логическое определение (1202), в случае обнаружения строк кирпичей, находящихся на одной линии на протяжении изображения, потенциальных строк тайлов; логическое определение (1204) или декодирование указания, является ли граница потенциальной строки тайлов границей строки тайлов; и декодирование (1206) одного или более изображений из битового потока с использованием указанных столбцов тайлов, указанных или логически полученных строк тайлов и указанных высот кирпичей, при этом одно или более изображений разбивают на сетку тайлов, следуя указанным столбцам тайлов и указанным или логически полученным строкам тайлов, при этом тайл в сетке тайлов включает целое число блоков кодового дерева и разбит на один или более кирпичей, и при этом кирпич содержит целое число строк блоков кодового дерева внутри тайла.decoding (1200) a fragment of the bitstream, including the indication of tile columns and the indication of brick heights for one or more tile columns at the same time; logical determination (1202), in case of detecting rows of bricks that are on the same line throughout the image, potential rows of tiles; logically determining (1204) or decoding an indication whether a potential tile row boundary is a tile row boundary; and decoding (1206) one or more images from the bitstream using the specified tile columns, the specified or logically derived tile rows, and the specified brick heights, wherein the one or more images are split into a grid of tiles following the specified tile columns and the specified or logically derived rows tiles, wherein the tile in the tile grid includes an integer number of code tree blocks and is broken into one or more bricks, and the brick contains an integer number of lines of code tree blocks within the tile.

[0279] На фиг. 13 показана блок-схема алгоритма работы декодера в соответствии с еще одним из вариантов осуществления настоящего изобретения. Способ декодирования включает следующие шаги: а) декодирование (1300) указания на количество разделов, подлежащих назначению; b) определение (1302) количества блоков, подлежащих назначению в разделы; с) определение (1304), является ли количество блоков, подлежащих назначению, назначаемым равномерно в упомянутое количество разделов; и если это не так, d) определение (1306) количества блоков, подлежащих назначению в следующий раздел, и е) повтор (1308) шагов с) и d) до тех пор, пока все блоки не будут назначены в разделы.[0279] FIG. 13 is a flowchart of a decoder in accordance with yet another embodiment of the present invention. The decoding method includes the following steps: a) decoding (1300) an indication of the number of partitions to be assigned; b) determining (1302) the number of blocks to be assigned to partitions; c) determining (1304) whether the number of blocks to be assigned is uniformly assigned to said number of partitions; and if not, d) determining (1306) the number of blocks to be assigned to the next partition, and e) repeating (1308) steps c) and d) until all blocks have been assigned to partitions.

Указание разбиения изображения на прямоугольные слайсыSpecifying the division of the image into rectangular slices

[0280] В следующих параграфах представлены варианты осуществления настоящего изобретения для усовершенствованных способов кодирования и/или декодирования сигнализации прямоугольных слайсов. Эти варианты осуществления настоящего изобретения могут применяться совместно с вариантами осуществления изобретения для разбиения на тайлы и кирпичи или независимо от них. Эти варианты осуществления настоящего изобретения основаны на определениях и свойствах тайлов, кирпичей и прямоугольных слайсов, принятых в версии 5 проекта VVC. С помощью предложенных вариантов осуществления настоящего изобретения число битов, необходимых для указания прямоугольных слайсов (например, указания или получения местоположения, ширины и высоты прямоугольных слайсов), может быть сокращено.[0280] The following paragraphs present embodiments of the present invention for improved methods for encoding and/or decoding rectangular slice signaling. These embodiments of the present invention may be used in conjunction with or independently of the tiling and bricking embodiments. These embodiments of the present invention are based on the definitions and properties of tiles, bricks and rectangular slices adopted in version 5 of the VVC project. With the proposed embodiments of the present invention, the number of bits required to indicate rectangular slices (eg, indicate or obtain the location, width, and height of rectangular slices) can be reduced.

[0281] Способ кодирования, в соответствии с первым аспектом настоящего изобретения, включает указание, в битовом потоке или вместе с ним, или логическое определение верхнего левого кирпича прямоугольного слайса. заключение, на[0281] An encoding method according to a first aspect of the present invention includes specifying, in or with a bitstream, or logically determining the top left brick of a rectangular slice. conclusion, on

основе местоположения, включает ли прямоугольный слайс, один или более кирпичей тайлов; если прямоугольный слайс включает один или более кирпичей тайлов, указание, в битовом потоке или вместе с ним, или логическое определение количества кирпичей в прямоугольном слайс е.location-based, whether the rectangular slice includes one or more brick tiles; if the rectangular slice includes one or more tile bricks, an indication, in or with the bitstream, or a boolean definition of the number of bricks in the rectangular slice.

[0282] Способ декодирования, в соответствии с первым аспектом настоящего изобретения, включает декодирование, из битового потока или вместе с ним, или логическое определение верхнего левого кирпича прямоугольного слайса; заключение, на основе местоположения, включает ли прямоугольный слайс, один или более кирпичей тайлов; если прямоугольный слайс включает один или более кирпичей тайлов, декодирование, из битового потока или вместе с ним, или логическое определение количества кирпичей в прямоугольном слайсе.[0282] The decoding method according to the first aspect of the present invention includes decoding, from or with a bitstream, or logically determining the top left brick of a rectangular slice; determining, based on location, whether the rectangular slice includes one or more tile bricks; if the rectangular slice includes one or more tile bricks, decoding, from or with the bitstream, or logical determination of the number of bricks in the rectangular slice.

[0283] Местоположение кирпича может быть, например, порядковым номером кирпича в порядке сканирования кирпичей изображения.[0283] The location of the brick may be, for example, the sequence number of the brick in the order in which the bricks of the image were scanned.

[0284] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, когда местоположение верхнего левого кирпича прямоугольного слайса не является верхним левым кирпичом ни одного тайла, заключают, что прямоугольный слайс содержит один или более кирпичей тайла.[0284] In one embodiment of the present invention applicable to encoding and/or decoding, when the top left brick location of the rectangular slice is not the top left brick of any tile, the rectangular slice is determined to contain one or more tile bricks.

[0285] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, когда местоположение верхнего левого кирпича прямоугольного слайса является верхним левым кирпичом какого-либо тайла, и тайл содержит множество кирпичей, заключают, что прямоугольный слайс может включать либо кирпичи тайла, либо полные тайлы. В одном из вариантов осуществления настоящего изобретения, применимом для кодирования, если заключено, что прямоугольный слайс может содержать либо кирпичи тайла, либо полные тайлы, указывают, в битовом потоке или вместе с ним, содержит ли прямоугольный слайс кирпичи тайла или полные тайлы. В одном из вариантов осуществления настоящего изобретения, применимом для декодирования, если заключено, что прямоугольный слайс может содержать либо кирпичи тайла, либо полные тайлы, декодируют, из битового потока или вместе с ним, содержит ли прямоугольный слайс кирпичи тайла или полные тайлы.[0285] In one embodiment of the present invention applicable to encoding and/or decoding, when the location of the top left brick of a rectangular slice is the top left brick of any tile, and the tile contains a plurality of bricks, it is concluded that the rectangular slice may include either bricks tiles, or full tiles. In one embodiment of the present invention applicable to encoding, if it is concluded that a rectangular slice can contain either tile bricks or full tiles, it indicates, in or with the bitstream, whether the rectangular slice contains tile bricks or full tiles. In one embodiment of the present invention applicable to decoding, if it is concluded that a rectangular slice can contain either tile bricks or full tiles, it is decoded, from or along with the bitstream, whether the rectangular slice contains tile bricks or full tiles.

[0286] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, если логически определено или указано (как часть кодирования), или декодировано, что прямоугольный слайс содержит кирпичи тайла, переменную, например, с именем numDeltaValues задают равной количеству кирпичей, следующих за местоположением верхнего левого кирпича прямоугольного слайса и находящихся в этом же тайле. Если numDeltaValues равно 1, делают вывод о том, что прямоугольный слайс содержит ровно один кирпич. В противном случае переменную numDeltaValues используют для вычисления длины первого синтаксического элемента, указывающего на нижний правый кирпич прямоугольного слайса, или второго синтаксического элемента, указывающего на количество кирпичей в прямоугольном слайсе, или третьего синтаксического элемента, указывающего на высоту (в кирпичах) прямоугольного слайса, или любого аналогичного синтаксического элемента. Например, упомянутые первый, второй или третий синтаксический элемент или любой аналогичный синтаксический элемент могут быть кодированы в формате u(v), а его длина может составлять Ceil(Log2(numDeltaValues)) бит.[0286] In one embodiment of the present invention applicable to encoding and/or decoding, if it is logically determined or indicated (as part of encoding) or decoded that a rectangular slice contains tile bricks, a variable, for example, named numDeltaValues is set to the number bricks that follow the location of the top left brick of the rectangular slice and are in the same tile. If numDeltaValues is 1, it is concluded that the rectangular slice contains exactly one brick. Otherwise, the variable numDeltaValues is used to calculate the length of the first syntax element indicating the bottom right brick of the rectangular slice, or the second syntax element indicating the number of bricks in the rectangular slice, or the third syntax element indicating the height (in bricks) of the rectangular slice, or any similar syntactic element. For example, said first, second, or third syntax element, or any similar syntax element, may be encoded in u(v) format, and its length may be Ceil(Log2(numDeltaValues)) bits.

[0287] В одном из примеров осуществления настоящего изобретения применяют следующий синтаксис:[0287] In one embodiment of the present invention, the following syntax is used:

Figure 00000041
Figure 00000041

[0288] Семантика синтаксических элементов может быть определена в соответствии с предшествующим описанием, за исключением того, что значение bottom_right_brick_idx_delta[i] определяет разность между порядковым номером кирпича, расположенного в нижнем правом углу i-го слайса и top_left_brick_idx[i]. Когда флаг single_brick_per_slice_flag равен 1, значение bottom_right_brick_idx _delta[i] принимают равным 0. В случае его отсутствия значение bottom_right_brick_idx_delta[i] принимают равным 0. Переменную numDeltaValues, определяющую количество значений, которые может принимать bottom_right_brick_idx_delta[i], вычисляют следующим образом:[0288] The semantics of the syntax elements can be determined in accordance with the previous description, except that the value of bottom_right_brick_idx_delta[i] defines the difference between the ordinal number of the brick located in the lower right corner of the i-th slice and top_left_brick_idx[i]. When the single_brick_per_slice_flag flag is 1, the value of bottom_right_brick_idx _delta[i] is set to 0. If it is not present, the value of bottom_right_brick_idx_delta[i] is set to 0. The numDeltaValues variable, which specifies the number of values that bottom_right_brick_idx_delta[i] can take, is calculated as follows:

Figure 00000042
Figure 00000042

[0289] Длина синтаксического элемента bottom_right_brick_idx_delta [i] составляет Ceil(Log2(numDeltaValues)) бит. Переменная NumBricksIntile [brickIdx] определяет количество кирпичей в тайле, содержащем кирпич с порядковым номером brickIdx при сканировании кирпичей изображения. Переменная BrickIdxlntile[brickIdx] определяет порядковый номер кирпича внутри тайла, содержащего этот кирпич, когда кирпич имеет порядковый номер brickIdx при сканировании кирпичей изображения.[0289] The length of the bottom_right_brick_idx_delta[i] syntax element is Ceil(Log2(numDeltaValues)) bits. The NumBricksIntile [brickIdx] variable determines the number of bricks in a tile containing a brick with the brickIdx index number when scanning the image bricks. The variable BrickIdxlntile[brickIdx] defines the ordinal number of a brick within the tile containing that brick, when the brick has ordinal number brickIdx when scanning the image's bricks.

[0290] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, местоположение верхнего левого кирпича прямоугольного слайса получают логически. Вначале все местоположения кирпичей маркируют как свободные. Цикл назначения кирпичей в прямоугольные слайсы включают, в битовом потоке или вместе с ним, или декодируют, из битового потока или вместе с ним. При каждом входе в цикл считают, что верхний левый кирпич прямоугольного слайса будет следующим свободным местоположением кирпича в заранее заданном, указанном или декодированном порядке сканирования. К примеру, может быть заранее определено, например, в стандарте кодирования, что используется порядок сканирования кирпичей в изображении. Нижний правый кирпич прямоугольного слайса может быть определен логически, указан или декодирован, например, в соответствии с предшествующим описанием, а кирпичи, образующие прямоугольник с верхним левым кирпичом и правым нижним кирпичом в углах, маркируют как назначенные. Эту же, или аналогичную, процедуру выполняют при каждом входе в цикл.[0290] In one embodiment of the present invention applicable to encoding and/or decoding, the location of the top left brick of the rectangular slice is obtained logically. First, all brick locations are marked as free. The bricks assignment cycle to rectangular slices is included in or with the bitstream, or decoded from or with the bitstream. At each entry into the loop, the top left brick of the rectangular slice is considered to be the next free brick location in the predetermined, specified, or decoded scan order. For example, it may be predetermined, for example in a coding standard, that the order in which the bricks in the image are scanned is used. The bottom right brick of a rectangular slice can be logically determined, indicated or decoded, for example, as described above, and the bricks forming a rectangle with the top left brick and the bottom right brick at the corners are marked as assigned. The same, or a similar, procedure is performed each time the loop is entered.

[0291] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, когда заключено (как часть кодирования или декодирования) или указано (как часть кодирования), или декодировано (как часть декодирования), что прямоугольный слайс включает полные тайлы, синтаксический элемент для указания на нижний правый кирпич прямоугольного слайса вычисляют на основе одного или более из следующего:[0291] In one embodiment of the present invention applicable to encoding and/or decoding, when it is concluded (as part of encoding or decoding) or indicated (as part of encoding) or decoded (as part of decoding) that a rectangular slice includes full tiles , a syntax element for pointing to the bottom right brick of a rectangular slice is computed based on one or more of the following:

- Получают набор возможных местоположений нижнего правого кирпича. Этот набор может включать только те местоположения кирпичей, которые являются последними местоположениями кирпича в пределах тайла, расположены в строке или под строкой тайлов, содержащей левый верхний кирпич прямоугольного тайла, расположены в столбце тайлов или справа от столбца тайлов, содержащего верхний левый кирпич прямоугольного тайла, и включают прямоугольный набор свободных местоположений тайлов (еще не назначенных ни в какие прямоугольные слайсы).- Get a set of possible locations for the bottom right brick. This set can only include brick locations that are the last brick locations within a tile, are located in or below a row of tiles containing the top left brick of a rectangular tile, are located in a tile column or to the right of a tile column containing the top left brick of a rectangular tile, and include a rectangular set of free tile locations (not yet assigned to any rectangular slices).

- Записи в наборе возможных местоположений нижнего правого кирпича индексируют, или нумеруют.- The entries in the set of possible locations of the lower right brick are indexed, or numbered.

- Длину синтаксического элемента, кодированного в формате u(v), для указания на нижний правый кирпич прямоугольного слайса вычисляют на основе количества записей в наборе возможных местоположений нижнего правого кирпича. Если количество записей numEnt равно 1, порядковый номер нижнего правого кирпича не нужно указывать или декодировать. В противном случае длина этого синтаксического элемента равна Ceil(Log2(numEnt)) бит.- The length of the u(v)-encoded syntax element to point to the bottom right brick of the rectangular slice is calculated based on the number of entries in the set of possible bottom right brick locations. If the number of numEnt entries is 1, the lower right brick's ordinal does not need to be specified or decoded. Otherwise, the length of this syntax element is Ceil(Log2(numEnt)) bits.

- Синтаксический элемент для указания на нижний правый кирпич прямоугольного слайса представляет собой порядковый номер в пронумерованном наборе возможных местоположений нижнего правого кирпича.- The syntax element for pointing to the bottom right brick of a rectangular slice is a serial number in a numbered set of possible bottom right brick locations.

[0292] Способ кодирования в соответствии со вторым аспектом настоящего изобретения включает:[0292] The encoding method according to the second aspect of the present invention includes:

- указание, в битовом потоке или вместе с ним, или логическое определение местоположения верхнего левого кирпича прямоугольного слайса;- an indication, in the bitstream or together with it, or a logical determination of the location of the upper left brick of a rectangular slice;

- заключение, на основе местоположения, включает ли прямоугольный слайс, один или более кирпичей тайлов;- inferring, based on location, whether a rectangular slice includes one or more tile bricks;

- если прямоугольный слайс содержит один или более кирпичей тайла, логическое заключение о том, что ширина прямоугольного слайса равна одному столбцу тайлов, в противном случае, если левый верхний кирпич находится в самом правом столбце тайлов, логическое заключение о том, что ширина прямоугольного слайса равна одному столбцу тайлов, и в противном случае, указание, в битовом потоке или вместе с ним, на ширину прямоугольного слайса в столбцах тайлов;- if the rectangular slice contains one or more tile bricks, the logical conclusion that the width of the rectangular slice is equal to one column of tiles, otherwise, if the top left brick is in the rightmost column of tiles, the logical conclusion that the width of the rectangular slice is one tile column, and otherwise, an indication, in or with the bitstream, of the width of the rectangular slice in tile columns;

- если прямоугольный слайс содержит один или более кирпичей тайлов, указание, в битовом потоке или вместе с ним, или логическое определение количества кирпичей в прямоугольном слайсе; в противном случае, если верхний левый кирпич находится в самой нижней строке тайлов, логическое заключение о том, что высота прямоугольного слайса равна одной строке тайлов, и в противном случае, указание, в битовом потоке или вместе с ним, высоты прямоугольного слайса в строках тайлов.- if the rectangular slice contains one or more tile bricks, an indication, in or with the bitstream, or a logical determination of the number of bricks in the rectangular slice; otherwise, if the top-left brick is in the bottommost tile row, the logical conclusion that the height of the rectangular slice is one tile row, and otherwise, specifying, in or with the bitstream, the height of the rectangular slice in tile rows .

[0293] Способ декодирования в соответствии со вторым аспектом настоящего изобретения включает:[0293] The decoding method according to the second aspect of the present invention includes:

- декодирование, из битового потока или вместе с ним, или логическое определение местоположения верхнего левого кирпича прямоугольного слайса;- decoding, from or along with the bit stream, or logical determination of the location of the upper left brick of a rectangular slice;

- заключение, на основе местоположения, включает ли прямоугольный слайс, один или более кирпичей тайлов;- inferring, based on location, whether a rectangular slice includes one or more tile bricks;

- если прямоугольный слайс содержит один или более кирпичей тайла, логическое заключение о том, что ширина прямоугольного слайса равна одному столбцу тайлов, в противном случае, если левый верхний кирпич находится в самом правом столбце тайлов, логическое заключение о том, что ширина прямоугольного слайса равна одному столбцу тайлов, и в противном случае, декодирование, из битового потока или вместе с ним, ширины прямоугольного слайса в столбцах тайлов;- if the rectangular slice contains one or more tile bricks, the logical conclusion that the width of the rectangular slice is equal to one column of tiles, otherwise, if the top left brick is in the rightmost column of tiles, the logical conclusion that the width of the rectangular slice is one tile column, and otherwise, decoding, from or with the bitstream, the width of the rectangular slice in tile columns;

- если прямоугольный слайс включает один или более кирпичей тайлов, декодирование, из битового потока или вместе с ним, или логическое определение количества кирпичей в прямоугольном слайсе; в противном случае, если верхний левый кирпич находится в самой нижней строке тайлов, логическое заключение о том, что высота прямоугольного слайса равна одной строке тайлов, и в противном случае, декодирование, из битового потока или вместе с ним, высоты прямоугольного слайса в строках тайлов.- if the rectangular slice includes one or more tile bricks, decoding, from or with the bitstream, or logical determination of the number of bricks in the rectangular slice; otherwise, if the top-left brick is in the bottommost tile row, the logical conclusion that the height of the rectangular slice is one tile row, and otherwise, decoding, from or with the bitstream, the height of the rectangular slice in tile rows .

[0294] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования и применимом для первого аспекта и/или второго аспекта, количество кирпичей в прямоугольном слайсе принимают равным 1 (в кирпичах), когда заключено, или указано, или декодировано, что прямоугольный слайс содержит кирпичи тайла, и либо тайл содержит два кирпича и текущий кирпич (т.е. верхний левый кирпич прямоугольного слайса) является самым верхним кирпичом тайла, либо текущий кирпич является самым нижним кирпичом тайла.[0294] In one embodiment of the present invention applicable to encoding and/or decoding and applicable to the first aspect and/or the second aspect, the number of bricks in a rectangular slice is taken to be 1 (in bricks) when concluded or indicated or decoded that the rectangular slice contains the bricks of the tile, and either the tile contains two bricks and the current brick (i.e., the top left brick of the rectangular slice) is the topmost brick of the tile, or the current brick is the bottommost brick of the tile.

[0295] В одном из примеров осуществления настоящего изобретения применяют следующий синтаксис:[0295] In one embodiment of the present invention, the following syntax is used:

Figure 00000043
Figure 00000043

[0296] Переменные и семантика синтаксических элементов могут быть определены в соответствии с предшествующим описанием, со следующими дополнениями:[0296] Variables and semantics of syntax elements can be defined in accordance with the previous description, with the following additions:

- Переменная tlBrickIdx может быть определена как следующее свободное местоположение кирпича в заранее заданном порядке сканирования, например, сканирования кирпичей изображения, как это было описано ранее. Значение tlBrickIdx заново вычисляют для каждого значения i, то есть, при каждом входе в цикл.- The tlBrickIdx variable can be defined as the next free brick location in a predefined scan order, such as image brick scanning as described previously. The value of tlBrickIdx is recalculated for each value of i, that is, each time the loop is entered.

- Переменная numFreeColumnsOnTheRight[brickIdx] - это переменная, указывающая количество столбцов тайлов справа от кирпича с порядковым номером brickIdx.- The numFreeColumnsOnTheRight[brickIdx] variable is a variable that specifies the number of tile columns to the right of the brick with the brickIdx serial number.

- Значение slice_width_minus1[i] плюс 1 определяет ширину i-го прямоугольного слайса в столбцах тайлов. В случае его отсутствия значение slice_width_minus1[i] принимают равным 0.- The value of slice_width_minus1[i] plus 1 determines the width of the i-th rectangular slice in tile columns. If it is absent, the value of slice_width_minus1[i] is taken equal to 0.

- Флаг full_tiles_in_slice_flag[i], равный 0, определяет, что i-й прямоугольный слайс содержит один или несколько кирпичей одного тайла. Флаг full_tiles_in_slice_flag [i], равный 1, определяет, что i-й прямоугольный слайс содержит один или более полных тайлов. Значение full_tiles_in_slice_flag[i] принимают равным 0, когда BrickIdxlntile[tlBrickIdx] больше 0 (т.е. когда верхний левый кирпич прямоугольного слайса не является верхним левым кирпичом ни одного из тайлов). Флаг full_tiles_in_slice_flag [i] принимают равным 1, когда slicewidthminus 1 [i] больше 0 или когда BrickIdxlntile [tlBrickIdx] равно 0 и NumBricksIntile[tlBrickIdx] равно 1.- The flag full_tiles_in_slice_flag[i] equal to 0 specifies that the i-th rectangular slice contains one or more bricks of the same tile. The full_tiles_in_slice_flag[i] flag of 1 specifies that the i-th rectangular slice contains one or more full tiles. The value of full_tiles_in_slice_flag[i] is set to 0 when BrickIdxlntile[tlBrickIdx] is greater than 0 (i.e. when the top left brick of a rectangular slice is not the top left brick of any of the tiles). The full_tiles_in_slice_flag [i] flag is set to 1 when slicewidthminus 1 [i] is greater than 0 or when BrickIdxlntile[tlBrickIdx] is 0 and NumBricksIntile[tlBrickIdx] is 1.

- Если флаг full_tiles_in_slice_flag [i] равен 0, numFreeRowsBelow[brickIdx] -это переменная, указывающая количество кирпичей в тайле под кирпичом с порядковым номером brickIdx в этом же тайле. В противном случае numFreeRowsBelowfbrickIdx] -это переменная, указывающая количество строк тайлов под тайлом, содержащем кирпич с порядковым номером brickIdx.- If the full_tiles_in_slice_flag [i] flag is 0, numFreeRowsBelow[brickIdx] is a variable indicating the number of bricks in the tile below the brick with index number brickIdx in the same tile. Otherwise, numFreeRowsBelowfbrickIdx] is a variable that specifies the number of tile rows under the tile containing the brick with index number brickIdx.

- Если флаг full_tiles_in_slice_flag [i] равен 0, значение slice_height_minus1[i] плюс 1 определяет высоту i-го прямоугольного слайса в кирпичах. В противном случае значение slice_height_minus1[i] плюс 1 определяет высоту i-го прямоугольного слайса в строках тайлов. В случае его отсутствия значение slice_height_minus1[i] принимают равным 0.- If full_tiles_in_slice_flag [i] is 0, slice_height_minus1[i] plus 1 specifies the height of the i-th rectangular slice in bricks. Otherwise, slice_height_minus1[i] plus 1 specifies the height of the i-th rectangular slice in the tile rows. If it is absent, the value of slice_height_minus1[i] is taken equal to 0.

[0297] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, длину синтаксического элемента ширины слайса (например, slice_width_minus1) вычисляют на основе количества возможных значений, исходя из местоположения верхнего левого кирпича прямоугольного слайса. С помощью описанных выше переменных и синтаксических элементов, длину slice width minus 1 получают как равную Ceil(Log2(numFreeColumnsOnTheRight[tlBrickIdx]+1)).[0297] In one embodiment of the present invention applicable to encoding and/or decoding, the length of the slice width syntax element (e.g., slice_width_minus1) is calculated based on the number of possible values based on the location of the top left brick of the rectangular slice. Using the variables and syntax elements described above, the length of slice width minus 1 is obtained as equal to Ceil(Log2(numFreeColumnsOnTheRight[tlBrickIdx]+1)).

[0298] В одном из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, длину синтаксического элемента высоты слайса (например, slice_height_minus 1) вычисляют на основе количества возможных значений, исходя из местоположения верхнего левого кирпича прямоугольного слайса, и того, содержит ли прямоугольный слайс кирпичи одного тайла или полные тайлы. С помощью описанных выше переменных и синтаксических элементов, длину slice_height_minus1 вычисляют как равную Ceil(Log2(numDeltaValues)), где numDeltaValues вычисляют следующим образом:[0298] In one embodiment of the present invention applicable to encoding and/or decoding, the length of the slice height syntax element (e.g., slice_height_minus 1) is calculated based on the number of possible values based on the location of the top left brick of the rectangular slice, and that contains whether a rectangular slice is single tile bricks or full tiles. Using the variables and syntax elements described above, the length of slice_height_minus1 is calculated to be equal to Ceil(Log2(numDeltaValues)), where numDeltaValues is calculated as follows:

Figure 00000044
Figure 00000044

[0299] В следующих параграфах представлены варианты осуществления настоящего изобретения для усовершенствованных способов кодирования и/или декодирования сигнализации прямоугольных слайсов. Эти варианты осуществления настоящего изобретения могут применяться совместно с вариантами осуществления изобретения для разбиения на тайлы и кирпичи или независимо от них. Эти варианты осуществления настоящего изобретения основаны на определениях и свойствах тайлов, кирпичей, прямоугольных слайсов и субизображений, принятых в версии 6 проекта VVC. С помощью предложенных вариантов осуществления настоящего изобретения число битов, необходимых для указания прямоугольных слайсов (например, указания или получения местоположения, ширины и высоты прямоугольных слайсов), может быть сокращено.[0299] The following paragraphs present embodiments of the present invention for improved methods for encoding and/or decoding rectangular slice signaling. These embodiments of the present invention may be used in conjunction with or independently of the tiling and bricking embodiments. These embodiments of the present invention are based on the definitions and properties of tiles, bricks, rectangular slices and sub-images adopted in version 6 of the VVC project. With the proposed embodiments of the present invention, the number of bits required to indicate rectangular slices (eg, indicate or obtain the location, width, and height of rectangular slices) can be reduced.

[0300] В соответствии с одним из вариантов осуществления настоящего изобретения кодируют один и только один прямоугольный слайс для каждого субизображения. Кодер указывает, в битовом потоке или вместе с ним, например, в PPS, что для изображений в области действия этого указания кодируют один и только один прямоугольный слайс для каждого субизображения. Упомянутая область действия указания может, например, включать изображения, ссылающиеся на PPS, содержащий указание на то, что используют один и только один прямоугольный слайс для каждого субизображения. Кодер опускает явную сигнализацию границ прямоугольных слайсов. Кодер логически заключает, что границы прямоугольных слайсов совпадают с границами субизображений.[0300] According to one embodiment of the present invention, one and only one rectangular slice is encoded for each sub-image. The encoder indicates, in or together with the bitstream, for example in PPS, that one and only one rectangular slice for each sub-picture is encoded for the pictures in the scope of this indication. Said scope of the indication may, for example, include images referring to a PPS containing an indication that one and only one rectangular slice is used for each sub-image. The encoder omits explicit signaling of rectangular slice boundaries. The encoder logically concludes that the boundaries of the rectangular slices coincide with the boundaries of the sub-images.

[0301] В соответствии с одним из вариантов осуществления настоящего изобретения декодер декодирует, из битового потока или вместе с ним, например, из PPS, указание на то, что каждое субизображение содержит один и только один прямоугольный слайс для всех изображений в области действия этого указания. Упомянутая область действия указания может, например, включать изображения, ссылающиеся на PPS, содержащий упомянутое указание. Декодер опускает явную сигнализацию границ прямоугольных слайсов. Декодер логически заключает, что границы прямоугольных слайсов совпадают с границами субизображений.[0301] In accordance with one of the embodiments of the present invention, the decoder decodes, from or together with the bitstream, for example, from PPS, an indication that each sub-image contains one and only one rectangular slice for all images in the scope of this indication . Said scope of the indication may, for example, include images referring to a PPS containing said indication. The decoder omits explicit signaling of rectangular slice boundaries. The decoder logically concludes that the boundaries of the rectangular slices coincide with the boundaries of the sub-images.

[0302] В описанных выше вариантах осуществления настоящего изобретения может применяться приведенный ниже, или аналогичный, синтаксис, где флаг single_slice_per_subpic_flag, равный 0, определяет, что субизображения могут содержать любое количество прямоугольного слайса, а флаг single_slice_per_subpic_flag, равный 1, определяет, что каждое субизображение содержит один и только один прямоугольный слайс:[0302] In the embodiments of the present invention described above, the following, or similar, syntax may be used, where the single_slice_per_subpic_flag flag of 0 specifies that sub-images can contain any number of rectangular slices, and the single_slice_per_subpic_flag of 1 specifies that each sub-image contains one and only one rectangular slice:

Figure 00000045
Figure 00000045

Figure 00000046
Figure 00000046

[0303] В соответствии с одним из вариантов осуществления настоящего изобретения кодер указывает, в битовом потоке или вместе с ним, например, в PPS, и/или декодер декодирует, из битового потока или вместе с ним, например из PPS, состоит ли субизображение из одного и только одного прямоугольного слайса, или оно содержит более одного прямоугольного слайса. К примеру, синтаксический элемент, кодируемый в формате u(1), например, с именем subpic_split_flag[i], может указывать (когда он равен 0) на то, что i-e субизображения состоит ровно из одного прямоугольного слайса, или (когда он равен 1), на то, что i-e субизображение состоит более чем из одного прямоугольного слайса.[0303] In accordance with one embodiment of the present invention, the encoder indicates, in or along with the bitstream, for example, in PPS, and / or the decoder decodes, from or together with the bitstream, for example, in PPS, whether the sub-image consists of one and only one rectangular slice, or it contains more than one rectangular slice. For example, a syntax element encoded in u(1) format, for example named subpic_split_flag[i], may indicate (when it is 0) that the i-th subpicture consists of exactly one rectangular slice, or (when it is 1 ), that the i-th subimage consists of more than one rectangular slice.

[0304] В соответствии с одним из вариантов осуществления настоящего изобретения кодер указывает и/или декодер декодирует разбиение субизображения на прямоугольные слайсы с использованием порядковых номеров кирпичей в субизображении. Кирпичи внутри субизображения нумеруют, например, начиная с 0 и с шагом, равным 1, в заранее заданном порядке сканирования, например, в порядке сканирования кирпичей в субизображении, т.е. сканирование растра тайлов в субизображении является основным порядком, а сканирование растра кирпичей в тайле является вторичным порядком. Поскольку диапазон значений порядковых номеров кирпичей внутри субизображения меньше, чем диапазон значений порядковых номеров кирпичей в изображении, синтаксические элементы для указания порядковых номеров кирпичей внутри субизображения, вероятно, будут короче, чем соответствующие синтаксические элементы для порядковых номеров кирпичей в изображении, и следовательно, сигнализация с большой вероятностью будет более компактной.[0304] In accordance with one embodiment of the present invention, the encoder indicates and/or decoder decodes the division of the sub-image into rectangular slices using the ordinal numbers of bricks in the sub-image. The bricks within the sub-image are numbered, for example, starting from 0 and in increments of 1, in a predetermined scanning order, for example, in the order in which the bricks in the sub-image were scanned, i.e. scanning a raster of tiles in a sub-image is the primary order, and scanning a raster of bricks in a tile is a secondary order. Because the range of brick sequence numbers within the sub-image is smaller than the range of brick sequence numbers in the image, syntax elements for indicating brick sequence numbers within the sub-image are likely to be shorter than the corresponding syntax elements for brick sequence numbers in the image, and hence signaling with more likely to be more compact.

[0305] В соответствии с одним из вариантов осуществления настоящего изобретения может применяться следующий, или аналогичный, синтаксис:[0305] In accordance with one embodiment of the present invention, the following, or similar, syntax may be used:

Figure 00000047
Figure 00000047

Figure 00000048
Figure 00000048

[0306] Флаг rect_slice_splitting_present_flag, равный 0, определяет, что в каждом субизображении имеется ровно один прямоугольный слайс. Флаг rect_slice_splitting_present_flag, равный 1, определяет, что в каждом субизображении имеется один или более прямоугольных слайсов. Значение bottom_right_brick_idx_length_minus1 плюс 1 определяет длину синтаксического элемента bottom_right_brick_idx_delta[i]. Переменную NumSubPics получают как равную количеству субизображений в изображении, например, на основе сигнализации субизображений в наборе SPS. Флаг subpic_split_flag[i], равный 0, определяет, что i-e субизображение состоит ровно из одного прямоугольного слайса. Флаг subpic_split_flag[i], равный 1, определяет, что -ое субизображение состоит из одного или более прямоугольных слайсов. Значение num_slices_in_subpic_minus2[i] плюс 2 определяет количество прямоугольных слайсов в i-м субизображении. Кирпичи в i-м субизображении нумеруют в порядке сканирования кирпичей, bottom_right_brick_idx_delta[i][j] и sign_bottom_right_brick_idx_delta[i][j] определяют значение разности, со знаком, которое используют для вычисления порядкового номера нижнего правого кирпича j-го прямоугольного слайса в i-м субизображении относительно нижнего правого кирпича (j-l)-го прямоугольного слайса i-го субизображения, когда j больше 0, или относительно 0 (т.е. верхнего левого угла i-го субизображения), когда j равно 0. Это значение разности, со знаком, может быть определено равным bottom_right_brick_idx_delta[i][j], когда sign_bottom_right_brick_idx_delta[i][j] равно 1, a bottom_right_brick_idx_delta[i][j], sign_bottom_right_brick_idx_delta[i][j] равны 0, однако может быть также определено с установлением обратных значений sign_bottom_right_brick_idx_delta[i][j].[0306] The flag rect_slice_splitting_present_flag equal to 0 specifies that there is exactly one rectangular slice in each sub-image. The rect_slice_splitting_present_flag flag of 1 specifies that each sub-image has one or more rectangular slices. The value of bottom_right_brick_idx_length_minus1 plus 1 determines the length of the bottom_right_brick_idx_delta[i] syntax element. The variable NumSubPics is obtained as equal to the number of sub-pictures in the picture, for example, based on the sub-picture signaling in the SPS. The flag subpic_split_flag[i] equal to 0 specifies that the i-th sub-picture consists of exactly one rectangular slice. The flag subpic_split_flag[i] equal to 1 specifies that the i-th sub-picture consists of one or more rectangular slices. The value num_slices_in_subpic_minus2[i] plus 2 specifies the number of rectangular slices in the i-th sub-image. The bricks in the i-th sub-image are numbered in the brick-scanning order, bottom_right_brick_idx_delta[i][j] and sign_bottom_right_brick_idx_delta[i][j] define a difference value, signed, which is used to calculate the ordinal number of the bottom right brick of the j-th rectangular slice in i th sub-image relative to the lower right brick (j-l)-th rectangular slice of the i-th sub-image when j is greater than 0, or relative to 0 (i.e., upper left corner of the i-th sub-image) when j is 0. This is the difference value, signed can be defined to bottom_right_brick_idx_delta[i][j] when sign_bottom_right_brick_idx_delta[i][j] is 1 and bottom_right_brick_idx_delta[i][j], sign_bottom_right_brick_idx_delta[i][j] are 0, but can also be defined with setting reverse values of sign_bottom_right_brick_idx_delta[i][j].

Обозначение некодированных прямоугольных слайсовNotation of uncoded rectangular slices

[0307] В некоторых применениях желательно иметь возможность назначить контент, который должен быть кодирован и/или декодирован, в прямоугольные слайсы таким образом, чтобы было занято только подмножество прямоугольных слайсов. Например, при потоковой передаче 360-градусного видео, зависящей от порта просмотра, может приниматься только подмножество прямоугольных слайсов. В другом примере может применяться кодирование, на основе патчей, объемного видео или видео облака точек, где патчи занимают только подмножество прямоугольных слайсов изображения.[0307] In some applications, it is desirable to be able to assign content to be encoded and/or decoded to rectangular slices such that only a subset of the rectangular slices is occupied. For example, when streaming 360-degree video depending on the viewport, only a subset of rectangular slices can be received. In another example, patch-based 3D video or point cloud video encoding may be applied, where the patches occupy only a subset of rectangular image slices.

[0308] В соответствии с одним из вариантов осуществления настоящего изобретения, для кодирования, некодированные прямоугольные слайсы указывают в битовом потоке или вместе с ним, например, в PPS. Некодированные прямоугольные слайсы не кодируют в битовый поток в виде блоков NAL VCL. Некодированные прямоугольные слайсы восстанавливают (например, в декодированное опорное изображение) с использованием заранее заданного или указанного способа, например, устанавливают значения восстановленных отсчетов в массивах отсчетов равными 0.[0308] In accordance with one embodiment of the present invention, for encoding, uncoded rectangular slices are indicated in or along with a bitstream, for example, in a PPS. Uncoded rectangular slices are not encoded into the bitstream as VCL NAL units. Uncoded rectangular slices are reconstructed (eg, into a decoded reference picture) using a predetermined or specified method, for example, setting the values of the reconstructed samples in the sample arrays to 0.

[0309] В соответствии с одним из вариантов осуществления настоящего изобретения, для декодирования, некодированные прямоугольные слайсы декодируют из битового потока или вместе с ним, например, из PPS. Некодированные прямоугольные слайсы не декодируют из битового потока в виде блоков NAL VCL. Вместо этого некодированные прямоугольные слайсы декодируют (например, в декодированное опорное изображение) с использованием заранее заданного или указанного способа, например, устанавливают значения декодированных отсчетов в массивах отсчетов равными 0.[0309] In accordance with one embodiment of the present invention, for decoding, uncoded rectangular slices are decoded from or along with a bitstream, such as from a PPS. Uncoded rectangular slices are not decoded from the bitstream as VCL NAL units. Instead, the uncoded rectangular slices are decoded (eg, into a decoded reference picture) using a predetermined or specified method, eg, setting the values of the decoded samples in the sample arrays to 0.

[0310] В соответствии с одним из вариантов осуществления настоящего изобретения, применимом для кодирования и/или декодирования, для каждого прямоугольного слайса указывают и/или декодируют флаг, который указывает, является ли прямоугольный слайс некодированным или нет.[0310] In accordance with one embodiment of the present invention applicable to encoding and/or decoding, for each rectangular slice, a flag is indicated and/or decoded that indicates whether the rectangular slice is unencoded or not.

[0311] В соответствии с одним из вариантов осуществления настоящего изобретения количество некодированных прямоугольных слайсов указывают и/или декодируют с использованием кодового слова переменной длины, например, в формате ue(v). Прямоугольные слайсы проходят в заранее заданном порядке сканирования (например в обратном порядке сканирования растра верхних левых CTU прямоугольных слайсов). Для каждого пройденного прямоугольного слайса указывают и/или декодируют флаг, позволяющий заключить, является ли прямоугольный слайс некодированным или нет. Если прямоугольный слайс не кодирован, количество прямоугольных слайсов, оставшихся для обозначения как некодированные, уменьшают на 1. Процедура продолжается до тех пор, пока не останется прямоугольных слайсов, которые можно обозначить некодированными.[0311] In accordance with one embodiment of the present invention, the number of uncoded rectangular slices is indicated and/or decoded using a variable length codeword, such as in ue(v) format. The rectangular slices are traversed in a predetermined scan order (eg, in reverse order of the raster scan of the top left CTUs of the rectangular slices). For each traversed rectangular slice, a flag is indicated and/or decoded to determine whether the rectangular slice is uncoded or not. If the rectangular slice is not encoded, the number of rectangular slices remaining to be designated as unencoded is reduced by 1. The procedure continues until there are no remaining rectangular slices that can be designated as unencoded.

[0312] Фиг. 15 является графическим представлением типовой системы мультимедийной связи, в которой могут быть реализованы различные варианты осуществления настоящего изобретения. В соответствии с иллюстрацией фиг. 8, источник 1510 данных предоставляет исходный сигнал в аналоговом, несжатом цифровом или сжатом цифровом формате, или в любой комбинации из этих форматов. Кодер 1520 может иметь в своем составе средства предварительной обработки, например, средства преобразования формата данных и/или средства фильтрации исходного сигнала, или может иметь соединение с такими средствами. Кодер 1520 кодирует исходный сигнал в кодированный битовый поток медиаданных. Следует отметить, что кодируемый битовый поток может приниматься, напрямую или опосредованно, от удаленного устройства, расположенного в сети практически любого типа. Также, битовый поток может приниматься от локального аппаратного или программного обеспечения. Кодер 1520 может быть способен кодировать более одного типа медиаданных, например, аудио- и видеоданные, или могут требоваться более одного кодера 1520 для кодирования различных типов исходного сигнала. Кодер 1520 может также получать входные данные, полученные при помощи синтеза, такие как графику или текст, или может быть способен формировать кодированные битовые потоки синтезированных медиаданных. Ниже, для простоты описания, будет рассмотрена обработка только одного кодированного битового потока, содержащего однотипные мультимедийные данные. Однако нужно отметить, что обычно сервисы вещания реального времени включают несколько потоков (как правило, по меньшей мере один аудиопоток, видеопоток и текстовый поток субтитров). Также, нужно отметить, что система может включать множество кодеров, однако на фиг. 8, для простоты описания, без потери общности, показан только один кодер 1520. Описание и примеры в настоящем документы описывают именно процедуру кодирования, однако при этом специалисты в данной области техники должны понимать, что те же самые принципы и идеи применимы и для соответствующей процедуры декодирования, и наоборот.[0312] FIG. 15 is a graphical representation of an exemplary multimedia communication system in which various embodiments of the present invention may be implemented. In accordance with the illustration of FIG. 8, data source 1510 provides the original signal in analog, uncompressed digital, or compressed digital format, or any combination of these formats. The encoder 1520 may include, or be connected to, pre-processing means such as data format conversion and/or source signal filtering means. An encoder 1520 encodes the original signal into an encoded media bitstream. It should be noted that the bitstream to be encoded may be received, directly or indirectly, from a remote device located on virtually any type of network. Also, the bit stream may be received from local hardware or software. Encoder 1520 may be capable of encoding more than one type of media, such as audio and video, or more than one encoder 1520 may be required to encode different types of source signal. The encoder 1520 may also receive synthetic input, such as graphics or text, or may be capable of generating encoded synthesized media bitstreams. Below, for simplicity of description, processing of only one encoded bitstream containing the same type of multimedia data will be considered. However, it should be noted that typically real-time broadcast services include multiple streams (typically at least one audio stream, a video stream, and a subtitle text stream). Also, it should be noted that the system may include multiple encoders, however, in FIG. 8, for ease of description, without loss of generality, only one encoder 1520 is shown. The description and examples in this document describe the encoding procedure, however, those skilled in the art should understand that the same principles and ideas apply to the corresponding procedure. decoding and vice versa.

[0313] Кодированный битовый поток медиаданных может быть передан в хранилище 1530. Хранилище 1530 может включать любой тип запоминающего устройства большой емкости для хранения кодированного битового потока медиаданных. Формат кодированного битового потока медиаданных в хранилище 1530 может быть элементарным автономным форматом битового потока, или один или более кодированных битовых потоков медиаданных могут быть инкапсулированы в контейнерный файл, или кодированные медиаданные могут быть инкапсулированы в формат сегмента (Segment), подходящего для DASH или аналогичной системы потоковой передачи), и храниться в виде последовательности сегментов. Если один или более битовых потоков медиаданных инкапсулируют в контейнерный файл, может применяться формирователь файлов (не показан на чертеже) для сохранения одного или более битовых потоков медиаданных в файл и для формирования метаданных формата файла, которые также сохраняют в файл. Кодер 1520 и/или хранилище 1530 могут включать формирователь файлов, или же формирователь файлов может быть функционально связан кодером 1520 и/или хранилищем 1530. Некоторые системы работают «на лету», то есть не используют память и передают кодированный битовый поток медиаданных из кодера 1520 непосредственно в передатчик 1540. Затем кодированный битовый поток медиаданных передают, когда это необходимо, в передатчик 1540, также именуемый сервером. Формат, используемый при передаче, может быть элементарным автономным форматом битового потока, пакетным форматом потока, форматом сегментов (Segment), подходящих для DASH или аналогичной системы потоковой передачи, или один или более кодированных битовых потоков медиаданных могут быть инкапсулированы в контейнерный файл. Кодер 1520, хранилище 1530 и передатчик 1540 могут располагаться в одном и том же физическом устройстве, или же они могут входить в состав отдельных устройств. Кодер 1520 и сервер 1540 могут работать с данными реального времени, и в этом случае кодированный битовый поток медиаданных, как правило, не хранят на постоянной основе, а буферизуют в течение небольших промежутков времени в кодере 1520 видеоданных и/или на сервере 230 для сглаживания колебаний задержек на обработку, задержек на передачу и битрейта кодированных медиаданных.[0313] The encoded media bitstream may be transferred to storage 1530. Storage 1530 may include any type of mass storage device for storing the encoded media bitstream. The format of the encoded media bitstream in storage 1530 may be an elementary standalone bitstream format, or one or more encoded media bitstreams may be encapsulated in a container file, or the encoded media may be encapsulated in a Segment format suitable for DASH or a similar system. streaming) and stored as a sequence of segments. If one or more media bitstreams are encapsulated in a container file, a file builder (not shown) can be used to save the one or more media bitstreams to a file and to generate file format metadata that is also saved to the file. The encoder 1520 and/or storage 1530 may include a file generator, or the file generator may be operatively coupled to encoder 1520 and/or storage 1530. Some systems operate on the fly, that is, do not use memory and transmit an encoded media bitstream from encoder 1520 directly to the transmitter 1540. The encoded media bitstream is then transmitted, when necessary, to the transmitter 1540, also referred to as the server. The format used in transmission may be an elementary standalone bitstream format, a packet stream format, a Segment format suitable for DASH or a similar streaming system, or one or more encoded media bitstreams may be encapsulated in a container file. The encoder 1520, store 1530, and transmitter 1540 may reside on the same physical device, or they may be part of separate devices. The encoder 1520 and the server 1540 may operate on real-time data, in which case the encoded media bitstream is typically not permanently stored but buffered for short periods of time in the video encoder 1520 and/or server 230 to smooth out fluctuations. processing delays, transmission delays, and encoded media bitrate.

[0314] Сервер 1540 передает кодированный битовый поток медиаданных с использованием стека протоколов связи. Стек может включать, без ограничения перечисленным, одно или более из следующего: протокол передачи в реальном времени (RTP), протокол пользовательских датаграмм (UDP), протокол передачи гипертекста (Hypertext Transfer Protocol, HTTP), протокол управления передачей (Transmission Control Protocol, TCP) и протокол Интернета (IP). Когда стек протоколов связи является пакетным, сервер 1540 инкапсулирует кодированный битовый поток медиаданных в пакеты. Например, когда используется протокол RTP, сервер 1540 инкапсулирует кодированный битовый поток медиаданных в пакеты RTP согласно формату полезной нагрузки протокола RTP. Как правило, каждый тип медиаданных имеет отдельный формат полезной нагрузки RTP. Следует еще раз отметить, что система может содержать более одного сервера 1540, но для простоты в последующем описании рассмотрен только один сервер 1540.[0314] The server 1540 transmits an encoded media bitstream using a communication protocol stack. The stack may include, but is not limited to, one or more of the following: Real Time Transfer Protocol (RTP), User Datagram Protocol (UDP), Hypertext Transfer Protocol (HTTP), Transmission Control Protocol (TCP) ) and the Internet Protocol (IP). When the communication protocol stack is packetized, the server 1540 encapsulates the encoded media bitstream into packets. For example, when the RTP protocol is used, the server 1540 encapsulates the encoded media bitstream into RTP packets according to the RTP protocol payload format. Typically, each media type has a separate RTP payload format. It should again be noted that the system may contain more than one server 1540, but for simplicity, only one server 1540 is considered in the following description.

[0315] Если мультимедийные данные инкапсулированы в контейнерный файл для хранилища 1530 или для ввода данных в передатчик 1540, передатчик 1540 может иметь в своем составе «анализатор передаваемого файла» (не показан на чертеже) или может быть функционально связан с подобным элементом. В частности, если контейнерный файл сам по себе не передают, но по меньшей мере один содержащийся в нем кодированный битовый поток медиаданных инкапсулируют для передачи по протоколу связи, анализатор передаваемого файла находит соответствующие фрагменты кодированного битового потока медиаданных, подлежащие передаче по протоколу связи. Анализатор передаваемого файла может также быть полезен при создании корректного формата для протокола связи, например, заголовков и полезной нагрузки пакетов. Мультимедийный контейнерный файл может содержать инструкции по инкапсуляции, такие как треки указаний в ISOBMFF, используемые для инкапсуляции по меньшей мере одного кодированного битового потока медиаданных в протокол связи.[0315] If the media data is encapsulated in a container file for storage 1530 or for input to transmitter 1540, transmitter 1540 may include a "transfer file parser" (not shown) or may be operatively associated with a similar element. In particular, if the container file itself is not transmitted, but at least one encoded media bitstream contained therein is encapsulated for transmission over a communication protocol, the parser of the transmitted file finds corresponding pieces of the encoded media bitstream to be transmitted over the communication protocol. The file transfer parser can also be useful in generating the correct format for the communication protocol, such as packet headers and payloads. The media container file may contain encapsulation instructions, such as hint tracks in ISOBMFF, used to encapsulate at least one encoded media bitstream into a communication protocol.

[0316] Сервер 1540, опционально, может быть соединен со шлюзом 1550 по сети связи, которая может представлять собой, например, комбинацию из CDN, Интернета и/или одной или более сетей доступа. В дополнение или альтернативно, шлюз может называться промежуточным узлом. В случае DASH шлюз может быть пограничным сервером (сети CDN) или веб-прокси-сервером. Следует отметить, что в общем случае система может включать любое количество шлюзов или аналогичных элементов, однако для простоты в приведенном ниже описании рассмотрен только один шлюз 1550. Шлюз 1550 может выполнять функции различных типов, например, трансляцию потока пакетов, соответствующую одному стеку протоколов связи, в другой стек протоколов связи, слияние и разветвление потоков данных и манипуляцию потоками данных согласно возможностям нисходящей линии связи и/или приемника, например, управление битовой скоростью передачи данных перенаправляемого потока согласно превалирующим сетевым условиям в нисходящей линии связи. Шлюз 1550 в различных вариантах осуществления настоящего изобретения может быть серверным объектом.[0316] The server 1540 may optionally be connected to the gateway 1550 over a communications network, which may be, for example, a combination of a CDN, the Internet, and/or one or more access networks. In addition or alternatively, the gateway may be referred to as an intermediate node. In the case of DASH, the gateway can be an edge server (CDNs) or a web proxy. It should be noted that, in general, a system may include any number of gateways or the like, however, for simplicity, only one gateway 1550 is considered in the description below. into another communication protocol stack, merging and forking data streams, and manipulating the data streams according to the capabilities of the downlink and/or the receiver, for example, controlling the data bit rate of the redirected stream according to the prevailing network conditions in the downlink. Gateway 1550 in various embodiments of the present invention may be a server entity.

[0317] Система включает один или более приемников 1560, которые, в общем случае, способны принимать, демодулировать и/или декапсулировать переданный сигнал с получением кодированного битового потока мультимедийных данных. Кодированный битовый поток медиаданных может быть передан в записывающее хранилище 1570. Записывающее хранилище 1570 может включать любой тип запоминающего устройства большой емкости для хранения кодированного битового потока медиаданных. Записывающие хранилище 1570 может, дополнительно или альтернативно, включать вычислительную память, например, память с произвольным доступом. Формат кодированного битового потока медиаданных в записывающем хранилище 1570 может быть элементарным автономны форматом битового потока, или один или более кодированных битовых потоков медиаданных могут быть инкапсулированы в контейнерный файл. Если имеются несколько кодированных битовых потоков медиаданных, например, аудиопоток и видеопоток, связанные друг с другом, то, как правило, применяют контейнерный файл, и при этом приемник 1560 содержит формирователь контейнерного файла (или связан с подобным формирователем), формирующий контейнерный файл на основе входных потоков. Некоторые системы работают «на лету», то есть передают кодированный битовый поток медиаданных из приемника 1560 непосредственно в декодер 1580, без задействования записывающего хранилища 1570. В некоторых системах в записывающем хранилище 1570 хранят только последнюю по времени часть записанного потока, например, последний 10-минутный фрагмент записанного потока, тогда как все ранее записанные данные удаляют из записывающего хранилища 1570.[0317] The system includes one or more receivers 1560 that are generally capable of receiving, demodulating, and/or decapsulating a transmitted signal to obtain an encoded media bitstream. The encoded media bitstream may be transferred to recording storage 1570. Recording storage 1570 may include any type of mass storage device for storing the encoded media bitstream. Write storage 1570 may additionally or alternatively include computational memory, such as random access memory. The format of the encoded media bitstream in recording storage 1570 may be an elementary standalone bitstream format, or one or more encoded media bitstreams may be encapsulated in a container file. If there are multiple encoded media bitstreams, such as an audio stream and a video stream, associated with each other, then a container file is typically used, and the receiver 1560 includes (or is associated with a similar container file generator) generating a container file based on input streams. Some systems operate on the fly, that is, transmit the encoded media bitstream from the receiver 1560 directly to the decoder 1580, without using the recording store 1570. In some systems, the recording store 1570 stores only the latest part of the recorded stream, for example, the last minute fragment of the recorded stream, while all previously recorded data is deleted from the recording storage 1570.

[0318] Кодированный битовый поток медиаданных из записывающего хранилища 1570 может быть передан в декодер 1580. Если имеются несколько кодированных битовых потоков медиаданных, например, аудиопоток и видеопоток, связанные друг с другом и инкапсулированные в контейнерный файл, или один битовый поток, который инкапсулирован в контейнерный файл, например, для более простого доступа, то применяют анализатор файлов (не показан на чертеже) для декапсуляции всех кодированных битовых потоков медиаданных из контейнерного файла. Записывающее хранилище 1570 или декодер 1580 могут иметь анализатор файлов в своем составе, или анализатор файлов может быть связан с записывающим хранилищем 1570, или с декодером 1580. Также, нужно отметить, что система может включать множество декодеров, однако в данном документе, для простоты описания, без потери общности, показан только один кодер 1570.[0318] The encoded media bitstream from the recording storage 1570 may be passed to the decoder 1580. If there are multiple encoded media bitstreams, such as an audio stream and a video stream, associated with each other and encapsulated in a container file, or a single bitstream that is encapsulated in container file, for example, for easier access, a file analyzer (not shown) is used to decapsulate all encoded media bitstreams from the container file. Recording store 1570 or decoder 1580 may have a file parser in its composition, or the file parser may be associated with recording store 1570 or decoder 1580. Also, it should be noted that the system may include multiple decoders, however, in this document, for simplicity of description , without loss of generality, only one 1570 encoder is shown.

[0319] Кодированный битовый поток медиаданных может далее обрабатываться декодером 1570, на выходе которого получают один или более несжатых потоков медиаданных. Наконец, устройство 1590 воспроизведения может воспроизводить несжатые потоки медиаданных, например, с помощью громкоговорителя или дисплея. Приемник 1560, записывающее хранилище 1570, декодер 1570 и устройство 1590 воспроизведения могут располагаться в одном и том же физическом устройстве, или же они могут входить в состав отдельных устройств.[0319] The encoded media bitstream may be further processed by a decoder 1570, which outputs one or more uncompressed media streams. Finally, the playback device 1590 can play uncompressed media streams, such as through a speaker or display. Receiver 1560, record store 1570, decoder 1570, and playback device 1590 may reside on the same physical device, or they may be part of separate devices.

[0320] Выше часть вариантов осуществления настоящего изобретения была описана на примере стандарта VVC/H.266 и/или с использованием соответствующей терминологии. Нужно понимать, что варианты осуществления настоящего изобретения могут быть аналогичным образом реализованы с любым видеокодерами и/или видеодекодерами.[0320] The above part of the embodiments of the present invention has been described on the example of the VVC/H.266 standard and/or using appropriate terminology. It is to be understood that embodiments of the present invention may be similarly implemented with any video encoders and/or video decoders.

[0321] Выше некоторые из примеров осуществления настоящего изобретения были описаны с упоминанием конкретных синтаксических структур и/или синтаксических элементов. Следует понимать, что варианты осуществления настоящего изобретения могут быть аналогичным образом реализованы с использованием других синтаксических структур и/или синтаксических элементов. Например, когда варианты осуществления настоящего изобретения описаны с упоминанием синтаксических элементов в синтаксисе PPS, необходимо понимать, что варианты осуществления настоящего изобретения могут быть реализованы с использованием этих же или аналогичных синтаксических элементов в других синтаксических структурах, например, в наборе SPS.[0321] Above, some of the embodiments of the present invention have been described with reference to specific syntax structures and/or syntax elements. It should be understood that embodiments of the present invention may similarly be implemented using other syntax structures and/or syntax elements. For example, when embodiments of the present invention are described with reference to syntax elements in the PPS syntax, it should be understood that embodiments of the present invention may be implemented using the same or similar syntax elements in other syntax structures, such as in the SPS.

[0322] Выше некоторые из вариантов осуществления настоящего изобретения описаны с использованием термина «указание». Следует понимать, что термин «указание» можно понимать как кодирование или формирование одного или более синтаксических элементов в одной или более синтаксических структурах, в битовом потоке или вместе с ним.[0322] Above, some of the embodiments of the present invention are described using the term "indication". It should be understood that the term "indication" can be understood as encoding or generating one or more syntax elements in one or more syntax structures, in or with a bitstream.

[0323] Выше некоторые из вариантов осуществления настоящего изобретения описаны с использованием термина «декодирование». Следует понимать, что термин «декодирование» можно понимать как декодирование или анализ одного или нескольких синтаксических элементов из одной или более синтаксических структур, из битового потока или вместе с ним.[0323] Above, some of the embodiments of the present invention are described using the term "decoding". It should be understood that the term "decoding" can be understood as decoding or parsing one or more syntax elements from one or more syntax structures, from or together with a bitstream.

[0324] В приведенном выше описании, там, где примеры осуществления настоящего изобретения были описаны со ссылками на кодер, нужно понимать, что результирующий поток и декодер также могут включают соответствующие элементы. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на декодер, нужно понимать, что кодер может иметь структуру и/или компьютерную программу для формирования битового потока, декодируемого декодером. К примеру, часть вариантов осуществления настоящего изобретения была описана в связи с формированием блока предсказания как части кодирования. Варианты осуществления настоящего изобретения могут быть аналогичным образом реализованы с формированием блока предсказания как части декодирования, с той разницей, что параметры кодирования, такие как горизонтальное смещение и вертикальное смещение, декодируют из битового потока, а не определяются кодером.[0324] In the above description, where embodiments of the present invention have been described with reference to an encoder, it is to be understood that the resulting stream and decoder may also include corresponding elements. Likewise, where embodiments of the present invention have been described with reference to a decoder, it is to be understood that the encoder may have a structure and/or a computer program for generating a bitstream decoded by the decoder. For example, part of the embodiments of the present invention has been described in connection with generating a prediction block as part of the encoding. Embodiments of the present invention can be similarly implemented with generating a prediction block as part of the decoding, with the difference that encoding parameters such as horizontal offset and vertical offset are decoded from the bitstream rather than determined by the encoder.

[0325] В рассмотренных выше вариантах осуществления настоящего изобретения кодек описан на примере отдельных устройств кодирования и декодирования - для упрощения понимания применяемых процедур. Однако нужно понимать, что устройство, структуры и операции могут быть реализованы в виде единого устройства/структуры/операции кодирования-декодирования. Также допускается, что кодер и декодер могут совместно использовать часть общих элементов, или что всех элементы могут быть общими.[0325] In the above embodiments of the present invention, the codec is described on the example of separate encoding and decoding devices - to simplify the understanding of the procedures used. However, it is to be understood that the device, structures, and operations may be implemented as a single device/structure/encode/decode operation. It is also allowed that the encoder and decoder may share some of the common elements, or that all elements may be common.

[0326] Рассмотренные выше примеры описывают работу вариантов осуществления настоящего изобретения в кодеке электронного устройства, однако нужно понимать, что настоящее изобретение, определенное приложенной формулой изобретения, может быть реализовано как часть любого видеокодека. Так, например, варианты осуществления настоящего изобретения могут быть реализованы в видеокодеке, в котором видеокодирование может быть реализовано по фиксированным, или проводным, каналам связи.[0326] The examples discussed above describe the operation of embodiments of the present invention in an electronic device codec, however, it should be understood that the present invention, as defined by the appended claims, may be implemented as part of any video codec. Thus, for example, embodiments of the present invention may be implemented in a video codec in which video coding may be implemented over fixed, or wired, communication channels.

[0327] Соответственно, абонентское оборудование может включать в свой состав видеокодек, например, аналогичный рассмотренным в приведенном выше описании настоящего изобретения. Нужно понимать, что выражение «абонентское оборудование» используется как охватывающие любые подходящие типы беспроводного абонентского оборудования, например, мобильные телефоны, портативные устройства обработки данных или портативные веб-браузеры.[0327] Accordingly, the user equipment may include a video codec, for example, similar to those discussed in the above description of the present invention. It is to be understood that the term "user equipment" is used to encompass any suitable type of wireless user equipment, such as mobile phones, portable data processing devices, or portable web browsers.

[0328] При этом элементы наземной сети мобильной связи общего пользования (public land mobile network, PLMN) также могут включать видеокодеки в соответствии с предшествующим описанием.[0328] In this case, the elements of the public land mobile network (PLMN) may also include video codecs in accordance with the previous description.

[0329] В общем случае различные варианты осуществления настоящего изобретения могут быть реализованы в виде аппаратного обеспечения или схем специального назначения, программного обеспечения, логики или какой-либо их комбинации. К примеру, некоторые из аспектов могут быть реализованы в виде аппаратного обеспечения, тогда как другие аспекты могут быть реализованы в виде микропрограммного или программного обеспечения, которое может исполняться контроллером, микропроцессором или иным вычислительным устройством, без ограничения настоящего изобретения перечисленным. Различные аспекты настоящего изобретения допускают иллюстрацию и описание в виде блок-схем, блок-схем алгоритмов или с помощью некоторых других наглядных представлений, но при этом нужно понимать, что блоки, устройства, системы, методы или способы, описанные в настоящем документе, могут быть реализованы, в качестве неограничивающих примеров, в виде аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения, схем или логики специального назначения, аппаратного обеспечения или контроллера общего назначения, или же иных вычислительных устройств, или некоторой их комбинации.[0329] In general, various embodiments of the present invention may be implemented in hardware or special-purpose circuitry, software, logic, or any combination thereof. For example, some of the aspects may be implemented in hardware, while other aspects may be implemented in firmware or software that may be executed by a controller, microprocessor, or other computing device, without limiting the present invention to those listed. Various aspects of the present invention are capable of being illustrated and described by block diagrams, flowcharts, or some other pictorial representation, but it should be understood that the blocks, devices, systems, methods, or methods described herein may be implemented, by way of non-limiting examples, as hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller, or other computing devices, or some combination thereof.

[0330] Варианты осуществления настоящего изобретения могут быть реализованы с помощью программного обеспечения, исполняемого процессором данных мобильного устройства, например, процессорным элементом, или с помощью аппаратного обеспечения, или с помощью комбинации программного и аппаратного обеспечения. Также в этом отношении следует отметить, что любые блоки последовательностей логических операций, проиллюстрированные на чертежах, могут представлять собой шаги программы или взаимосвязанные логические схемы, блоки и функции, или комбинацию программных шагов и логических схем, блоков и функций. Программное обеспечение может храниться на таких физических носителях, как микросхемы памяти или блоки памяти, реализованные внутри процессора, магнитные носители, например, жесткий диск или гибкий диск, и оптические носители, например, DVD и их варианты для хранения данных, CD.[0330] Embodiments of the present invention may be implemented by software executed by a data processor of a mobile device, such as a processing element, or by hardware, or by a combination of software and hardware. Also in this regard, it should be noted that any flow blocks illustrated in the drawings may represent program steps or related logics, blocks and functions, or a combination of program steps and logics, blocks and functions. The software may be stored on physical media such as memory chips or memory blocks implemented within the processor, magnetic media such as a hard disk drive or floppy disk, and optical media such as DVDs and their data storage variants, CDs.

[0331] Память может относиться к любому типу, соответствующему локальному техническому окружению, при этом она может быть реализована с использованием любой подходящей технологии хранения данных, например, запоминающие устройства на полупроводниках, магнитные запоминающие устройства и системы, оптические запоминающие устройства и системы, несъемная или съемная память. Процессоры данных могут относиться к любому типу, соответствующему локальному техническому окружению и могут включать одно или более из следующего: компьютеры общего назначения, компьютеры специального назначения, микропроцессоры, цифровые сигнальные процессоры (digital signal processors, DSP), процессоры на основе многоядерной архитектуры - в качестве неограничивающих примеров.[0331] The memory may be of any type appropriate to the local technical environment, and may be implemented using any suitable storage technology, such as semiconductor storage devices, magnetic storage devices and systems, optical storage devices and systems, non-removable or removable memory. Data processors may be of any type appropriate to the local technical environment and may include one or more of the following: general purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs), processors based on multi-core architecture - as non-limiting examples.

[0332] Варианты осуществления настоящего изобретения могут применяться на практике в различных компонентах, например, в модулях интегральных схем. Процесс разработки интегральных схем, в целом, в высокой степени автоматизирован. Существуют сложные и мощные программные инструменты для преобразования проектов логического уровня в конструкции полупроводниковых схем, готовые для вытравливания и формовки на полупроводниковой подложке.[0332] Embodiments of the present invention may be practiced in various components, such as integrated circuit modules. The process of developing integrated circuits, in general, is highly automated. Sophisticated and powerful software tools exist for converting logic-level designs into semiconductor circuit designs, ready to be etched and molded onto a semiconductor substrate.

[0333] Программы, подобные поставляемой фирмой Synopsys, Inc (Маунтин-Вью, Калифорния) или фирмой Cadence Design (Сан-Хосе, Калифорния), осуществляют автоматическую разводку проводников и позиционирование компонентов на полупроводниковом кристалле с использованием общепринятых правил разработки, а также с использованием библиотек заранее сохраненных модулей проектов. По завершении разработки полупроводниковой схемы результирующая конструкция, в стандартизированном электронном формате (например, Opus, GDSII и т.п.) может быть передана на полупроводниковое производство для изготовления микросхемы.[0333] Programs such as those supplied by Synopsys, Inc (Mountain View, CA) or Cadence Design (San Jose, CA) automatically route conductors and position components on a semiconductor chip using generally accepted design rules, as well as using libraries of pre-saved project modules. Upon completion of the development of a semiconductor circuit, the resulting design, in a standardized electronic format (for example, Opus, GDSII, etc.), can be transferred to a semiconductor manufacturer for the manufacture of a microcircuit.

[0334] В предшествующем изложении с помощью иллюстративных и неограничивающих примеров было представлено полное и информативное описание одного из примеров осуществления настоящего изобретения. Однако в свете предшествующего описания, рассматриваемого в сочетании с приложенными чертежами, специалистам в соответствующих областях техники могут быть очевидны различные модификации и доработки. Тем не менее, любые такие или аналогичные им модификации изобретения находятся в его объеме.[0334] In the foregoing, by way of illustrative and non-limiting examples, a complete and informative description of one embodiment of the present invention has been provided. However, in light of the foregoing description taken in conjunction with the accompanying drawings, various modifications and improvements may be apparent to those skilled in the relevant arts. However, any such or similar modifications of the invention are within its scope.

Claims (53)

1. Способ видеокодирования, содержащий:1. A video encoding method, comprising: определение количества блоков, подлежащих назначению в разделы и инициализированных как неназначенные;determining the number of blocks to be assigned to sections and initialized as unassigned; указание или логическое определение количества разделов явно заданного размера, подлежащих назначению;an indication or logical determination of the number of partitions of an explicit size to be assigned; указание размеров для разделов явно заданного размера и соответствующую маркировку неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования;specifying sizes for explicitly sized partitions and appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; указание числа блоков;specifying the number of blocks; циклическое назначение упомянутого числа блоков в разделы и соответствующую маркировку неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; иcyclically assigning said number of blocks to partitions and correspondingly marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and если количество неназначенных блоков больше 0, назначение неназначенных блоков в последний раздел.if the number of unassigned blocks is greater than 0, assign the unassigned blocks to the last section. 2. Способ по п. 1, в котором упомянутые разделы являются одним или более из следующего: столбцы тайлов; строки тайлов; строки кирпичей одного или более столбца тайла; строки кирпичей тайла; столбцы сетки, используемой для указания разбиения на субизображения; и строки сетки, используемой для указания разбиения на субизображения.2. The method of claim 1, wherein said sections are one or more of the following: tile columns; tile lines; rows of bricks of one or more tile columns; rows of tile bricks; the columns of the grid used to indicate the split into sub-images; and a grid string used to specify the split into sub-images. 3. Способ по п. 1 или 2, в котором упомянутые блоки являются одним или более из следующего: прямоугольные блоки отсчетов изображения и ячейки сетки, используемой для указания разбиения на субизображения.3. The method according to claim 1 or 2, wherein said blocks are one or more of the following: rectangular blocks of image samples and grid cells used to indicate sub-image partitioning. 4. Устройство для видеокодирования, содержащее:4. Device for video encoding, containing: средства определения количества блоков, подлежащих назначению в разделы и инициализированных как неназначенные;means for determining the number of blocks to be assigned to sections and initialized as unassigned; средства указания или логического определения количества разделов явно заданного размера, подлежащих назначению;means for specifying or logically determining the number of explicitly sized partitions to be assigned; средства указания размеров для разделов явно заданного размера и средства соответствующей маркировки неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования;means for specifying sizes for partitions of an explicit size, and means for appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; средства указания числа блоков;means for indicating the number of blocks; средства циклического назначения упомянутого числа блоков в разделы и средства соответствующей маркировки неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; иmeans for cyclically assigning said number of blocks to partitions and means for appropriately marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and средства назначения неназначенных блоков в последний раздел, когда количество неназначенных блоков больше 0.means of assigning unassigned blocks to the last partition when the number of unassigned blocks is greater than 0. 5. Устройство по п. 4, в котором упомянутые разделы являются одним или более из следующего: столбцы тайлов; строки тайлов; строки кирпичей одного или более столбца тайлов; строки кирпичей тайла; столбцы сетки, используемой для указания разбиения на субизображения; и строки сетки, используемой для указания разбиения на субизображения.5. The device according to claim 4, in which the mentioned sections are one or more of the following: columns of tiles; tile lines; rows of bricks of one or more columns of tiles; rows of tile bricks; the columns of the grid used to indicate the split into sub-images; and a grid string used to specify the split into sub-images. 6. Устройство по п. 4 или 5, в котором упомянутые блоки являются одним или более из следующего: прямоугольные блоки отсчетов изображения и ячейки сетки, используемой для указания разбиения на субизображения.6. An apparatus according to claim 4 or 5, wherein said blocks are one or more of the following: rectangular blocks of image samples and grid cells used to indicate sub-image partitioning. 7. Способ видеодекодирования, содержащий:7. Video decoding method, comprising: определение количества блоков, подлежащих назначению в разделы;determining the number of blocks to be assigned to sections; определение количества разделов явно заданного размера, подлежащих назначению;determining the number of explicitly sized partitions to be assigned; определение размеров для разделов явно заданного размера и соответствующую маркировку неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования;sizing partitions of an explicit size and appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; определение числа блоков;determining the number of blocks; циклическое назначение упомянутого числа блоков в разделы и соответствующая маркировка неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; иcyclically assigning said number of blocks to partitions and correspondingly marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and назначение неназначенных блоков в последний раздел, когда количество неназначенных блоков больше 0.assignment of unassigned blocks to the last partition when the number of unassigned blocks is greater than 0. 8. Способ по п. 7, в котором8. The method according to claim 7, in which определение количества разделов явно заданного размера, подлежащих назначению, включает декодирование количества разделов явно заданного размера, подлежащих назначению, из синтаксической структуры;determining the number of explicit size partitions to be assigned includes decoding the number of explicit size partitions to be assigned from the syntax structure; определение размеров разделов явно заданного размера включает декодирование размеров явно заданного размера из синтаксической структуры; иdetermining the sizes of explicitly sized partitions includes decoding the sizes of the explicitly sized sections from the syntactic structure; and определение числа блоков включает декодирование числа блоков из синтаксической структуры.determining the number of blocks includes decoding the number of blocks from the syntax structure. 9. Способ по п. 7 или 8, в котором упомянутые разделы являются одним или более из следующего: столбцы тайлов; строки тайлов; строки кирпичей одного или более столбца тайлов; строки кирпичей тайла; столбцы сетки, используемой для указания разбиения на субизображения; и строки сетки, используемой для указания разбиения на субизображения.9. The method of claim 7 or 8, wherein said sections are one or more of the following: tile columns; tile lines; rows of bricks of one or more columns of tiles; rows of tile bricks; the columns of the grid used to indicate the split into sub-images; and a grid string used to specify the split into sub-images. 10. Способ по любому из пп. 7-9, в котором упомянутые блоки являются одним или более из следующего: прямоугольные блоки отсчетов изображения и ячейки сетки, используемой для указания разбиения на субизображения.10. The method according to any one of paragraphs. 7-9, wherein said blocks are one or more of the following: rectangular blocks of image samples and grid cells used to indicate sub-image partitioning. 11. Устройство для видеодекодирования, содержащее:11. Device for video decoding, containing: средства определения количества блоков, подлежащих назначению в разделы; средства определения количества разделов явно заданного размера, подлежащих назначению;means for determining the number of blocks to be assigned to partitions; means for determining the number of explicitly sized partitions to be assigned; средства определения размеров для разделов явно заданного размера и средства соответствующей маркировки неназначенных блоков как назначенных в разделы в заранее заданном порядке сканирования;means for sizing partitions of an explicit size and means for appropriately marking unassigned blocks as assigned to partitions in a predetermined scan order; средства определения числа блоков;means for determining the number of blocks; средства циклического назначения упомянутого числа блоков в разделы и средства соответствующей маркировки неназначенных блоков как назначенных в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; иmeans for cyclically assigning said number of blocks to partitions and means for appropriately marking unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and средства назначения неназначенных блоков в последний раздел, когда количество неназначенных блоков больше 0.means of assigning unassigned blocks to the last partition when the number of unassigned blocks is greater than 0. 12. Устройство по п. 11, в котором упомянутые разделы являются одним или более из следующего: столбцы тайлов; строки тайлов; строки кирпичей одного или более столбца тайлов; строки кирпичей тайла; столбцы сетки, используемой для указания разбиения на субизображения; и строки сетки, используемой для указания разбиения на субизображения.12. The device according to claim 11, in which the said sections are one or more of the following: tile columns; tile lines; rows of bricks of one or more columns of tiles; rows of tile bricks; the columns of the grid used to indicate the split into sub-images; and a grid string used to specify the split into sub-images. 13. Устройство по п. 11 или 12, в котором упомянутые блоки являются одним или более из следующего: прямоугольные блоки отсчетов изображения и ячейки сетки, используемой для указания разбиения на субизображения.13. The apparatus of claim 11 or 12, wherein said blocks are one or more of the following: rectangular blocks of image samples and grid cells used to indicate sub-image partitioning. 14. Машиночитаемый носитель, хранящий исполняемые инструкции компьютерного программного кода, сконфигурированные так, чтобы при их исполнении устройством для видеокодирования:14. A computer-readable medium that stores executable computer program code instructions configured so that, when executed by a video encoding device: определять количество блоков, подлежащих назначению в разделы и инициализированных как неназначенные;determine the number of blocks to be assigned to sections and initialized as unassigned; указывать или логически определять количество разделов явно заданного размера, подлежащих назначению;specify or logically determine the number of explicitly sized partitions to be assigned; указывать размеры для разделов явно заданного размера и соответственно маркировать неназначенные блоки как назначенные в разделы в заранее заданном порядке сканирования;specify sizes for partitions of an explicit size, and accordingly mark unassigned blocks as assigned to partitions in a predetermined scan order; указывать число блоков;specify the number of blocks; циклически назначать упомянутое число блоков в разделы и соответственно маркировать неназначенные блоки как назначенные в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; иcyclically assign said number of blocks to partitions and accordingly mark unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and назначать неназначенные блоки в последний раздел, когда количество неназначенных блоков больше 0.assign unassigned blocks to the last partition when the number of unassigned blocks is greater than 0. 15. Машиночитаемый носитель, хранящий исполняемые инструкции компьютерного программного кода, сконфигурированные так, чтобы при их исполнении устройством для видеодекодирования:15. A computer-readable medium that stores executable computer program code instructions configured so that, when executed by a video decoding device: определять количество блоков, подлежащих назначению в разделы;determine the number of blocks to be assigned to partitions; определять количество разделов явно заданного размера, подлежащих назначению;determine the number of explicitly sized partitions to be assigned; определять размеры для разделов явно заданного размера и соответственно маркировать неназначенные блоки как назначенные в разделы в заранее заданном порядке сканирования;determine sizes for partitions of an explicit size, and accordingly mark unassigned blocks as assigned to partitions in a predetermined scan order; определять число блоков;determine the number of blocks; циклически назначать упомянутое число блоков в разделы и соответственно маркировать неназначенные блоки как назначенные в заранее заданном порядке сканирования до тех пор, пока количество неназначенных блоков не станет меньше, чем упомянутое число блоков; иcyclically assign said number of blocks to partitions and accordingly mark unassigned blocks as assigned in a predetermined scan order until the number of unassigned blocks is less than said number of blocks; and назначать неназначенные блоки в последний раздел, когда количество неназначенных блоков больше 0.assign unassigned blocks to the last partition when the number of unassigned blocks is greater than 0.
RU2021137086A 2019-06-03 2020-05-29 Device, method and machine-readable media for video encoding and video decoding RU2787545C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20195465 2019-06-03
FI20195728 2019-09-03

Publications (1)

Publication Number Publication Date
RU2787545C1 true RU2787545C1 (en) 2023-01-10

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2573194C1 (en) * 2009-08-14 2016-01-20 Самсунг Электроникс Ко., Лтд. Video encoding method and device, and video decoding method and device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2573194C1 (en) * 2009-08-14 2016-01-20 Самсунг Электроникс Ко., Лтд. Video encoding method and device, and video decoding method and device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YE-KUI WANG еt al, AHG12: Signalling for tile and brick partitioning, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET-N0857-v1, 14th Meeting: Geneva, 19-27 March 2019. BROSS B. et al, Versatile Video Coding (Draft 5), Joint Video Experts Team (JVET) ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET-N1001, 14th Meeting: Geneva, 19-27 March 2019. *

Similar Documents

Publication Publication Date Title
JP6687770B2 (en) Video encoding / decoding device, method, and computer program
JP6771493B2 (en) Grouping palette bypass bins for video coding
US20220217342A1 (en) An apparatus, a method and a computer program for video coding and decoding
CN114097209B (en) Adaptive parameter set in access unit in video coding
CA2950182C (en) Systems and methods for selectively performing a bitstream conformance check
EP3456054B1 (en) Methods and systems for generating regional nesting messages for video pictures
JP6782704B2 (en) Grouping palette indexes for video coding
JP6761045B2 (en) Color remapping information for video Supplemental enhancement information Methods and systems for generating messages
CN114270864A (en) System and method for signaling picture information in video coding
WO2019079117A1 (en) Chroma quantization parameter (qp) offset
JP2022501915A (en) Systems and methods for signaling parameters in video coding
CN113826391A (en) Range of minimum coding block size in video coding and decoding
CN113632489A (en) System and method for signaling tile group information in video coding
KR20220061245A (en) Video coding and decoding apparatus, method and computer program
CN113875256A (en) Method and apparatus for video encoding and decoding
CN113841390A (en) Method and apparatus for video encoding and decoding
JP7353394B2 (en) Apparatus, method, and computer program for video coding and decoding
WO2023107790A1 (en) Adaptive film grain synthesis
RU2787545C1 (en) Device, method and machine-readable media for video encoding and video decoding
RU2790177C1 (en) Device and method for video encoding and video decoding
CN114080804A (en) System and method for signaling decoded picture buffer information in video coding
RU2795346C1 (en) Device method and computer program for encoding and decoding video
CN118283280A (en) Method and apparatus for performing neural network filtering on video data
CN117857789A (en) Method and apparatus for updating post-loop filter information of neural network for video data
CN117651132A (en) Method and apparatus for signaling post-loop filter information for neural networks