RU2811983C2 - Encoder, decoder and related methods for sub-block partition mode - Google Patents

Encoder, decoder and related methods for sub-block partition mode Download PDF

Info

Publication number
RU2811983C2
RU2811983C2 RU2022101005A RU2022101005A RU2811983C2 RU 2811983 C2 RU2811983 C2 RU 2811983C2 RU 2022101005 A RU2022101005 A RU 2022101005A RU 2022101005 A RU2022101005 A RU 2022101005A RU 2811983 C2 RU2811983 C2 RU 2811983C2
Authority
RU
Russia
Prior art keywords
value
parameter
block
prediction
sample
Prior art date
Application number
RU2022101005A
Other languages
Russian (ru)
Other versions
RU2022101005A (en
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 Хуавэй Текнолоджиз Ко., Лтд.
Publication of RU2022101005A publication Critical patent/RU2022101005A/en
Application granted granted Critical
Publication of RU2811983C2 publication Critical patent/RU2811983C2/en

Links

Images

Abstract

FIELD: image encoding and decoding.
SUBSTANCE: get the pointer value for the current block according to the bitstream. Get the value of the first parameter for the current block and the value of the second parameter for the current block according to the value of the pointer and the predefined lookup table, obtaining the value of the sampling distance for the sample that is in the current block according to the value of the first parameter and the value of the second parameter. The prediction value for the sample is obtained according to the sampling distance value for the sample, where the indicator is merge_gpm_partition_idx, where the first parameter is angleIdx, which represents the angle to split the current block, where the second parameter is distanceIdx, which represents the distance to split the current block.
EFFECT: improved compression ratio with minimal loss of image quality or no such loss at all.
14 cl, 18 dwg, 4 tbl

Description

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

Варианты осуществления настоящей заявки (раскрытия) в общем относятся к области обработки изображений и, более конкретно, к предсказанию, использующему режимы субблочного разделения.Embodiments of the present application (disclosure) generally relate to the field of image processing and, more specifically, to prediction using sub-block modes.

УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE ART

Осуществление видеокодирования (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.Video encoding (video encoding and decoding) is used in a wide range of digital video applications, such as digital broadcast television, video transmission over the Internet and mobile networks, and real-time conversational applications such as video chat, video conferencing, DVD and Blu-ray discs. , systems for collecting and editing video content and video cameras for security applications.

Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для осуществления кодирования видеоданных перед передачей или сохранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео у получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео, желательны улучшенные методы сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.The amount of video data required to present even a relatively short video can be significant, which can lead to difficulties when the data must be streamed or otherwise transmitted over a communications network with limited bandwidth. Thus, video data is typically compressed before being transmitted over modern telecommunications networks. Video size can also be an issue when the video is stored on a storage device, as memory resources may be limited. Video compression devices often use software and/or hardware at the source to encode video data before transmission or storage, thereby reducing the amount of data required to represent digital video images. The compressed data is then received by a video decompression device at the recipient, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques that improve compression rates with little or no loss in image quality are desired.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

Варианты осуществления настоящей заявки обеспечивают устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.Embodiments of the present application provide devices and methods for encoding and decoding according to independent claims.

Вышеупомянутые и другие цели достигаются решением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.The above and other objectives are achieved by solving the independent claims. Additional forms of implementation are obvious from the dependent claims, description and figures.

Первый аспект настоящего изобретения обеспечивает способ осуществления кодирования, реализуемый устройством декодирования, причем способ содержит: получение битового потока; получение значения указателя для текущего блока согласно битовому потоку; получение значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска; получение значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра; и получение значения предсказания для выборки согласно значению расстояния выборки для выборки.The first aspect of the present invention provides a method for performing encoding implemented by a decoding apparatus, the method comprising: obtaining a bit stream; obtaining a pointer value for the current block according to the bit stream; obtaining the value of the first parameter for the current block and the value of the second parameter for the current block according to the pointer value and the predefined lookup table; obtaining a sample distance value for a sample that is in the current block according to the value of the first parameter and the value of the second parameter; and obtaining a prediction value for the sample according to the sampling distance value for the sample.

Согласно вариантам осуществления настоящего изобретения параметры для разделения блока (например, параметр угла, параметр расстояния… и тому подобное) хранятся в предопределенной таблице поиска, следовательно, фактические значения этих параметров не нужно передавать в битовом потоке, и значения этих параметров получают согласно значению указания, кодируемому в битовом потоке. Таким образом, эффективность кодирования может быть улучшена. According to embodiments of the present invention, parameters for block division (for example, an angle parameter, a distance parameter... and the like) are stored in a predefined lookup table, therefore, the actual values of these parameters do not need to be transmitted in the bit stream, and the values of these parameters are obtained according to the indication value, encoded in the bitstream. In this way, encoding efficiency can be improved.

Как показано на Фиг 15, раскрыт способ осуществления кодирования, реализуемый устройством декодирования, причем способ содержит:As shown in FIG. 15, a method for performing encoding implemented by a decoding apparatus is disclosed, the method comprising:

S1501: получение битового потока. S1501: receive bit stream.

Битовый поток может быть получен согласно беспроводной сети или проводной сети. Битовый поток может передаваться с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радио связь, микроволновая связь, WIFI, Bluetooth, LTE или 5G.The bit stream can be obtained according to a wireless network or a wired network. The bit stream can be transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, microwave, WIFI, Bluetooth, LTE or 5G.

В варианте осуществления битовый поток представляет собой последовательность битов, например в форме потока единиц уровня сетевой абстракции (NAL) или байтового потока, который формирует представление последовательности единиц доступа (AU), формирующей одну или более кодированных видеопоследовательностей (CVS).In an embodiment, a bit stream is a sequence of bits, for example in the form of a network abstraction layer (NAL) unit stream or a byte stream that forms a representation of a sequence of access units (AUs) forming one or more coded video sequences (CVS).

В некоторых вариантах осуществления для процесса декодирования сторона декодера считывает битовый поток и выводит декодированные изображения из битового потока; для процесса кодирования сторона кодера создает битовый поток.In some embodiments, for the decoding process, the decoder side reads the bitstream and outputs decoded images from the bitstream; For the encoding process, the encoder side creates a bit stream.

Обычно битовый поток будет содержать элементы синтаксиса, которые формируются синтаксической структурой. элемент синтаксиса: Элемент данных, представленный в битовом потоке.Typically the bitstream will contain syntax elements that are formed by the syntax structure. syntax element: A data element represented in a bitstream.

синтаксическая структура: ноль или более элементов синтаксиса, присутствующих вместе в битовом потоке в специфицированном порядке.syntax structure: zero or more syntax elements present together in a bitstream in a specified order.

В конкретном примере форматы битового потока специфицируют взаимосвязь между потоком единиц уровня сетевой абстракции (NAL) и байтовым потоком, каждый из которых называется битовым потоком.In a specific example, bitstream formats specify the relationship between a stream of Network Abstraction Layer (NAL) units and a byte stream, each of which is called a bitstream.

Битовый поток может быть, например, в одном из двух форматов: в формате потока единиц NAL или в формате байтового потока. Формат потока единиц NAL концептуально является более «базовым» типом. Формат потока единиц NAL содержит последовательность синтаксических структур, называемых единицами NAL. Эта последовательность упорядочена в порядке декодирования. Существуют ограничения, налагаемые на порядок декодирования (и содержимое) единиц NAL в потоке единиц NAL.The bit stream may be, for example, in one of two formats: a NAL unit stream format or a byte stream format. The NAL unit stream format is conceptually a more "basic" type. The NAL unit stream format contains a sequence of syntactic structures called NAL units. This sequence is ordered in decoding order. There are restrictions placed on the decoding order (and content) of NAL units in a NAL unit stream.

Формат байтового потока может быть построен из формата потока единиц NAL путем упорядочивания единиц NAL в порядке декодирования и добавления к каждой единице NAL начального кодового префикса и нуля или более байтов с нулевым значением для формирования потока из байтов. Формат потока единиц NAL может быть извлечен из формата байтового потока путем поиска местоположения уникального шаблона начального кодового префикса в пределах этого потока из байтов.A byte stream format can be constructed from a NAL unit stream format by arranging the NAL units in decoding order and appending to each NAL unit an initial code prefix and zero or more null-valued bytes to form a byte stream. The NAL unit stream format can be extracted from the byte stream format by searching for the location of a unique starting code prefix pattern within that byte stream.

В этом разделе описывается вариант осуществления взаимосвязи между исходными и декодированными изображениями, которая передается через битовый поток.This section describes an embodiment of the relationship between the original and decoded images, which is carried through a bitstream.

Источник видео, который представлен битовым потоком, представляет собой последовательность изображений в порядке декодирования.The video source, which is represented by a bitstream, is a sequence of images in decoding order.

Каждое из исходных и декодированных изображений состоит из одного или более массивов выборок:Each of the original and decoded images consists of one or more sample arrays:

- Только яркость (Y) (монохромная).- Brightness (Y) only (monochrome).

- Яркость и две цветности (YCbCr или YCgCo).- Brightness and two chromaticities (YCbCr or YCgCo).

- Зеленый, синий и красный (GBR, также известный как RGB).- Green, Blue and Red (GBR, also known as RGB).

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

Переменные и термины, ассоциированные с этими массивами, упоминаются как яркость (либо L, либо Y) и цветность, причем два массива цветности упоминаются как Cb и Cr; независимо от фактического используемого способа представления цвета. Фактический используемый способ представления цвета может быть указан в синтаксисе, который специфицирован в параметрах VUI как специфицировано в ITU-T H.SEI | ISO/IEC 23002-7.The variables and terms associated with these arrays are referred to as luma (either L or Y) and chroma, with the two chroma arrays referred to as Cb and Cr; regardless of the actual color representation method used. The actual color representation method used may be specified in the syntax that is specified in the VUI parameters as specified in ITU-T H.SEI | ISO/IEC 23002-7.

Переменные SubWidthC и SubHeightC специфицированы в таблице 2 в зависимости от структуры выборки (дискретизации) формата цветности, которая специфицирована через sps_chroma_format_idc и sps_separate_colour_plane_flag.The SubWidthC and SubHeightC variables are specified in Table 2 depending on the chroma format sampling structure, which is specified through sps_chroma_format_idc and sps_separate_colour_plane_flag.

Таблица 2 - Значения SubWidthC и SubHeightC, выводимые из sps_chroma_format_idc и sps_separate_colour_plane_flagTable 2 - SubWidthC and SubHeightC values derived from sps_chroma_format_idc and sps_separate_colour_plane_flag

sps_chroma_format_idcsps_chroma_format_idc sps_separate_colour_plane_flagsps_separate_colour_plane_flag Chroma formatChroma format SubWidthCSubWidthC SubHeightCSubHeightC 00 00 MonochromeMonochrome 11 11 11 00 4:2:04:2:0 22 22 22 00 4:2:24:2:2 22 11 33 00 4:4:44:4:4 11 11 33 11 4:4:44:4:4 11 11

В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.In a monochrome sample there is only one sample array, which is nominally considered the luma array.

В выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости.In a 4:2:0 sample, each of the two chroma arrays is half the height and half the width of the luma array.

В выборке 4:2:2 каждый из двух массивов цветности имеет аналогичную высоту и половину ширины массива яркости.In a 4:2:2 sample, each of the two chroma arrays has the same height and half the width of the lumina array.

В выборке 4:4:4, в зависимости от значения sps_separate_colour_plane_flag, применяется следующее:In a 4:4:4 sample, depending on the value of sps_separate_colour_plane_flag, the following applies:

- Если sps_separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет одинаковую высоту и ширину, что и массив яркости.- If sps_separate_colour_plane_flag is 0, each of the two chroma arrays has the same height and width as the luminance array.

- Иначе (sps_separate_colour_plane_flag равен 1) три цветовые плоскости обрабатываются отдельно как подвергаемые монохромной выборке изображения.- Otherwise (sps_separate_colour_plane_flag is equal to 1) the three color planes are treated separately as monochrome sampled images.

S1502: получение значения указателя для текущего блока согласно битовому потоку.S1502: Get the pointer value for the current block according to the bit stream.

В варианте осуществления значение указателя используется для специфицирования формы разделения в режиме слияния с геометрическим разделением. Например, указателем может быть merge_gpm_partition_idx[ x0 ][ y0 ], при этом merge_gpm_partition_idx[ x0 ][ y0 ] специфицирует форму разделения режима слияния геометрического разделения. Индексы x0, y0 массива специфицируют местоположение (x0, y0 ) верхней левой выборки яркости рассматриваемого блока кодирования относительно верхней левой выборки яркости изображения. In an embodiment, the pointer value is used to specify the shape of the split in geometric split merge mode. For example, the pointer could be merge_gpm_partition_idx[ x0 ][ y0 ], where merge_gpm_partition_idx[ x0 ][ y0 ] specifies the partition form of the geometric partition merge mode. The array indices x0, y0 specify the location (x0, y0) of the top left luminance sample of the encoding block in question relative to the top left luminance sample of the image.

Обычно значение merge_gpm_partition_idx[ x0 ][ y0 ] декодируется из битового потока. В примере диапазон значений для merge_gpm_partition_idx[ ][ ] составляет от 0 до 63, в том числе 0 и 63. В примере процессом декодирования для merge_gpm_partition_idx[ ][ ] является «обход».Typically the merge_gpm_partition_idx[ x0 ][ y0 ] value is decoded from the bitstream. In the example, the range of values for merge_gpm_partition_idx[ ][ ] is from 0 to 63, including 0 and 63. In the example, the decoding process for merge_gpm_partition_idx[ ][ ] is "bypass".

Когда merge_gpm_partition_idx[ x0 ][ y0 ] не присутствует, он подразумевается равным 0.When merge_gpm_partition_idx[ x0 ][ y0 ] is not present, it is assumed to be 0.

S1503: получение значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска.S1503: Obtain the value of the first parameter for the current block and the value of the second parameter for the current block according to the pointer value and the predefined lookup table.

В одной реализации первый параметр представляет угол (или является угловым) для разделения текущего блока.In one implementation, the first parameter represents the angle (or is the angle) for dividing the current block.

В одной реализации второй параметр представляет расстояние для разделения текущего блока.In one implementation, the second parameter represents the distance to split the current block.

В одной реализации предопределенная таблица поиска содержит пары первого и второго параметров,In one implementation, the predefined lookup table contains pairs of first and second parameters,

при этом когда первый параметр в паре представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, соответствующий второй параметр в этой паре не представляет расстояние в ноль выборок от центра текущего блока.provided that when the first parameter in a pair represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270 or 315 degrees, the corresponding second parameter in that pair does not represent a distance of zero samples from the center of the current block.

В одной реализации предопределенная таблица поиска содержит пары первого и второго параметров,In one implementation, the predefined lookup table contains pairs of first and second parameters,

при этом первый параметр в паре представляет угол, не соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.wherein the first parameter in the pair represents an angle other than one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block.

В одной реализации предопределенная таблица поиска содержит пары первого и второго параметров,In one implementation, the predefined lookup table contains pairs of first and second parameters,

при этом первый параметр в паре представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.wherein the first parameter in the pair represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block.

В одной реализации второй параметр специфицирует индекс расстояния геометрического раздела, или второй параметр описывает расстояние от линии разграничения до центра текущего блока.In one implementation, the second parameter specifies the distance index of the geometric section, or the second parameter describes the distance from the demarcation line to the center of the current block.

В варианте осуществления переменная угла разделения angleIdx (параметр 1) и переменная расстояния distanceIdx (параметр 2) режима геометрического разделения устанавливаются согласно значению merge_gpm_partition_idx[ xCb ][ yCb ] (указатель), как специфицировано в нижеследующей таблице. Можно понять, что в упомянутой реализации эта взаимосвязь может быть реализована согласно таблице 1 или согласно некоторой функции.In an embodiment, the partition angle variable angleIdx (parameter 1) and the distance variable distanceIdx (parameter 2) of the geometric partition mode are set according to the value of merge_gpm_partition_idx[ xCb ][ yCb ] (pointer) as specified in the following table. It can be understood that in the mentioned implementation, this relationship may be implemented according to Table 1 or according to some function.

Таблица 1: Спецификация angleIdx и distanceIdx на основе merge_gpm_partition_idxTable 1: Specification of angleIdx and distanceIdx based on merge_gpm_partition_idx

merge_gpm_partition_idxmerge_gpm_partition_idx 00 11 22 33 44 55 66 77 88 99 1010 11eleven 1212 1313 1414 1515 angleIdxangleIdx 00 00 22 22 22 22 33 33 33 33 44 44 44 44 55 55 distanceIdxdistanceIdx 11 33 00 11 22 33 00 11 22 33 00 11 22 33 00 11 merge_gpm_partition_idxmerge_gpm_partition_idx 1616 1717 1818 1919 2020 2121 2222 2323 2424 2525 2626 2727 2828 2929 30thirty 3131 angleIdxangleIdx 55 55 88 88 11eleven 11eleven 11eleven 11eleven 1212 1212 1212 1212 1313 1313 1313 1313 distanceIdxdistanceIdx 22 33 11 33 00 11 22 33 00 11 22 33 00 11 22 33 merge_gpm_partition_idxmerge_gpm_partition_idx 3232 3333 3434 3535 3636 3737 3838 3939 4040 4141 4242 4343 4444 4545 4646 4747 angleIdxangleIdx 1414 1414 1414 1414 1616 1616 1818 1818 1818 1919 1919 1919 2020 2020 2020 2121 distanceIdxdistanceIdx 00 11 22 33 11 33 11 22 33 11 22 33 11 22 33 11 merge_gpm_partition_idxmerge_gpm_partition_idx 4848 4949 5050 5151 5252 5353 5454 5555 5656 5757 5858 5959 6060 6161 6262 6363 angleIdxangleIdx 2121 2121 2424 2424 2727 2727 2727 2828 2828 2828 2929 2929 2929 30thirty 30thirty 30thirty distanceIdxdistanceIdx 22 33 11 33 11 22 33 11 22 33 11 22 33 11 22 33

S1504: получение значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра.S1504: Obtaining the sampling distance value for the sample that is in the current block according to the value of the first parameter and the value of the second parameter.

В варианте осуществления этот этап содержит:In an embodiment, this step comprises:

Этап 3.1: получение индексного значения параметра угла (alphaN или angleIdx) для текущего блока, значения ширины (W) текущего блока, значения высоты (H) текущего блока. W и H представляют ширину и высоту текущего блока числом выборок. Например, блок кодирования, ширина и высота которого равны 8, представляет собой квадратный блок, содержащий 64 выборки. В другом примере W и H представляют ширину и высоту текущего блока числом выборок яркости. Индексное значение параметра угла может быть получено согласно приведенному выше описанию, относящемуся к таблице 1.Step 3.1: Get the index value of the angle parameter (alphaN or angleIdx) for the current block, the width (W) value of the current block, the height (H) value of the current block. W and H represent the width and height of the current block by the number of samples. For example, a coding block whose width and height are 8 is a square block containing 64 samples. In another example, W and H represent the width and height of the current block by the number of brightness samples. The index value of the angle parameter can be obtained according to the above description referring to Table 1.

Этап 3.2: получение значения соотношения whRatio согласно значению W и значению H, значение whRatio представляет соотношение между шириной и высотой текущего блока кодирования.Step 3.2: Obtaining the whRatio value according to the W value and the H value, the whRatio value represents the ratio between the width and height of the current encoding block.

В примере whRatio=H/W; или whRatio=W/H.In the example whRatio=H/W; or whRatio=W/H.

В другом примере две переменные nCbW и nCbH специфицируют ширину и высоту текущего блока кодирования, а переменная cIdx специфицирует индекс цветового компонента.In another example, two variables nCbW and nCbH specify the width and height of the current encoding block, and the variable cIdx specifies the color component index.

переменные nW, nH и whRatio выводятся следующим образом:The variables nW, nH and whRatio are output as follows:

nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;

nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;

whRatio=nH/nW.whRatio=nH/nW.

В примере переменные SubWidthC и SubHeightC специфицированы в таблице 2.In the example, the variables SubWidthC and SubHeightC are specified in Table 2.

Этап 3.3: Получение значения shiftHor согласно таблице поиска, значению альфа и значению whRatio, в примере значение альфа (alphaN или angleIdx) и значение whRatio используются в качестве индексных значений таблицы поиска. Значение shiftHor также может быть получено согласно функции, при этом значение альфа (alphaN или angleIdx) и значение whRatio представляют собой входные данные упомянутой функции, а значение shiftHor представляет собой выходные данные упомянутой функции. В примере результат функции аналогичен или совпадает с таблицей поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки.Step 3.3: Retrieving the shiftHor value according to the lookup table, alpha value and whRatio value, in the example the alpha value (alphaN or angleIdx) and whRatio value are used as index values of the lookup table. The shiftHor value can also be obtained according to a function, wherein the alpha value (alphaN or angleIdx) and the whRatio value represent the input of the function, and the shiftHor value represents the output of the function. In the example, the function result is the same as or the same as the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process.

В другом примере функция может быть представлена как shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.In another example, the function could be represented as shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.

Этап 3.4: значение sample_dist вычисляется согласно значению shiftHor.Step 3.4: The value of sample_dist is calculated according to the value of shiftHor.

В примере, для вычисления расстояния выборки (sample_dist) сначала следующим образом выводятся переменные offsetX и offsetY:In the example, to calculate the sample distance (sample_dist), the offsetX and offsetY variables are first output as follows:

Если shiftHor равен 0, применяется следующее:If shiftHor is 0, the following applies:

offsetX=( −nW ) >> 1, offsetX=( −nW ) >> 1,

offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );

Иначе (shiftHor равен 1), применяется следующее:Otherwise (shiftHor is 1), the following applies:

offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) ); offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) );

offsetY=( − nH ) >> 1;offsetY=( − nH ) >> 1;

- Переменные xL и yL выводятся следующим образом:- Variables xL and yL are output as follows:

xL=( cIdx== 0 ) ? x : x * SubWidthC xL=( cIdx== 0 ) ? x : x * SubWidthC

yL=( cIdx== 0 ) ? y : y * SubHeightC yL=( cIdx== 0 ) ? y : y * SubHeightC

sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY )  <<  1 ) + 1 ) ) * disLut[ displacementY ].sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY )  << 1 ) + 1 ) ) * disLut[ displacementY ].

Переменные displacementX и displacementY выводятся следующим образом:The displacementX and displacementY variables are output as follows:

hwRatio=cbHeight/cbWidth;hwRatio=cbHeight/cbWidth;

displacementX=angleIdx;displacementX=angleIdx;

displacementY=( angleIdx+8 ) % 32.displacementY=( angleIdx+8 ) % 32.

Массив disLut специфицирован в таблице 3 ниже.The disLut array is specified in Table 3 below.

В некоторых вариантах осуществления согласно геометрической модели выборки в блоке кодирования считаются находящимися в двух субблоках. Субблок A или субблок B может содержать часть (но не все) выборок в текущем блоке кодирования. Субблок А или субблок В может быть представлен согласно знаку sample_dist каждой из выборок. Sample_dist может быть получено согласно примерам и вариантам осуществления в других абзацах.In some embodiments, according to the geometric model, samples in a coding block are considered to be in two subblocks. Subblock A or subblock B may contain some (but not all) of the samples in the current encoding block. Subblock A or subblock B can be represented according to the sample_dist sign of each of the samples. Sample_dist can be obtained according to the examples and embodiments in other paragraphs.

S1505: получение значения предсказания для выборки согласно значению расстояния выборки для выборки.S1505: Obtain the prediction value for the sample according to the sampling distance value for the sample.

В одной реализации получение значения предсказания для выборки согласно значению расстояния выборки для выборки содержит:In one implementation, obtaining the prediction value for a sample according to the sampling distance value for a sample comprises:

вычисление двух весовых коэффициентов согласно значению расстояния выборки; иcalculating two weight coefficients according to the sampling distance value; And

получение значения предсказания для выборки согласно первому значению предсказания, второму значению предсказания и упомянутым двум весовым коэффициентам.obtaining a prediction value for the sample according to the first prediction value, the second prediction value, and the two weights.

В одной реализации значение расстояния выборки представляет собой расстояние по горизонтали или расстояние по вертикали, или комбинацию расстояний по вертикали и по горизонтали от упомянутой выборки до линии разграничения, при этом линия разграничения используется для разбиения блока кодирования на два субблока.In one implementation, the sample distance value is a horizontal distance or a vertical distance, or a combination of vertical and horizontal distances, from said sample to a demarcation line, wherein the demarcation line is used to split a coding block into two sub-blocks.

В одном примере вычисленное sample_dist используется для вычисления весовых коэффициентов, причем весовые коэффициенты используются для объединения первого значения предсказания и второго значения предсказания, соответствующих упомянутой выборке. В примере весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2, имея ввиду вес, соответствующий первому значению предсказания, и вес, соответствующий второму значению предсказания.In one example, the calculated sample_dist is used to calculate weights, wherein the weights are used to combine a first prediction value and a second prediction value corresponding to said sample. In the example, the weights are denoted as sampleWeight1 and sampleWeight2, meaning a weight corresponding to the first prediction value and a weight corresponding to the second prediction value.

В одном примере весовые коэффициенты вычисляются согласно следующим функциямIn one example, the weights are calculated according to the following functions

weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;

wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).

В этом примере wValue представляет собой sampleWeight1, а 8-wValue представляет собой sampleWeight2. Переменная partFlip определяется согласно значению angleIdx. В примере partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, или partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0.In this example, wValue represents sampleWeight1 and 8-wValue represents sampleWeight2. The partFlip variable is defined according to the angleIdx value. In the example, partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, or partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 10.

В одном примере объединенное значение выборки предсказания в координате выборки (x, y) вычисляется согласно первому значению предсказания в координате (x, y), второму значению предсказания в координате (x, y), sampleWeight1 и sampleWeight2.In one example, the combined prediction sample value at the sample coordinate (x,y) is calculated according to the first prediction value at the (x,y) coordinate, the second prediction value at the (x,y) coordinate, sampleWeight1, and sampleWeight2.

В примере значение выборки предсказания выводится следующим образом:In the example, the prediction sample value is output as follows:

pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 )  >>  shift1 ).pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >>> shift1).

При этом bitDepth представляет битовую глубину выборки, переменную shift1 получают согласно упомянутой bitDepth, в примере shift1= Max( 5, 17 - BitDepth ); Переменную offset1 получают согласно shift1, в примере offset1= 1 << ( shift1-1 ), predSamplesLA и predSamplesLB представляют собой два (nCbW)x(nCbH) массива.In this case, bitDepth represents the bit depth of the sample, the shift1 variable is obtained according to the mentioned bitDepth, in the example shift1= Max( 5, 17 - BitDepth ); The variable offset1 is obtained according to shift1, in the example offset1= 1 << ( shift1-1 ), predSamplesLA and predSamplesLB are two (nCbW)x(nCbH) arrays.

В одном варианте осуществления раскрыт способ осуществления кодирования, реализуемый устройством кодирования, содержащий: выбор значения первого параметра и значения второго параметра;In one embodiment, a method for performing encoding implemented by an encoding device is disclosed, comprising: selecting a first parameter value and a second parameter value;

получение индексного значения согласно значению первого параметра, значению второго параметра и поисковой таблице; и кодирование индексного значения в битовый поток.obtaining an index value according to the value of the first parameter, the value of the second parameter and the lookup table; and encoding the index value into the bit stream.

Детали для каждого этапа на стороне кодера соответствуют приведенным выше примерам на стороне декодера.The details for each stage on the encoder side correspond to the examples above on the decoder side.

Как показано на Фиг.16, второй аспект настоящего изобретения обеспечивает устройство 1600 декодирования, причем устройство декодирования содержит:As shown in FIG. 16, a second aspect of the present invention provides a decoding apparatus 1600, the decoding apparatus comprising:

модуль 1601 приема, который выполнен с возможностью получения битового потока и получения значения указателя для текущего блока согласно битовому потоку;a receiving unit 1601, which is configured to receive a bit stream and obtain a pointer value for a current block according to the bit stream;

модуль 1602 обработки параметров разделения, который выполнен с возможностью получения значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска;a division parameter processing unit 1602, which is configured to obtain a first parameter value for the current block and a second parameter value for the current block according to the pointer value and the predefined lookup table;

модуль 1603 вычисления, который выполнен с возможностью получения значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра; иa calculation unit 1603, which is configured to obtain a sample distance value for a sample that is in the current block according to the value of the first parameter and the value of the second parameter; And

модуль 1604 предсказания, который выполнен с возможностью получения значения предсказания для выборки согласно значению расстояния выборки для выборки.a prediction module 1604, which is configured to obtain a prediction value for a sample according to a sampling distance value for the sample.

Способ согласно первому аспекту изобретения может быть выполнен устройством согласно второму аспекту изобретения. Дополнительные признаки и формы реализации вышеуказанных способов соответствуют признакам и формам реализации устройства согласно второму аспекту изобретения.The method according to the first aspect of the invention can be carried out by a device according to the second aspect of the invention. Additional features and forms of implementation of the above methods correspond to the features and forms of implementation of the device according to the second aspect of the invention.

В варианте осуществления раскрыт декодер (30) или кодер (20), содержащий схему обработки для выполнения способа согласно любому из вышеупомянутых вариантов осуществления и реализации.In an embodiment, a decoder (30) or encoder (20) is disclosed comprising processing circuitry for performing a method according to any of the above embodiments and implementations.

В варианте осуществления раскрыт компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из вышеупомянутых вариантов осуществления и реализации.In an embodiment, a computer program product is disclosed comprising program code for executing a method according to any of the above embodiments and implementations.

В варианте осуществления раскрыт декодер или кодер, содержащий:In an embodiment, a decoder or encoder is disclosed, comprising:

один или более процессоров; иone or more processors; And

долговременный считываемый компьютером носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует декодер или кодер для выполнения способа согласно любому из вышеупомянутых вариантов осуществления и реализации.a non-transitory computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures a decoder or encoder to perform a method according to any of the above embodiments and implementations.

В варианте осуществления раскрыт долговременный запоминающий носитель, который включает в себя закодированный битовый поток, декодируемый устройством декодирования изображений, причем битовый поток генерируется посредством разбиения кадра видеосигнала или сигнала изображения на множество блоков и включает в себя множество синтаксических элементов, при этом упомянутое множество синтаксических элементов содержит указатель (синтаксис) согласно любому из вышеупомянутых вариантов осуществления и реализации.In an embodiment, a non-transitory storage medium is disclosed that includes an encoded bit stream decoded by an image decoding apparatus, wherein the bit stream is generated by dividing a frame of a video signal or an image signal into a plurality of blocks and includes a plurality of syntax elements, wherein the plurality of syntax elements comprises: pointer (syntax) according to any of the above embodiments and implementations.

Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.Details of one or more embodiments are set forth in the accompanying drawings and in the following description. Other features, objects and advantages will be apparent from the description, drawings and claims.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Ниже варианты осуществления изобретения описаны более подробно со ссылкой на приложенные фигуры и чертежи, на которых:Below, embodiments of the invention are described in more detail with reference to the accompanying figures and drawings, in which:

ФИГ. 1A является блок-схемой, показывающей пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;FIG. 1A is a block diagram showing an example of a video encoding system configured to implement embodiments of the invention;

ФИГ. 1B является блок-схемой, показывающей другой пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;FIG. 1B is a block diagram showing another example of a video encoding system configured to implement embodiments of the invention;

ФИГ. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;FIG. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the invention;

ФИГ. 3 является блок-схемой, показывающей примерную структуру видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;FIG. 3 is a block diagram showing an exemplary structure of a video decoder configured to implement embodiments of the invention;

ФИГ. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;FIG. 4 is a block diagram illustrating an example of an encoding device or a decoding device;

ФИГ. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;FIG. 5 is a block diagram illustrating another example of an encoding device or a decoding device;

ФИГ. 6a иллюстрирует пример совместно размещенного блока;FIG. 6a illustrates an example of a co-located block;

ФИГ. 6b иллюстрирует пример пространственных соседних блоков.FIG. 6b illustrates an example of spatial neighboring blocks.

ФИГ. 7 иллюстрирует некоторые примеры режима треугольного предсказания.FIG. 7 illustrates some examples of the triangular prediction mode.

ФИГ. 8 иллюстрирует некоторые примеры режима субблочного предсказания.FIG. 8 illustrates some examples of the sub-block prediction mode.

ФИГ. 9-12 показывают некоторые примеры разделения блока.FIG. 9-12 show some examples of block splitting.

ФИГ. 13 является блок-схемой, показывающей примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента.FIG. 13 is a block diagram showing an exemplary structure of a content delivery system 3100 that implements a content delivery service.

ФИГ. 14 является блок-схемой, показывающей структуру примерного терминального устройства.FIG. 14 is a block diagram showing the structure of an exemplary terminal device.

ФИГ. 15 является блок-схемой последовательности операций, показывающей вариант осуществления способа, относящегося к настоящему изобретению.FIG. 15 is a flowchart showing an embodiment of a method related to the present invention.

ФИГ. 16 является блок-схемой, показывающей вариант осуществления устройства, относящегося к настоящему изобретению.FIG. 16 is a block diagram showing an embodiment of an apparatus related to the present invention.

Одинаковые ссылочные позиции далее относятся к идентичным или по меньшей мере функционально эквивалентным признакам, если явно не указано иное.Identical reference numerals hereinafter refer to identical or at least functionally equivalent features unless expressly indicated otherwise.

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯDETAILED DESCRIPTION OF IMPLEMENTATION OPTIONS

В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which show, by way of illustration, specific aspects of embodiments of the invention or specific aspects in which embodiments of the present invention may be used. It is understood that embodiments of the present invention may be used in other aspects and contain structural or logical changes not shown in the figures. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.

Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.For example, it will be understood that the disclosure associated with the described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or a plurality of specific method steps are described, the corresponding apparatus may include one or a plurality of blocks, such as functional blocks, to perform the one or multiple method steps described (e.g., one block performing one or a plurality of steps, or a plurality of blocks, each of which performs one or more of a plurality of steps), even if such one or more blocks are not explicitly described or illustrated in the figures. On the other hand, for example, if a particular device is described in terms of one or a plurality of blocks, such as functional blocks, the corresponding method may include one step for performing the functionality of the one or multiple blocks (e.g., one step performing the functionality of the one or multiple blocks , or a plurality of steps, each of which performs the functionality of one or more of a plurality of blocks), even if such one or multiple steps are not explicitly described or illustrated in the figures. It is further understood that features of various exemplary embodiments and/or aspects described herein may be combined with each other unless specifically stated otherwise.

Видеокодирование обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» термины «кадр» или «картинка» могут использоваться как синонимы в области видеокодирования. Видеокодирование (или осуществление кодирования (coding) в целом) содержит две части: видеокодирование (video encoding) и видеодекодирование. Видеокодирование выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).Video encoding generally refers to the processing of a sequence of images that form a video or video sequence. Instead of the term "image", the terms "frame" or "picture" may be used interchangeably in the field of video coding. Video encoding (or the implementation of encoding in general) contains two parts: video encoding and video decoding. Video encoding is performed at the source side and typically involves processing (eg, through compression) of the source video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission). Video decoding is performed at the receiver end and typically involves reverse processing from the encoder to reconstruct video images. Embodiments relating to "coding" video images (or images in general) are to be understood as referring to "encoding" or "decoding" video images or corresponding video sequences. The combination of an encoding part and a decoding part is also called CODEC (encoding and decoding).

В случае видеокодирования без потерь исходные видеоизображения могут быть восстановлены, т.е. восстановленные видеоизображения имеют такое же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например посредством квантования, для сокращения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.In the case of lossless video encoding, the original video images can be restored, i.e. the restored video images are of the same quality as the original video images (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video encoding, additional compression is performed, for example through quantization, to reduce the amount of data representing video images that cannot be fully reconstructed at the decoder, i.e. The quality of the restored video images is lower or worse compared to the quality of the original video images.

Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборок и кодирование с 2D преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (интра-изображения) предсказания и/или временного (интер-изображения) предсказания для генерирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут генерировать идентичные предсказания (например, интра- и интер-предсказания) и/или реконструкции для обработки, то есть осуществления кодирования (coding), последующих блоков.Several video coding standards belong to the group of “hybrid lossy video codecs” (that is, they combine spatial and temporal sample-domain prediction and 2D transform coding to apply quantization to the transform domain). Each image of a video sequence is usually divided into a set of non-overlapping blocks, and coding is usually performed at the block level. In other words, in an encoder, video is typically processed, i.e. encoded, at the block (video block) level, for example using spatial (intra-image) prediction and/or temporal (inter-image) prediction to generate a prediction block, the prediction block is subtracted from the current block (the block that is currently being processed/to be processed) to obtain a residual block, the residual block is transformed and this residual block is quantized in the transformation domain to reduce the amount of data (compression) to be transmitted, whereas in the decoder the reverse processing is compared to applied by the encoder to an encoded or compressed block to reconstruct the current block for presentation. In addition, the encoder duplicates the decoder's processing loop so that they will both generate identical predictions (eg, intra- and inter-predictions) and/or reconstructions for processing, ie encoding, of subsequent blocks.

В нижеследующих вариантах осуществления системы 10 видеокодирования, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1 по 3.In the following embodiments, the video encoding system 10, the video encoder 20 and the video decoder 30 are described based on FIGS. from 1 to 3.

ФИГ. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодирования, например систему 10 видеокодирования (или сокращенно систему 10 кодирования), которая может использовать методы из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 видеокодирования представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методов в соответствии с различными примерами, описанными в настоящей заявке.FIG. 1A is a schematic block diagram illustrating an exemplary encoding system 10, such as video encoding system 10 (or encoding system 10 for short), which may use the techniques of the present application. Video encoder 20 (or encoder 20 for short) and video decoder 30 (or decoder 30 for short) of video encoding system 10 are examples of devices that may be configured to perform methods in accordance with various examples described herein.

Как показано на ФИГ. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 изображения, например в устройство-получатель 14 для декодирования кодированных данных 13 изображения.As shown in FIG. 1A, the encoding system 10 includes a source device 12 configured to provide encoded image data 21, for example, to a destination device 14 for decoding the encoded image data 13.

Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. опционально, содержать источник 16 изображений, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображений, а также интерфейс связи или блок 22 связи.The source device 12 contains an encoder 20 and can additionally, i.e. optionally include an image source 16, a preprocessor (or preprocessing unit) 18, such as an image preprocessor 18, and a communications interface or communications unit 22.

Источник 16 изображений может содержать или быть устройством захвата изображений любого типа, например камерой для захвата изображения реального мира, и/или устройством генерирования изображений любого типа, например процессором компьютерной графики для генерирования компьютерного анимированного изображения, или любым типом другого устройства для получения и/или предоставления изображения реального мира, генерируемого компьютером изображения (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником изображений может быть любой тип памяти или хранилища, где хранятся любые из вышеупомянутых изображений.The image source 16 may contain or be any type of image capturing device, such as a camera for capturing a real world image, and/or any type of image generating device, such as a computer graphics processor for generating a computer animated image, or any type of other device for capturing and/or providing a real-world image, a computer-generated image (e.g., screen content, virtual reality (VR) image), and/or any combination thereof (e.g., augmented reality (AR) image). The source of the images can be any type of memory or storage where any of the above images are stored.

В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, изображение или данные 17 изображения также могут именоваться необработанным (raw) изображением или необработанными данными 17 изображения.In contrast to the preprocessor 18 and the processing performed by the preprocessing unit 18, the image or image data 17 may also be referred to as a raw image or raw image data 17.

Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки в отношении этих данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Должно быть понятно, что модуль 18 предварительной обработки может быть опциональным компонентом. The preprocessor 18 is configured to receive (raw) image data 17 and perform preprocessing on the image data 17 to obtain a preprocessed image 19 or preprocessed image data 19 . Preprocessing performed by preprocessor 18 may, for example, comprise cropping, color format conversion (eg, RGB to YCbCr), color correction, or noise reduction. It should be understood that the pre-processing module 18 may be an optional component.

Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).Video encoder 20 is configured to receive preprocessed image data 19 and provide encoded image data 21 (further details will be described below, for example based on FIG. 2).

Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи этих кодированных данных 21 изображения (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления.The communication interface 22 of the source device 12 may be configured to receive encoded image data 21 and transmit this encoded image data 21 (or any further processed version thereof) over the communication channel 13 to another device, such as the destination device 14 or any other device, for saving or immediate restoration.

Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. опционально, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.The recipient device 14 includes a decoder 30 (eg, video decoder 30) and may additionally, i.e. optionally comprising a communication interface or communication unit 28, a post processor 32 (or post processing unit 32) and a display device 34.

Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 изображения (или любой их дальнейшей обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройства хранения кодированных данных изображений, и предоставления кодированных данных 21 изображения в декодер 30.The communication interface 28 of the destination device 14 is configured to receive the encoded image data 21 (or any further processed version thereof), for example directly from the source device 12 or from any other source, such as a storage device, such as a storage device for the encoded image data, and provide encoded image data 21 into decoder 30.

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображений или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.The communication interface 22 and the communication interface 28 may be configured to transmit or receive encoded image data 21 or encoded data 13 through a direct communication link between the source device 12 and the destination device 14, such as a direct wired or wireless connection, or through any type of network , such as a wired or wireless network or any combination thereof, or any private and public network, or any combination thereof.

Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки кодированных данных 21 изображения в надлежащий формат, например, в пакеты, и/или обработки кодированных данных изображения с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.The communications interface 22 may, for example, be configured to package the encoded image data 21 into an appropriate format, such as packets, and/or process the encoded image data using any type of transmission encoding or processing for transmission over a communications link or network.

Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки и/или распаковки передачи для получения кодированных данных 21 изображения.The communication interface 28, which is analogous to the communication interface 22, may, for example, be configured to receive transmitted data and process the transmission data using any kind of appropriate decoding or transmission processing and/or decompression to obtain encoded image data 21.

Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например отправки и приема сообщений, например для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче кодированных данных изображения. Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, as shown by the arrow for communication channel 13 in FIG. 1A pointing from a source device 12 to a destination device 14, or as bidirectional communication interfaces, and may be configured to, for example, send and receive messages, for example to establish a connection, to confirm and exchange any other information related to the communication link and/or data transmission, such as transmission of encoded image data.

Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5).The decoder 30 is configured to receive encoded image data 21 and provide decoded image data 31 or decoded image 31 (further details will be described below, for example, based on FIG. 3 or FIG. 5).

Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 изображения (также называемых данными восстановленного изображения), таких как декодированное изображение 31, чтобы получить пост-обработанные данные 33 изображения, такие как пост-обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например для подготовки декодированных данных 31 изображения для отображения, например с помощью устройства 34 отображения.The post-processor 32 of the recipient device 14 is configured to post-process the decoded image data 31 (also called reconstructed image data), such as the decoded image 31, to obtain post-processed image data 33, such as the post-processed image 33. Post-processing performed by unit 32 post-processing may include, for example, color format conversion (eg, from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare the decoded image data 31 for display, for example, using display device 34.

Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 изображения для отображения изображения, например пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленного изображения, например, интегрированного или внешнего дисплея, или монитора. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидкий кристалл на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.The display device 34 of the recipient device 14 is configured to receive post-processed image data 33 for displaying the image, for example, to a user or viewer. The display device 34 may be or include any type of display for presenting the reconstructed image, such as an integrated or external display or monitor. The displays may, for example, comprise liquid crystal displays (LCDs), organic light-emitting diodes (OLEDs), plasma displays, projectors, micro-LED displays, liquid crystal on silicon (LCoS), digital light processor (DLP), or any other type of display .

Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.Although Fig. 1A illustrates source device 12 and destination device 14 as separate devices, embodiments of the devices may also include both or both functionality, source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such embodiments, source device 12 or related functionality and destination device 14 or related functionality may be implemented using the same hardware and/or software, or using separate hardware and/or software, or any combination thereof. .

Как будет очевидно для специалиста на основе описания, наличие и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг. 1A, может меняться в зависимости от фактического устройства и применения.As will be apparent to one skilled in the art from the description, the presence and (precise) separation of functionality of various blocks or functionality in source device 12 and/or destination device 14, as shown in FIG. 1A may vary depending on the actual device and application.

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенное видеокодирование или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 с ФИГ. 2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с ФИГ. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на фиг. 5, если методики частично реализуются в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, долговременном считываемом компьютером носителе данных и может исполнять инструкции в аппаратном обеспечении, используя один или более процессоров для выполнения методик согласно этому раскрытию. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг. 1B.Encoder 20 (eg, video encoder 20) or decoder 30 (eg, video decoder 30) or both encoder 20 and decoder 30 may be implemented through a processing circuit as shown in FIG. 1B, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoding, or any combination thereof. Encoder 20 may be implemented through processing circuit 46 to implement various modules, as discussed with respect to encoder 20 of FIG. 2 and/or any other encoder system or subsystem described in this document. Decoder 30 may be implemented through processing circuit 46 to implement various modules, as discussed with respect to decoder 30 of FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuit may be configured to perform various operations, which will be described below. As shown in FIG. 5, if the techniques are partially implemented in software, the apparatus may store the instructions for the software on a suitable non-transitory computer-readable storage medium and may execute the instructions in hardware using one or more processors to carry out the techniques of this disclosure. Either of video encoder 20 and video decoder 30 may be integrated as part of a combined encoder/decoder (CODEC) in a single device, for example, as shown in FIG. 1B.

Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.Source device 12 and destination device 14 may include any of a wide range of devices, including any type of portable or desktop devices, such as laptops or notebook computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes , televisions, display devices, digital media players, game consoles, video streaming devices (such as content service servers or content delivery servers), broadcast receiving device, broadcast transmitting device, or the like, and may use or dispense with any type of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.

В некоторых случаях система 10 видеокодирования, проиллюстрированная на Фиг. 1A, является лишь примером, а методы настоящей заявки могут применяться к настройкам видеокодирования (такого как видеокодирование или видеодекодирование), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, the video encoding system 10 illustrated in FIG. 1A is an example only, and the methods of the present application can be applied to video encoding settings (such as video encoding or video decoding) that do not necessarily involve transferring any data between encoding and decoding devices. In other examples, data is retrieved from local memory, streamed over a network, or the like. A video encoding device may encode and store data into memory, and/or a video decoding device may retrieve and decode data from memory. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data into memory and/or retrieve and decode data from memory.

Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное видеокодирование (HEVC) или на эталонное программное обеспечение универсального видеокодирования (VVC), стандарт видеокодирования следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодированию (JCT-VC) экспертной группы по видеокодированию ITU-T (VCEG) и экспертной группы по движущимся изображениям ISO/IEC (MPEG). Обычный специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.For ease of description, embodiments of the present invention are described herein, for example, with reference to High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, a next generation video coding standard being developed by the Joint Collaboration on Video Coding (JCT-VC) Expert Group. ITU-T Video Coding (VCEG) and ISO/IEC Moving Picture Expert Group (MPEG). One of ordinary skill in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.

Кодер и способ кодированияEncoder and encoding method

ФИГ. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации методик по настоящей заявке. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных изображений, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 интер-предсказания, блок 254 интра-предсказания и блок 262 разделения. Блок 244 интер-предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на Фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.FIG. 2 shows a schematic block diagram of an exemplary video encoder 20 that is configured to implement the techniques of the present application. In the example in FIG. 2, video encoder 20 includes an input 201 (or input interface 201), a remainder calculation block 204, a transform processing block 206, a quantization block 208, an inverse quantization block 210 and an inverse transform processing block 212, a restoration block 214, a loop filter block 220, a buffer 230 ( DPB) of decoded images, a mode selection unit 260, an entropy encoding unit 270, and an output 272 (or output interface 272). The mode selection block 260 may include an inter-prediction block 244, an intra-prediction block 254, and a separating block 262. The inter-prediction block 244 may include a motion estimation block and a motion compensation block (not shown). Video encoder 20 shown in FIG. 2 may also be called a hybrid video encoder or a video encoder according to a hybrid video codec.

Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого пути прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 интер-предсказания и блок 254 интра-предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 интер-предсказания и блок 254 интра-предсказания также относятся к формированию «встроенного декодера» видеокодера 20.The remainder calculation block 204, transform processing block 206, quantization block 208, mode selection block 260 may relate to the formation of the forward signal path of the encoder 20, while the inverse quantization block 210, inverse transform processing block 212, restoration block 214, buffer 216, contour filter 220, decoded image buffer (DPB) 230, inter-prediction block 244, and intra-prediction block 254 may relate to generating a reverse signal path of video encoder 20, wherein the reverse signal path of video encoder 20 corresponds to the signal path of a decoder (see video decoder 30 in Fig. 3). The inverse quantization unit 210, the inverse transform processing unit 212, the restoration unit 214, the loop filter 220, the decoded image buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 also relate to forming the “built-in decoder” of the video encoder 20.

Изображения и разделение изображений (изображения и блоки)Images and image division (images and blocks)

Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 изображения 17 (или данных 17 изображения), например изображения из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). Для простоты нижеследующее описание ссылается на изображение 17. Изображение 17 также может именоваться текущим изображением или изображением, которое подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).The encoder 20 may be configured to receive, for example, through input 201, an image 17 (or image data 17), for example an image from a sequence of images forming a video or video sequence. The received image or image data may also be a preprocessed image 19 (or preprocessed image data 19). For simplicity, the following description refers to picture 17. Picture 17 may also be referred to as the current picture or the picture to be encoded (particularly in video encoding, to distinguish the current picture from other pictures, such as previously encoded and/or decoded pictures of the same video sequence, i.e. a video sequence that also contains the current image).

(Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента изображения) или pel (элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В цветовом пространстве или формате RBG изображение содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировании каждый пиксель обычно представлен в цветовом пространстве или формате яркости и цветности, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.A (digital) image is, or can be viewed as, a two-dimensional array or matrix of samples with intensity values. A selection in an array may also be referred to as a pixel (short form of image element) or pel (image element). The number of samples in the horizontal and vertical direction (or axis) of the array or image determines the size and/or resolution of the image. Three color components are usually used to represent color, i.e. the image may be represented by or include three arrays of samples. In a color space or RBG format, an image contains a corresponding array of red, green, or blue samples. However, in video encoding, each pixel is typically represented in a color space or luminance and chrominance format, such as YCbCr, which contains a luminance component, denoted Y (sometimes L is also used instead), and two chrominance components (chrominance components), denoted Cb and Cr. The Y component of luminance (or luma for short) represents the brightness or intensity of the gray level (such as in a grayscale image), while the two components Cb and Cr are chrominance (or chrominance for short). chroma) represent components of chromaticity or color information. Accordingly, an image in YCbCr format contains an array of luminance samples with luminance sample values (Y) and two chrominance sample arrays with chrominance values (Cb and Cr). Images in RGB format can be converted or converted to YCbCr format and vice versa, a process also known as color conversion or conversion. If the image is monochrome, it can only contain an array of luminance samples. Accordingly, the image may be, for example, an array of luminance samples in a monochrome format, or an array of luminance samples and two corresponding arrays of chrominance samples in 4:2:0, 4:2:2 and 4:4:4 color formats.

Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на Фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разделения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или подмножествами, или группами изображений и разделения каждого изображения на соответствующие блоки.Embodiments of video encoder 20 may include an image splitter (not shown in FIG. 2) configured to divide image 17 into multiple (usually non-overlapping) image blocks 203. These blocks may also be called root blocks, macroblocks (H.264/AVC) or coding tree blocks (CTB) or coding tree units (CTU) (H.265/HEVC and VVC). The image division block may be configured to use the same block size for all images in the video sequence and a corresponding grid defining the block size, or to vary the block size between images or subsets or groups of images and divide each image into appropriate blocks.

В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 изображения 17, например одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения также может именоваться текущим блоком изображения или блоком изображения, подлежащим кодированию.In additional embodiments, the video encoder may be configured to receive directly a block 203 of an image 17, such as one, more, or all of the blocks forming the image 17. The image block 203 may also be referred to as a current image block or an image block to be encoded.

Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, быть MxN (M-столбец на N-строка) массивом выборок или MxN массивом коэффициентов преобразования.Like image 17, image block 203 is again, or can be viewed as, a two-dimensional array or matrix of samples with intensity values (sample values), albeit smaller in size than image 17. In other words, block 203 may contain, for example, one array of samples (e.g. , a luminance array in the case of a monochrome image 17 or a luminance or chrominance array in the case of a color image) or three sample arrays (for example, luminance and two chroma arrays in the case of a color image 17) or any other number and/or type of arrays depending on the color used format. The number of samples in the horizontal and vertical direction (or axis) of block 203 determines the size of block 203. Accordingly, the block may, for example, be an MxN (M-column by N-row) array of samples or an MxN array of transform coefficients.

Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть выполнены с возможностью кодирования изображения 17 блок за блоком, например кодирование и предсказание выполняется для каждого блока 203.Embodiments of video encoder 20 shown in FIG. 2 may be configured to encode the image 17 block by block, such that encoding and prediction is performed for each block 203.

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

Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.Residual calculation block 204 may be configured to calculate residual block 205 (also referred to as residual 205) based on image block 203 and prediction block 265 (additional details about prediction block 265 are provided below), for example, by subtracting the sample values of prediction block 265 from the values samples the image block 203 sample by sample (pixel by pixel) to obtain a residual block 205 in the sample region.

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

Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.Transform processing unit 206 may be configured to apply a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207 may also be referred to as residual transform coefficients and represent the residual block 205 in the transform domain.

Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например блоком 312 обработки обратного преобразования в видеодекодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.Transform processing unit 206 may be configured to apply DCT/DST integer approximations, such as the transforms defined for H.265/HEVC. Compared to the orthogonal DCT transform, such integer approximations are typically scaled by a certain factor. To preserve the norm of the residual block that is processed by the forward and inverse transforms, additional scaling factors are applied as part of the transform process. Scaling factors are typically chosen based on certain constraints, e.g., scaling factors are powers of two for shift operations, bit depth of transform factors, tradeoff between accuracy and implementation cost, etc. Specific scaling factors, for example, are specified for inverse transform, such as by block 212 inverse transform processing (and the corresponding inverse transform, such as the inverse transform processing unit 312 in the video decoder 30), and the corresponding scaling factors for the forward transform, such as the transform processing unit 206, can be set appropriately in the encoder 20.

Варианты осуществления видеокодера 20 (соответственно блока 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированных или сжатых через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.Embodiments of video encoder 20 (respectively transform processing unit 206) may be configured to output transform parameters, such as the type of transform or transforms, for example, directly or encoded or compressed via entropy encoding unit 270, so that, for example, video decoder 30 can receive and use conversion parameters for decoding.

КвантованиеQuantization

Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.The quantization unit 208 may be configured to quantize the transform coefficients 207 to obtain quantized coefficients 209, for example by applying scalar quantization or vector quantization. Quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209.

Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform factor may be rounded to an m-bit transform factor during quantization, where n is greater than m. The degree of quantization can be changed by adjusting the quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. The applicable quantization step size may be specified by the quantization parameter (QP). The quantization parameter may, for example, be an index to a predefined set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes), and large quantization parameters may correspond to coarse quantization (large quantization step sizes), or vice versa. Quantization may include dividing by a quantization step size, and corresponding and/or inverse dequantization, such as by inverse quantization unit 210, may include multiplying by a quantization step size. Embodiments in accordance with some standards, such as HEVC, may be configured to use a quantization parameter to determine the quantization step size. Typically, the quantization step size can be calculated based on the quantization parameter using a fixed point approximation of the equation involving division. Additional scaling factors can be introduced for quantization and dequantization to recover the residual block norm that may have been changed due to the scaling used in the fixed point approximation of the above equation for the quantization step size and the quantization parameter. In one exemplary implementation, inverse transform scaling and dequantization may be combined. Alternatively, customized quantization tables may be used and signaled from encoder to decoder, for example in a bitstream. Quantization is a lossy operation in which the loss increases with the size of the quantization steps.

Варианты осуществления видеокодера 20 (соответственно блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.Embodiments of video encoder 20 (respectively quantization unit 208) may be configured to output quantization parameters (QPs), such as directly or encoded through entropy encoding unit 270, so that, for example, video decoder 30 can receive and apply quantization parameters for decoding.

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

Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например путем применения обратной схемы квантования относительно таковой, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования. The inverse quantization block 210 is configured to apply the inverse quantization of the quantization block 208 to the quantized coefficients to obtain the dequantized coefficients 211, for example, by applying an inverse quantization scheme to that applied by the quantization block 208, based on or using the same quantization step size as the block 208 quantization. The dequantized coefficients 211 may also be referred to as the dequantized residual coefficients 211 and correspond - although they are typically not identical to the transform coefficients due to quantization loss - to the transform coefficients 207 .

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

Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.The inverse transform processing unit 212 is configured to apply an inverse transform relative to the transform applied by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST) or other inverse transforms to obtain the reconstructed residual block 213 (or corresponding dequantized coefficients 213) in the sample area. The reconstructed residual block 213 may also be referred to as a transform block 213.

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

Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например посредством сложения - выборка за выборкой - значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.A reconstruction block 214 (e.g., an add block or an adder 214) is configured to add a transform block 213 (i.e., a reconstructed residual block 213) with a prediction block 265 to obtain a reconstructed block 215 in the sample domain, such as through sample-by-sample addition. - sample values of the reconstructed residual block 213 and sample values of the prediction block 265.

ФильтрацияFiltration

Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на ФИГ. 2 как внутриконтурный (in loop) фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как пост-контурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.Loop filter block 220 (or “loop filter” 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally to filter the reconstructed samples to obtain filtered samples. The edge filter unit, for example, is configured to smooth pixel transitions or otherwise improve video quality. Loop filter block 220 may include one or more loop filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, or one or more other filters, such as a two-way filter, an adaptive loop filter (ALF), anti-aliasing filters, boost filters, etc. sharpening or joint filters, or any combination of them. Although loop filter block 220 is shown in FIG. 2 as an in loop filter, in other configurations the loop filter block 220 may be implemented as a post loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221.

Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.Embodiments of video encoder 20 (respectively, loop filter block 220) may be configured to output loop filter parameters (such as sample-adaptive offset information), such as directly or encoded through entropy encoding block 270, so that, for example, decoder 30 can receive and apply similar loop filter parameters or corresponding loop filters for decoding.

Буфер декодированных изображенийDecoded Image Buffer

Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных изображений может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего изображения или разных изображений, например ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для интер-предсказания. Буфер 230 декодированных изображений (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.Decoded picture buffer (DPB) 230 may be a memory that stores reference pictures or, more generally, reference picture data for encoding video data by video encoder 20. DPB 230 may be formed by any of a variety of storage devices, such as dynamic random access memory (DRAM). DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as previously reconstructed and filtered blocks 221, of the same current image, or different images, such as previously recovered images, and can provide complete previously recovered ones, i.e. decoded, images (and corresponding reference blocks and samples) and/or partially reconstructed current image (and corresponding reference blocks and samples), for example, for inter-prediction. Decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215, or generally unfiltered reconstructed samples, such as if reconstructed block 215 is not filtered by loop filter block 220, or any other further processed version of the reconstructed blocks. or samples.

Выбор режима (разделение и предсказание)Mode selection (separation and prediction)

Блок 260 выбора режима содержит блок 262 разделения, блок 244 интер-предсказания и блок 254 интра-предсказания и выполнен с возможностью приема или получения исходных данных изображения, например исходного блока 203 (текущего блока 203 текущего изображения 17), и восстановленных данных изображения, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков того же самого (текущего) изображения и/или из одного или множества ранее декодированных изображений, например из буфера 230 декодированных изображений или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например интер-предсказания или интра-предсказания, чтобы получить блок 265 предсказания или предиктор 265.The mode selecting unit 260 includes a separating unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive or obtain original image data, for example, the original block 203 (the current block 203 of the current image 17), and reconstructed image data, for example filtered and/or unfiltered reconstructed samples or blocks of the same (current) image and/or from one or a plurality of previously decoded images, such as from decoded image buffer 230 or other buffers (for example, a line buffer, not shown). The reconstructed image data is used as reference image data for prediction, such as inter-prediction or intra-prediction, to obtain a prediction block 265 or a predictor 265.

Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (в том числе без разделения) и режима предсказания (например, режима интра- или интер-предсказания) и генерирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.The mode selection block 260 may be configured to determine or select a split for the current block prediction mode (including non-split) and prediction mode (eg, intra- or inter-prediction mode) and generate a corresponding prediction block 265 that is used to calculate residual block 205 and to restore the recovered block 215.

Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные непроизводительные затраты на сигнализацию (минимальные непроизводительные затраты на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации скорость/искажение (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение при определенной скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.Embodiments of the mode selector 260 may be configured to select a split and prediction mode (e.g., from those supported by or available to the mode selector 260) that provides the best match, or in other words, the minimum remainder (the minimum remainder means the best compression for transmission or storage), or minimal signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which takes into account or balances both factors. The mode selector 260 may be configured to determine a division and prediction mode based on rate/distortion optimization (RDO), that is, selecting a prediction mode that provides minimum distortion at a certain rate. Terms such as "best", "minimum", "optimal", etc. in this context do not necessarily refer to the all-encompassing "best", "minimum", "optimal", etc., but may also refer to meeting a selection or termination criterion, such as when a value exceeds or falls below a threshold, or other constraints, potentially leading to "suboptimal selection" but reducing complexity and processing time.

Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на более мелкие разделы блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделов блока или субблоков.In other words, partitioning unit 262 may be configured to partition block 203 into smaller block sections or sub-blocks (which form blocks again), for example iteratively using quad-tree partitioning (QT), binary partitioning (BT), or ternary tree partitioning (TT). ) or any combination thereof, and performing, for example, prediction for each of the sections of the block or sub-blocks, wherein the mode selection comprises selecting a tree structure of the shared block 203, and the prediction modes are applied to each of the sections of the block or sub-blocks.

Далее более подробно поясняется разделение (например, посредством блока 260 разделения) и обработка предсказания (посредством блока 244 интер-предсказания и блока 254 интра-предсказания), выполняемая примерным видеокодером 20.Next, the division (for example, through the division block 260) and prediction processing (through the inter-prediction block 244 and the intra-prediction block 254) performed by the exemplary video encoder 20 are explained in more detail.

РазделениеSeparation

Блок 262 разделения может разделять (или разбивать) текущий блок 203 на более мелкие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).Divider 262 may divide (or split) the current block 203 into smaller sections, such as smaller blocks of square or rectangular size. These smaller blocks (which may also be called subblocks) can be further divided into even smaller sections. This is also called tree partitioning or hierarchical tree partitioning, in which the root block, for example at root level 0 of the tree (hierarchy level 0, depth 0), can be recursively partitioned, for example divided into two or more blocks of the next lower tree level, such as nodes at tree level 1 (hierarchy level 1, depth 1), whereby these blocks can be again divided into two or more blocks of the next lower level, such as tree level 2 (hierarchy level 2, depth 2), etc. until the split will not complete, for example because a termination criterion has been met, such as reaching the maximum tree depth or minimum block size. Blocks that are not further divided are also called leaf blocks or leaf nodes of a tree. A tree using two partitions is called a binary tree (BT), a tree using three partitions is called a ternary tree (TT), and a tree using four partitions is called a quadtree (QT).

Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).As mentioned earlier, the term "block" as used herein may be a portion, particularly a square or rectangular portion of an image. With respect to, for example, HEVC and VVC, a block may be or correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) and a transform unit (TU) and/or corresponding blocks, such as a coding tree block (CTB ), a coding block (CB), a transform block (TB), or a prediction block (PB).

Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.For example, a coding tree unit (CTU) may be or contain a CTB of luma samples, two corresponding CTBs of chroma samples of an image that has three arrays of samples, or a CTB of samples of a monochrome image or an image that is encoded using three separate color planes and the syntax structures used for encoding samples. Accordingly, a coding tree block (CTB) may be an N×N block of samples for some value of N, such that dividing a component by the CTB is a division. A coding unit (CU) may be or comprise a luma sample encoding unit, two corresponding chroma sample encoding units of an image that has three sample arrays, or a monochrome image sample encoding unit or an image that is encoded using three separate color planes and syntax structures used for encoding samples. Accordingly, a coding block (CB) may be an M×N block of samples for some values of M and N, so that dividing the CTB into coding blocks is a division.

В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодирования. Решение о том, следует ли кодировать область изображения с использованием предсказания интер-изображения (временного) или интра-изображения (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разбиения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.In embodiments, for example, according to HEVC, a coding tree unit (CTU) can be partitioned into CUs using a quadtree structure designated as a coding tree. The decision of whether to encode an image region using inter-image (temporal) or intra-image (spatial) prediction is made at the CU level. Each CU can be further partitioned into one, two or four PUs according to the PU partition type. Within a single PU, the same prediction process is applied, and the relevant information is passed to the PU-based decoder. After obtaining the residual block by applying a prediction process based on the partition type on the PU, the CU can be divided into transform units (TUs) according to another quadtree structure similar to the encoding tree for the CU.

В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом видеокодирования, который называется универсальное видеокодирование (VVC), для разделения блока кодирования используется разделение квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или троичной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT было предложено использовать множественное разделение, например разделение троичного дерева.In embodiments, such as the newest video coding standard currently under development called Versatile Video Coding (VVC), a quadtree-binary tree (QTBT) partition is used to divide the encoding block. In a block structure, the QTBT CU can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first divided into a quadtree structure. The leaf nodes of a quadtree are further separated by a binary tree or ternary (or triple) tree structure. The leaf nodes of a partitioning tree are called coding units (CUs), and this partitioning is used to process prediction and transformation without any further partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel, multiple partitioning, such as ternary tree partitioning, has been proposed to be used in conjunction with the QTBT block structure.

В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любой комбинации методик разделения, описанных в данном документе.In one example, the mode selector 260 of the video encoder 20 may be configured to perform any combination of separation techniques described herein.

Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы интра-предсказания и/или режимы интер-предсказания.As described above, video encoder 20 is configured to determine or select the best or optimal prediction mode from a set of (predefined) prediction modes. The set of prediction modes may comprise, for example, intra-prediction modes and/or inter-prediction modes.

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

Набор режимов интра-предсказания может содержать 35 различных режимов интра-предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов интра-предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены для VVC.The set of intra-prediction modes may contain 35 different intra-prediction modes, such as non-directional modes such as DC (or average) mode and planar mode, or directed modes such as those defined in HEVC, or may contain 67 different intra-prediction modes eg, non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined for VVC.

Блок 254 интра-предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одного и того же текущего изображения для генерирования блока 265 интра-предсказания согласно режиму интра-предсказания из набора режимов интра-предсказания.The intra-prediction block 254 is configured to use reconstructed samples of neighboring blocks of the same current image to generate an intra-prediction block 265 according to an intra-prediction mode from a set of intra-prediction modes.

Блок 254 интра-предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров интра-предсказания (или, в общем, информации, указывающей выбранный режим интра-предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения так, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.The intra-prediction block 254 (or, more generally, the mode selection block 260) is further configured to output intra-prediction parameters (or, generally, information indicating the selected intra-prediction mode for the block) to the entropy encoding block 270 in the form of syntactic elements 266 for inclusion in encoded image data 21 so that, for example, video decoder 30 can receive and use prediction parameters for decoding.

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

Набор (возможных) режимов интер-предсказания зависит от доступных опорных изображений (то есть предыдущих, по меньшей мере частично декодированных изображений, например сохраненных в DBP 230) и других параметров интер-предсказания, например используется ли опорное изображение целиком или только часть, например область окна поиска вокруг области текущего блока, опорного изображения для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет.The set of (possible) inter-prediction modes depends on the available reference pictures (i.e., previous, at least partially decoded pictures, such as those stored in DBP 230) and other inter-prediction parameters, such as whether the entire reference picture is used or only a portion, such as a region search windows around the area of the current block, a reference image to search for the most suitable reference block, and/or, for example, whether pixel interpolation, such as half/semi-pel and/or quarter-pel interpolation, is applied or not.

В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.In addition to the above prediction modes, a skip mode and/or a direct mode may be used.

Блок 244 интер-предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба не показаны на Фиг. 2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одного или множества других/отличных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.The inter-prediction block 244 may include a motion estimation (ME) block and a motion compensation (MC) block (both not shown in FIG. 2). The motion estimator may be configured to receive or obtain an image block 203 (the current image block 203 of the current image 17) and a decoded image 231, or at least one or more previously reconstructed blocks, such as reconstructed blocks of one or more different/different previously decoded ones. 231 images for motion estimation. For example, the video sequence may comprise the current image and previously decoded images 231 or, in other words, the current image and previously decoded images 231 may be part of or form a sequence of images making up the video sequence.

Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных изображений из множества других изображений и обеспечения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров интер-предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).The encoder 20 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different images from a plurality of other images and provide a reference image (or reference image index) and/or an offset (spatial offset) between the position (x, y coordinates ) of the reference block and the position of the current block as inter-prediction parameters into the motion estimation block. This displacement is also called motion vector (MV).

Блок компенсации движения выполнен с возможностью получения, например, приема параметра интер-предсказания и выполнения интер-предсказания на основе или с использованием параметра интер-предсказания для получения блока 265 интер-предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений.The motion compensation unit is configured to obtain, for example, receiving an inter-prediction parameter and performing inter-prediction based on or using the inter-prediction parameter to obtain an inter-prediction unit 265. The motion compensation performed by the motion compensation block may include obtaining or generating a prediction block based on a motion vector/block determined by motion estimation, possibly performing interpolations with sub-pixel precision. Interpolation filtering can generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode an image block. After receiving the motion vector for the PU of the current image block, the motion compensation unit may locate the prediction block pointed to by the motion vector in one of the reference image lists.

Блок компенсации движения может также генерировать синтаксические элементы, связанные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков изображения слайса видео.The motion compensation block may also generate syntax elements associated with video blocks and slices for use by video decoder 30 when decoding video slice image blocks.

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

Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого метода или методологии энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров интер-предсказания, параметров интра-предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения кодированных данных 21 изображения, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования, . Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.The entropy encoding block 270 is configured to employ, for example, an entropy encoding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context adaptive VLC (CAVLC) scheme, an arithmetic encoding scheme, binarization, a context adaptive binary arithmetic encoding ( CABAC) based on the syntax of context adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy entropy (PIPE) or other entropy coding method or methodology) or bypass (uncompressed) with respect to quantized coefficients 209, inter-prediction parameters, intra-prediction parameters, loop filter parameters, and/or other syntax elements to obtain encoded image data 21, which may be output via output 272, for example in the form of an encoded bitstream 21, so that, for example, video decoder 30 can receive and use these parameters to decoding, . The encoded bitstream 21 may be transmitted to video decoder 30 or stored in memory for later transmission or retrieval by video decoder 30.

Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.Other changes to the structure of video encoder 20 may be used to encode the video stream. For example, non-transform encoder 20 may quantize the residual signal directly without transform processing block 206 for certain blocks or frames. In another implementation, encoder 20 may have a quantization unit 208 and an inverse quantization unit 210 combined into a single unit.

Декодер и способ декодированияDecoder and decoding method

ФИГ. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации методов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированное изображение 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных изображения, например данных, которые представляют блоки изображения кодированного слайса видео и связанные синтаксические элементы.FIG. 3 shows an example of a video decoder 30 that is configured to implement the methods of the present application. Video decoder 30 is configured to receive encoded image data 21 (e.g., encoded bitstream 21), such as encoded by encoder 20, to obtain a decoded image 331. The encoded image data or bitstream contains information for decoding the encoded image data, e.g., data that represents blocks encoded video slice images and associated syntactic elements.

В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных изображений, блок 344 интер-предсказания и блок 354 интра-предсказания. Блок 344 интер-предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в целом обратный проходу кодирования, описанному в отношении видеокодера 100 на ФИГ. 2.In the example in FIG. 3, decoder 30 includes an entropy decoding block 304, an inverse quantization block 310, an inverse transform processing block 312, a reconstruction block 314 (eg, adder 314), a loop filter 320, a decoded image buffer (DPB) 330, an inter-prediction block 344, and a 354 intra-predictions. The inter-prediction block 344 may be or include a motion compensation block. Video decoder 30 may, in some examples, perform a decoding pass generally reverse to the encoding pass described with respect to video encoder 100 in FIG. 2.

Как описано в отношении кодера 20 блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 344 интер-предсказания и блок 354 интра-предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных изображений может быть идентичен по функции буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.As described with respect to the encoder 20, the inverse quantization unit 210, the inverse transform processing unit 212, the restoration unit 214, the loop filter 220, the decoded image buffer (DPB) 230, the inter-prediction unit 344, and the intra-prediction unit 354 also relate to the generation of the “embedded decoder" of the video encoder 20. Accordingly, the inverse quantization unit 310 may be identical in function to the inverse quantization unit 110, the inverse transform processing unit 312 may be identical in function to the inverse transform processing unit 212, the restoration unit 314 may be identical in function to the contour restoration unit 214 filter 320 may be identical in function to loop filter 220, and decoded image buffer 330 may be identical in function to decoded image buffer 230. Therefore, the explanations provided for the corresponding blocks and functions of the video encoder 20 apply correspondingly to the corresponding blocks and functions of the video decoder 30.

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

Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, кодированных данных 21 изображения) и выполнения, например, энтропийного декодирования кодированных данных 21 изображения, чтобы получить, например, квантованные коэффициенты 309 и/или декодированные параметры кодирования (не показаны на Фиг. 3), например, любые или все из параметров интер-предсказания (например, индекс опорного изображения и вектор движения), параметра интра-предсказания (например, индекс или режим интра-предсказания), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других синтаксических элементов. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров интер-предсказания, параметра интра-предсказания и/или других синтаксических элементов блоку 360 выбора режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне слайса видео и/или уровне блока видео.Entropy decoding unit 304 is configured to parse bitstream 21 (or generally encoded image data 21) and perform, for example, entropy decoding of encoded image data 21 to obtain, for example, quantized coefficients 309 and/or decoded encoding parameters ( not shown in Fig. 3), for example, any or all of inter-prediction parameters (eg, reference image index and motion vector), intra-prediction parameter (eg, index or intra-prediction mode), transform parameters, quantization parameters, loop filter parameters and/or other syntax elements. Entropy decoding block 304 may be configured to apply decoding algorithms or schemes corresponding to encoding schemes as described with respect to entropy encoding block 270 of encoder 20. Entropy decoding block 304 may be further configured to provide inter-prediction parameters, an intra-prediction parameter and/or other syntax elements to mode selection block 360 and other parameters to other blocks of decoder 30. Video decoder 30 may receive syntax elements at the video slice level and/or video block level.

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

Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе, для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.The inverse quantization unit 310 may be configured to receive quantization parameters (QPs) (or, more generally, information related to inverse quantization) and quantized coefficients from the encoded image data 21 (e.g., by parsing and/or decoding, e.g., by entropy decoding block 304) and applying, based on the quantization parameters, inverse quantization on the decoded quantized coefficients 309 to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process may include using a quantization parameter determined by video encoder 20 for each video block in the video slice to determine the degree of quantization and, likewise, the degree of inverse quantization to be applied.

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

Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также может именоваться блоками 213 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.The inverse transform processing unit 312 may be configured to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and apply a transform to the dequantized coefficients 311 to obtain reconstructed residual blocks 213 in the sample region. The reconstructed residual blocks 213 may also be referred to as transform blocks 213. The conversion may be an inverse transform, such as an inverse DCT, an inverse DST, an integer integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may be further configured to receive transform parameters or corresponding information from the encoded image data 21 (e.g., by parsing and/or decoding, e.g., through an entropy decoding unit 304) to determine a transform to be applied to dequantized coefficients 311.

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

Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.The reconstruction block 314 (e.g., add block or adder 314) may be configured to add the reconstructed residual block 313 with the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example by adding the sample values of the reconstructed residual block 313 and the sample values of the block 365 predictions.

ФильтрацияFiltration

Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любую их комбинацию. Хотя блок 320 контурного фильтра показан на ФИГ. 3 как внутриконтурный (in loop) фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как пост-контурный фильтр.A loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to produce a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. Loop filter block 320 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a two-way filter, an adaptive loop filter (ALF), anti-aliasing filters, boost filters, etc. sharpening or joint filters, or any combination of them. Although loop filter block 320 is shown in FIG. 3 as an in loop filter, in other configurations the loop filter block 320 may be implemented as a post loop filter.

Буфер декодированных изображенийDecoded Image Buffer

Декодированные видеоблоки 321 изображения затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, отображения.The decoded video image blocks 321 are then stored in a decoded image buffer 330, which stores the decoded images 331 as reference images for subsequent motion compensation for other images and/or for display output, respectively.

Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователем.The decoder 30 is configured to output the decoded image 311, for example, through an output 312 for presentation or viewing by a user.

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

Блок 344 интер-предсказания может быть идентичен блоку 244 интер-предсказания (в частности, блоку компенсации движения), а блок 354 интра-предсказания может быть идентичен блоку 254 интер-предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 выбора режима может быть выполнен с возможностью осуществления предсказания (интра- или интер-предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.The inter-prediction block 344 may be identical to the inter-prediction block 244 (in particular, the motion compensation block), and the intra-prediction block 354 may be identical to the inter-prediction block 254 in function, and makes partitioning or partitioning decisions and performs prediction on based on separation and/or prediction parameters or corresponding information received from the encoded image data 21 (eg, by parsing and/or decoding, eg, by entropy decoding unit 304). The mode selector 360 may be configured to perform prediction (intra- or inter-prediction) for each block based on the reconstructed images, blocks, or corresponding samples (filtered or unfiltered) to obtain a prediction block 365.

Когда видеослайс кодируется как интра-кодируемый (I) слайс, блок 354 интра-предсказания блока 360 выбора режима выполнен с возможностью генерирования блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как интер-кодируемый (т.е. B или P) слайс, блок 344 интер-предсказания (например, блок компенсации движения) блока 360 выбора режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для интер-предсказания блоки предсказания могут быть созданы из одного из опорных изображений в пределах одного из списков опорных изображений. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя методы построения по умолчанию на основе опорных изображений, хранящихся в DPB 330.When a video slice is encoded as an intra-encoded (I) slice, an intra-prediction block 354 of a mode selection block 360 is configured to generate a prediction block 365 for an image block of the current video slice based on the signaled intra-prediction mode and data from previously decoded current image blocks. When a video image is encoded as an inter-encoded (i.e., B or P) slice, an inter-prediction block 344 (e.g., a motion compensation block) of the mode selection block 360 is configured to create prediction blocks 365 for the video block of the current video slice based on the motion vectors and other syntactic elements received from the entropy decoding unit 304. For inter-prediction, prediction blocks may be created from one of the reference pictures within one of the reference picture lists. Video decoder 30 may construct reference picture lists, List 0 and List 1, using default construction methods based on reference pictures stored in DPB 330.

Блок 360 выбора режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, интра- или интер-предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса интер-предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого интер-кодированного видеоблока слайса, статуса интер-предсказания для каждого интер-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе.The mode selector 360 is configured to determine prediction information for a video block of the current video slice by parsing motion vectors and other syntax elements, and uses the prediction information to create prediction blocks for the current video block to be decoded. For example, mode apply block 360 uses some of the received syntax elements to determine the prediction mode (eg, intra- or inter-prediction) used to encode video slice video blocks, the type of inter-prediction slice (eg, B-slice, P-slice, or GPB -slice), construction information for one or more reference picture lists for the slice, motion vectors for each inter-coded video block of the slice, inter-prediction status for each inter-coded video block of the slice, and other information for decoding the video blocks in the current video slice.

Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.Other embodiments of the video decoder 30 may be used to decode the encoded image data 21. For example, decoder 30 may produce an output video stream without loop filtering block 320. For example, the non-transform decoder 30 may perform inverse quantization of the residual signal directly without the inversion processing block 312 for certain blocks or frames. In another implementation, video decoder 30 may have an inverse quantization block 310 and an inverse transform processing block 312 combined into one block.

Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.It should be understood that in the encoder 20 and decoder 30, the result of processing of some current stage may be further processed and then output to the next stage. For example, after interpolation filtering, motion vector acquisition, or contour filtering, an additional operation such as Clip or offset may be performed on the result of the interpolation filtering, motion vector acquisition, or contour filtering processing.

Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон составляет -32768 ~ 32767; если bitDepth установлена равной 18, диапазон составляет -131072~131071. Здесь представлены два способа ограничения вектора движения.It should be noted that additional operations may be applied to the resulting current block motion vectors (including, but not limited to, affine mode checkpoint motion vectors, affine mode, planar, ATMVP mode subblock motion vectors, temporary motion vectors, and the like). For example, the value of a motion vector is limited to a predefined range according to its representing bit. If the representing bit of the motion vector is bitDepth, then the range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is set to 16, the range is -32768 ~ 32767; if bitDepth is set to 18, the range is -131072~131071. Here are two ways to limit the motion vector.

Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операцийMethod 1: Removing MSB (Most Significant Bit) Overflow via Streaming Operations

ux= ( mvx+2bitDepth ) % 2bitDepth (1)ux= ( mvx+2 bitDepth ) % 2 bitDepth (1)

mvx=( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (2)mvx=( ux >= 2bitDepth-1) ? (ux − 2bitDepth ): ux (2)

uy= ( mvy+2bitDepth ) % 2bitDepth (3)uy= ( mvy+2 bitDepth ) % 2 bitDepth (3)

mvy=( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (4)mvy=( uy >= 2bitDepth-1) ? (uy − 2bitDepth ): uy (4)

Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двух. Дополнением до двух для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двух является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).For example, if the value of mvx is -32769, after applying formulas (1) and (2), the resulting value is 32767. In a computer system, decimal numbers are stored as two's complement. The two's complement of -32769 is 1,0111,1111,1111,1111 (17 bits), then the MSB is discarded, so the resulting two's complement is 0111,1111,1111,1111 (decimal is 32767), which is the same as the output from the application of formulas (1) and (2).

ux= ( mvpx+mvdx +2bitDepth ) % 2bitDepth (5)ux= ( mvpx+mvdx +2 bitDepth ) % 2 bitDepth (5)

mvx=( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (6)mvx=( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (6)

uy= ( mvpy+mvdy +2bitDepth ) % 2bitDepth (7)uy= ( mvpy+mvdy +2 bitDepth ) % 2 bitDepth (7)

mvy=( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (8)mvy=( uy >= 2bitDepth-1) ? (uy − 2bitDepth ): uy (8)

Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).Operations can be applied during the summation of mvp and mvd, as shown in formulas (5) to (8).

Способ 2: удаление MSB переполнения посредством усечения значенияMethod 2: Remove MSB overflow by truncating the value

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

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

где определение функции Clip3 является следующим:where the definition of the Clip3 function is as follows:

Clip3( x, y, z )= Clip3( x, y, z )=

Операция "?" обычно используется как сокращение для представления условия "if … else" ("если … в ином случае"). Например “X<K?X=1:X=0” можно интерпретировать как "если X меньше K, X устанавливается равным 1, в ином случае (если X не меньше K) X устанавливается равным 0".Operation "?" usually used as a shorthand to represent an "if...else" condition. For example, “X<K?X=1:X=0” can be interpreted as “if X is less than K, X is set to 1, otherwise (if X is not less than K) X is set to 0.”

ФИГ. 4 является схематичным представлением устройства 400 видеокодирования согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 по ФИГ. 1A, или кодером, таким как видеокодер 20 по ФИГ. 1А.FIG. 4 is a schematic diagram of a video encoding apparatus 400 according to an embodiment of the present disclosure. Video encoding apparatus 400 is suitable for implementing the disclosed embodiments that are described herein. In an embodiment, video encoding device 400 may be a decoder, such as video decoder 30 of FIG. 1A, or an encoder such as video encoder 20 of FIG. 1A.

Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.The video encoding device 400 includes input ports 410 (or input ports 410) and receiver (Rx) blocks 420 for receiving data; a processor, logical unit, or central processing unit (CPU) 430 for processing data; transmitter (Tx) blocks 440 and output ports 450 (or output ports 450) for data transmission; and a memory 460 for storing data. Video encoding device 400 may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components connected to input ports 410, receiver units 420, transmitter units 440, and output ports 450 to provide optical or optical input or output. electrical signals.

Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает трансформацию устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.The processor 430 is implemented in hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (eg, a multi-core processor), FPGA, ASIC, and DSP. Processor 430 communicates with input ports 410, receiver units 420, transmitter units 440, output ports 450, and memory 460. Processor 430 includes an encoding module 470. Encoding module 470 implements the disclosed embodiments described above. For example, encoding module 470 implements, processes, prepares, or provides various encoding operations. Therefore, the inclusion of the encoding module 470 provides a significant improvement in the functionality of the video encoding device 400 and allows the video encoding device 400 to be transformed into a different state. Alternatively, encoding module 470 is implemented as instructions stored in memory 460 and executed by processor 430.

Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).Memory 460 may include one or more disks, tape drives, and solid-state drives and may be used as an overflow storage device for storing programs when such programs are selected for execution and for storing instructions and data that are read during execution of the programs. Memory 460 may be, for example, volatile and/or non-volatile and may be read only memory (ROM), random access memory (RAM), ternary memory associative memory (TCAM), and/or static random access memory (SRAM).

ФИГ. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления. FIG. 5 is a simplified block diagram of a device 500 that can be used as one or both of the source device 12 and the destination device 14 of FIG. 1 according to an exemplary embodiment.

Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.The processor 502 in the device 500 may be a central processing unit. Alternatively, processor 502 may be any other type of device or plurality of devices capable of manipulating or processing information that currently exists or will be developed in the future. Although the disclosed implementations may be practiced with a single processor, as shown, for example, with processor 502, speed and efficiency benefits may be achieved by using more than one processor.

Память 504 в устройстве 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодирования, которое выполняет описанные в данном документе способы.Memory 504 in device 500 may be read-only memory (ROM) or random access memory (RAM) in an implementation. Memory 504 may be any other suitable type of storage device. Memory 504 may include code and data 506 accessed by processor 502 using bus 512. Memory 504 may further include an operating system 508 and application programs 510, wherein application programs 510 include at least one program which allows the processor 502 to perform the methods described herein. For example, application programs 510 may include applications 1 through N, which further include a video encoding application that performs the methods described herein.

Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.Device 500 may also include one or more output devices, such as a display 518. The display 518 may be, in one example, a touch display that combines a display with a touch element capable of sensing touch inputs (touch). Display 518 may be coupled to processor 502 via bus 512.

Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях.Although depicted here as a single bus, bus 512 of device 500 may be composed of multiple buses. In addition, secondary storage 514 may be directly coupled to other components of device 500 or may be accessible over a network and may comprise a single plug-in unit, such as a memory card, or multiple units, such as multiple memory cards. Thus, device 500 can be implemented in a wide variety of configurations.

В примере построения списка кандидатов на слияние в соответствии с ITU-T H.265 список кандидатов на слияние строится на основе следующих кандидатов:In the example of constructing a list of merge candidates in accordance with ITU-T H.265, the list of merge candidates is built based on the following candidates:

1. пространственные кандидаты вплоть до четырех, которые выводятся из пяти пространственных соседних блоков,1. up to four spatial candidates, which are derived from five spatial neighboring blocks,

2. один временной кандидат, выводимый из двух временных, совместно размещенных блоков,2. one temporary candidate derived from two temporary, co-located blocks,

3. дополнительные кандидаты, в том числе объединенные кандидаты двунаправленного предсказания и3. additional candidates, including combined bidirectional prediction candidates and

4. кандидаты нулевых векторов движения.4. Candidates of zero motion vectors.

Пространственные кандидатыSpatial candidates

Информация движения пространственных соседних блоков сначала добавляется в список кандидатов на слияние (в примере, список кандидатов на слияние может быть пустым списком до добавления первого вектора движения в этот список кандидатов на слияние) в качестве кандидатов информации движения. Здесь соседние блоки, которые считаются вставляемыми в список слияния, проиллюстрированы на Фиг. 6b. Для слияния блоков интер-предсказания в список слияния вставляются вплоть до четырех кандидатов путем последовательной проверки A1, B1, B0, A0 и B2 в указанном порядке.The motion information of spatial neighboring blocks is first added to a merging candidate list (in an example, the merging candidate list may be an empty list before adding the first motion vector to the merging candidate list) as motion information candidates. Here, adjacent blocks that are considered to be inserted into the merge list are illustrated in FIG. 6b. To merge inter-prediction blocks, up to four candidates are inserted into the merge list by sequentially testing A1, B1, B0, A0 and B2 in that order.

Информация движения может содержать все данные движения, в том числе информацию о том, используются ли один или два списка опорных изображений, а также опорный индекс и вектор движения для каждого списка опорных изображений.The motion information may include all motion data, including information about whether one or two reference picture lists are used, as well as a reference index and a motion vector for each reference picture list.

В одном примере после проверки того, доступен ли соседний блок и содержит ли он информацию движения, выполняются некоторые дополнительные проверки избыточности, прежде чем принимать все данные движения соседнего блока в качестве кандидата информации движения. Эти проверки избыточности можно разделить на две категории для двух разных целей:In one example, after checking whether an adjacent block is available and contains motion information, some additional redundancy checks are performed before accepting all motion data of the adjacent block as a motion information candidate. These redundancy checks can be divided into two categories for two different purposes:

Категория 1, избегают наличия кандидатов с избыточными данными движения в упомянутом списке,Category 1, avoid having candidates with redundant motion data in the said list,

Категория 2, предотвращают слияние двух разделов, которые могли бы быть выражены другими средствами, что создавало бы избыточный синтаксис.Category 2, prevent the merging of two sections that could be expressed by other means, creating redundant syntax.

Временные кандидатыTemporary candidates

На фигуре 6a проиллюстрированы координаты блоков, из которых извлекаются временные кандидаты информации движения. Совместно размещенный блок является блоком, который имеет те же -x, -y координаты, что и у текущего блока, но находится на другом изображении (одном из опорных изображений). Временные кандидаты информации движения добавляются в список слияния, если список не является полым (в примере список слияния не является полным, когда количество кандидатов в списке слияния меньше порога, например, порог может равняться 4, 5, 6 и т. д.).Figure 6a illustrates the coordinates of blocks from which temporary motion information candidates are extracted. A co-located block is a block that has the same -x, -y coordinates as the current block, but is on a different image (one of the reference images). Temporary motion information candidates are added to the merge list if the list is not complete (in the example, the merge list is not complete when the number of candidates in the merge list is less than a threshold, for example, the threshold could be 4, 5, 6, etc.).

Генерируемые кандидатыGenerated candidates

После вставки пространственных и временных кандидатов информации движения, если список слияния все еще не является полным, генерируемые кандидаты добавляются для заполнения списка. Размер списка указывается в наборе параметров последовательности и фиксируется на всем протяжении кодированной видеопоследовательности.After inserting spatial and temporal motion information candidates, if the merge list is still not complete, the generated candidates are added to fill the list. The list size is specified in the sequence parameter set and is fixed throughout the encoded video sequence.

Двунаправленное предсказаниеBidirectional Prediction

Специальный режим интер-предсказания называется «двунаправленное (би-) предсказание», в котором два вектора движения используются для предсказания блока. Векторы движения могут указывать на одинаковые или разные опорные изображения, при этом опорное изображение может быть указано с помощью ID списка опорных изображений и индекса опорного изображения. Например, первый вектор движения может указывать на первое изображение в списке L0 опорных изображений, а второй вектор движения может указывать на первое изображение в списке L1 опорных изображений. Два списка опорных изображений (например, L0 и L1) могут поддерживаться, и изображение, указанное первым вектором движения, выбирается из списка L0, а изображение, указанное вторым вектором движения, выбирается из списка L1.A special mode of inter-prediction is called "bi-directional (bi-)prediction", in which two motion vectors are used to predict a block. The motion vectors may point to the same or different reference pictures, and the reference picture may be indicated by a reference picture list ID and a reference picture index. For example, the first motion vector may point to the first image in the reference picture list L0, and the second motion vector may point to the first image in the reference picture list L1. Two reference picture lists (eg, L0 and L1) may be maintained, and the picture indicated by the first motion vector is selected from the L0 list, and the picture indicated by the second motion vector is selected from the L1 list.

В примере, если информация движения указывает двунаправленное предсказание, тогда информация движения включает в себя две части:In the example, if the motion information indicates bidirectional prediction, then the motion information includes two parts:

- Часть L0: Вектор движения и индекс опорного изображения, который указывает на запись в списке L0 опорных изображений.- L0 part: Motion vector and reference picture index that points to an entry in the L0 reference picture list.

- Часть L1: Вектор движения и индекс опорного изображения, который указывает на запись в списке L1 опорных изображений.- L1 Part: Motion vector and reference picture index, which points to an entry in the L1 reference picture list.

Счетчик очередности изображений (POC): Переменная, которая ассоциирована с каждым изображением, однозначно идентифицирует ассоциированное изображение среди всех изображений в CVS (кодированной видеопоследовательности), и когда ассоциированное изображение должно быть выведено из буфера декодированных изображений, указывает позицию ассоциированного изображения в очередности вывода относительно позиций в очередности вывода других изображений в той же самой CVS, которые должны быть выведены из буфера декодированных изображений.Picture Order Counter (POC): A variable that is associated with each picture uniquely identifies the associated picture among all pictures in the CVS (coded video sequence), and when the associated picture is to be output from the decoded picture buffer, indicates the position of the associated picture in the output order relative to the positions in order of output of other images in the same CVS that should be output from the decoded image buffer.

Каждый из списков L0 и L1 опорных изображений может включать в себя одно или более опорных изображений, каждое из которых идентифицируется с помощью POC. Ассоциация с каждым опорным индексом и значением POC может сигнализироваться в битовом потоке. В качестве примера списки L0 и L1 опорных изображений могут включать в себя следующие опорные изображения:Each of the reference picture lists L0 and L1 may include one or more reference pictures, each of which is identified by a POC. The association with each reference index and POC value may be signaled in the bit stream. As an example, the reference picture lists L0 and L1 may include the following reference pictures:

Список опорных изображенийList of reference images Опорный индексReference index POCPOC L0L0 00 1212 L0L0 11 1313 L1L1 00 1313 L1L1 11 1414

В приведенном выше примере первая запись (указанная опорным индексом 0) в списке L1 опорных изображений является опорным изображением со значением POC 13. Вторая запись (указанная опорным индексом 1) в списке L1 опорных изображений является опорным изображением со значением POC 14.In the above example, the first entry (indicated by reference index 0) in the reference picture list L1 is a reference picture with a POC value of 13. The second entry (indicated by a reference index 1) in the reference picture list L1 is a reference picture with a POC value of 14.

Процесс построения списка слияния в ITU-T H.265 и VVC выводит список кандидатов информации движения. Процесс построения списка слияния VVC описан в разделе «8.3.2.2 Derivation process for luma motion vectors for merge mode» документа JVET-L1001_v2 Универсальное Видеокодирование (Проект 3), который общедоступен по адресу http://phenix.it-sudparis.eu/jvet/. Термин «информация движения» относится к данным движения, которые необходимы для выполнения процесса предсказания с компенсацией движения. Информация движения обычно относится к следующей информации:The merge list construction process in ITU-T H.265 and VVC outputs a list of traffic information candidates. The VVC merge list construction process is described in section "8.3.2.2 Derivation process for luma motion vectors for merge mode" of JVET-L1001_v2 Universal Video Coding (Project 3), which is publicly available at http://phenix.it-sudparis.eu/jvet /. The term “motion information” refers to motion data that is needed to perform a motion-compensated prediction process. Motion information generally refers to the following information:

- Применяет ли блок однонаправленное или двунаправленное предсказание.- Whether the block applies unidirectional or bidirectional prediction.

- ID опорного изображения, который используется при предсказании (2 ID, если блок применяет двунаправленное предсказание).- ID of the reference picture that is used in prediction (2 IDs if the block uses bidirectional prediction).

- Вектор движения (2 вектора движения, если блок подлежит двунаправленному предсказанию).- Motion vector (2 motion vectors if the block is subject to bidirectional prediction).

- Дополнительная информация. - Additional Information.

В VVC и H.265 список кандидатов, которые выводятся при построении списка слияния, включает в себя N информаций движения кандидатов. Число N обычно включается в битовый поток и может быть положительным целым числом, например 5, 6 и т. д. Кандидаты, которые включаются в список слияния, который строится, могут включать в себя информацию однонаправленного предсказания или информацию двунаправленного предсказания. Это означает, что кандидат, который выбирается из списка слияния, может указывать операцию двунаправленного предсказания.In VVC and H.265, the candidate list that is output when constructing the merge list includes N candidate traffic information. The number N is typically included in the bitstream and may be a positive integer, such as 5, 6, etc. The candidates that are included in the merge list that is constructed may include unidirectional prediction information or bidirectional prediction information. This means that the candidate that is selected from the merge list can specify a bidirectional prediction operation.

Режим треугольного предсказанияTriangle Prediction Mode

Концепция режима треугольного предсказания заключается во введении нового треугольного раздела для предсказания с компенсацией движения. Как показано на Фиг. 7, две треугольные единицы предсказания используются для CU, в диагональном или обратном диагональном направлении. Каждая треугольная единица предсказания для CU подвергается интер-предсказанию с использованием однонаправленного вектора движения и индекса опорного кадра, которые выводятся из списка кандидатов однонаправленного предсказания. Процесс адаптивного взвешивания выполняется для диагонального края после того, как выборки, которые ассоциированы с каждой треугольной единицей предсказания, были предсказаны, например, посредством компенсации движения или интра-предсказания изображения. Затем процесс преобразования и квантования применяется ко всей CU. Следует отметить, что этот режим применяется только к режиму пропуска и режиму слияния.The concept of triangular prediction mode is to introduce a new triangular section for motion compensated prediction. As shown in FIG. 7, two triangular prediction units are used for CU, in the diagonal or reverse diagonal direction. Each triangular prediction unit for a CU is inter-predicted using a unidirectional motion vector and a reference frame index, which are derived from the unidirectional prediction candidate list. The adaptive weighting process is performed on the diagonal edge after the samples that are associated with each triangular prediction unit have been predicted, for example, by motion compensation or image intra-prediction. The conversion and quantization process is then applied to the entire CU. It should be noted that this mode only applies to skip mode and merge mode.

В режиме треугольного предсказания блок разбивают на две треугольные части (как на фигуре 7), и каждая часть может быть предсказана с использованием одного вектора движения. Вектор движения, который используется для предсказания одной треугольной части (обозначаемой PU1), может отличаться от вектора движения, который используется для предсказания другой треугольной части (обозначаемой PU2). В примере, отмечается, что каждая часть может быть предсказана только с использованием одного вектора движения (однонаправленное предсказание), чтобы уменьшить сложность выполнения режима треугольного предсказания. Другими словами, PU1 и PU2 могут не предсказываться с использованием двунаправленного предсказания, которое содержит два вектора движения.In the triangular prediction mode, a block is divided into two triangular parts (as in FIG. 7), and each part can be predicted using one motion vector. The motion vector that is used to predict one triangular portion (denoted PU1) may be different from the motion vector that is used to predict another triangular portion (denoted PU2). In the example, it is noted that each part can be predicted using only one motion vector (unidirectional prediction) to reduce the complexity of performing the triangular prediction mode. In other words, PU1 and PU2 may not be predicted using bidirectional prediction that contains two motion vectors.

Режим субблочного предсказанияSub-block prediction mode

Режим треугольного предсказания является специальным случаем субблочного предсказания, когда блок делится на два блока. В приведенных выше примерах проиллюстрированы два направления деления блоков (45 градусные и 135 градусные разделы). Также возможны другие углы разделения и пропорции разделения для субблочного предсказания (примеры на Фиг. 8).Triangular prediction mode is a special case of sub-block prediction where a block is divided into two blocks. The examples above illustrate two directions for dividing blocks (45 degree and 135 degree sections). Other split angles and split proportions for sub-block prediction are also possible (examples in FIG. 8).

В некоторых примерах блок разбивается на 2 субблока, и каждая часть (субблок) предсказывается с помощью однонаправленного предсказания.In some examples, a block is split into 2 sub-blocks and each part (sub-block) is predicted using unidirectional prediction.

В примере, согласно использованию режима субблочного разделения, следующие этапы применяются для получения выборок предсказания для блока:In the example, according to the use of sub-block partitioning mode, the following steps are applied to obtain prediction samples for a block:

- Этап 1: деление блока кодирования на 2 субблока согласно геометрической модели. Эта модель может привести в результате к разбиению блока линией разграничения (например, прямой линией), как показано в примерах на Фиг. 9-12.- Stage 1: dividing the coding block into 2 subblocks according to the geometric model. This model may result in the block being divided by a demarcation line (eg, a straight line), as shown in the examples in FIGS. 9-12.

Можно понять, что результат Этапа 1 может быть просто концептуальным представлением. Например, после Этапа 1 нет явного объекта «субблок 1» или «субблок 2»; а генерируются и получаются параметры, относящиеся к линии разграничения. Выборки принадлежат к разным субблокам согласно упомянутым параметрам, относящимся к линии разграничения.It can be understood that the output of Stage 1 may simply be a conceptual representation. For example, after Stage 1 there is no explicit "subblock 1" or "subblock 2" object; and parameters related to the demarcation line are generated and obtained. The samples belong to different sub-blocks according to the mentioned parameters related to the demarcation line.

На этом этапе, согласно геометрической модели, выборки в блоке кодирования считаются находящимися в двух субблоках. Субблок A или субблок B может содержать часть (но не все) выборок в текущем блоке кодирования. Субблок А или субблок В может быть представлен согласно знаку sample_dist каждой из выборок. Sample_dist может быть получено согласно примерам и вариантам осуществления в других абзацах.At this stage, according to the geometric model, the samples in the encoding block are considered to be in two sub-blocks. Subblock A or subblock B may contain some (but not all) of the samples in the current encoding block. Subblock A or subblock B can be represented according to the sample_dist sign of each of the samples. Sample_dist can be obtained according to the examples and embodiments in other paragraphs.

- Этап 2: получение первого режима предсказания для первого субблока и второго режима предсказания для второго субблока. В одном примере первый режим предсказания не идентичен второму режиму предсказания. В одном примере режим предсказания (первый режим предсказания или второй режим предсказания) может быть режимом интер-предсказания, информация для режима интер-предсказания может содержать индекс опорного изображения и вектор движения. В другом примере режим предсказания может быть режимом интра-предсказания, информация для режима интра-предсказания может содержать индекс режима интра-предсказания.- Step 2: obtaining the first prediction mode for the first sub-block and the second prediction mode for the second sub-block. In one example, the first prediction mode is not identical to the second prediction mode. In one example, the prediction mode (the first prediction mode or the second prediction mode) may be an inter-prediction mode, the information for the inter-prediction mode may include a reference image index and a motion vector. In another example, the prediction mode may be an intra-prediction mode, the information for the intra-prediction mode may include an index of the intra-prediction mode.

- Этап 3: Получение первых значений предсказания и вторых значений предсказания, используя первый режим предсказания и второй режим предсказания, соответственно.- Step 3: Obtaining the first prediction values and the second prediction values using the first prediction mode and the second prediction mode, respectively.

- Этап 4: получение объединенных значений выборок предсказания в соответствии с объединением первых значений предсказания и вторых значений предсказания, согласно делению, которое раскрыто на Этапе 1. Процесс объединения выборок из первого предсказания и второго предсказания для получения объединенных значений выборок предсказания блока может содержать операции фильтрации, операции маскирования или копирование выборок.- Step 4: obtaining the combined values of the prediction samples in accordance with the combining of the first prediction values and the second prediction values, according to the division that is disclosed in Step 1. The process of combining the samples from the first prediction and the second prediction to obtain the combined values of the block prediction samples may include filtering operations , masking operations or copying selections.

В примере, на этапе 1, блок кодирования делят на 2 субблока различными способами. На Фиг. 9 показан пример разделения блока кодирования, линия 1250 разграничения делит упомянутый блок на 2 субблока. Чтобы описать упомянутую линию 1250, сигнализируются два параметра, одним параметром является угол альфа 1210, а другим параметром является расстояние dist 1230.In the example, in step 1, the encoding block is divided into 2 sub-blocks in different ways. In FIG. 9 shows an example of dividing a coding block, the demarcation line 1250 divides the block into 2 sub-blocks. To describe said line 1250, two parameters are signaled, one parameter is the angle alpha 1210 and the other parameter is the distance dist 1230.

В некоторых вариантах осуществления упомянутый угол, как показано на Фигуре 9, измеряется между осью x и линией разграничения, тогда как упомянутое расстояние измеряется длиной вектора, который перпендикулярен линии разграничения и проходит через центр текущего блока.In some embodiments, said angle, as shown in Figure 9, is measured between the x-axis and the demarcation line, while said distance is measured by the length of a vector that is perpendicular to the demarcation line and passes through the center of the current block.

В другом примере на Фиг. 10 показан альтернативный способ представления линии разграничения, где примеры угла и расстояния отличаются от примеров, показанных на Фиг. 9.In another example in FIG. 10 shows an alternative way of representing a demarcation line, where the examples of angle and distance differ from the examples shown in FIG. 9.

В некотором примере, на этапе 4, деление, раскрытое на Этапе 1, используется для объединения двух упомянутых предсказаний, чтобы получить окончательное предсказание. В примере операция смешивания применяется на этапе 4 для устранения любых артефактов (резкого или неровного вида вдоль линии разграничения). Операция смешивания может быть описана как операция фильтрации вдоль линии разграничения.In some example, in Step 4, the division disclosed in Step 1 is used to combine the two mentioned predictions to obtain the final prediction. In the example, a blending operation is applied in step 4 to remove any artifacts (a sharp or jagged appearance along the demarcation line). The mixing operation can be described as a filtering operation along a line of demarcation.

В примере, на стороне кодера, линия разграничения (параметры, определяющие эту линию, например, угол и расстояние) определяется на основе функции стоимости, основанной на соотношении "скорость-искажение". Определенные параметры линии кодируются в битовый поток. На стороне декодера параметры линии декодируются (получаются) согласно битовому потоку. На стороне декодера параметры линии используются для объединения первых значений предсказания и вторых значений предсказания, чтобы получить окончательные значения предсказания. Этап 1 не требует наличия двух объектов-субблоков кодирования, декодер может использовать блок кодирования и параметры линии для представления двух объектов-субблоков кодирования.In the example, on the encoder side, the demarcation line (parameters that define this line, such as angle and distance) is determined based on a cost function based on the rate-distortion relationship. Certain line parameters are encoded into a bit stream. At the decoder side, the line parameters are decoded (obtained) according to the bit stream. On the decoder side, line parameters are used to combine the first prediction values and the second prediction values to obtain the final prediction values. Stage 1 does not require two encoding subblock objects; the decoder can use the encoding block and line parameters to represent the two encoding subblock objects.

Поскольку существует множество возможностей деления блока кодирования на 2 субблока, сигнализация (кодирование) такого деления требует слишком большого числа битов. И поскольку значения угла и расстояния могут иметь много разных значений, слишком много вспомогательной информации требуется сигнализировать в битовом потоке.Since there are many possibilities for dividing a coding block into 2 sub-blocks, signaling (coding) such a division requires too many bits. And since the angle and distance values can have many different values, too much auxiliary information needs to be signaled in the bitstream.

Варианты осуществления настоящего изобретения касаются сигнализации параметров разделения. Эффективное кодирование достигается следующими особенностями:Embodiments of the present invention relate to signaling of separation parameters. Efficient coding is achieved by the following features:

- Параметры (например, угол и расстояние) для разделения блока сохраняются в предопределенной таблице, так что фактические значения угла и расстояния передавать не нужно. - Parameters (such as angle and distance) for block division are stored in a predefined table, so that the actual angle and distance values do not need to be transferred.

- Упомянутая таблица содержит параметры разделения, которые являются наиболее вероятными и которые включают в себя достаточно вариаций.- The table mentioned contains the splitting parameters that are most likely and which include sufficient variation.

- Индекс в таблицу кодируется в битовый поток (или получается из него).- The index into the table is encoded into a bit stream (or obtained from it).

Варианты осуществления изобретения обеспечивают способ совместного кодирования параметров, которые описывают разделение блока кодирования на субблоки.Embodiments of the invention provide a method for jointly encoding parameters that describe the division of an encoding block into subblocks.

Вариант 1 осуществления (с позиции декодера): Option 1 (from the decoder position):

В этом варианте осуществления следующие этапы применяются для получения объединенного значения предсказания для некоторой выборки из блока кодирования.In this embodiment, the following steps are applied to obtain a combined prediction value for some sample from the encoding block.

Этап 1: Получение значения указателя для текущего блока декодирования согласно битовому потоку.Step 1: Obtain the pointer value for the current decoding block according to the bitstream.

В варианте осуществления значение указателя используется для специфицирования формы разделения в режиме слияния с геометрическим разделением. Например, указателем может быть merge_gpm_partition_idx[x0][y0 ], при этом merge_gpm_partition_idx[ x0 ][ y0 ] специфицирует форму разделения режима слияния с геометрическим разделением. Индексы x0, y0 массива специфицируют местоположение (x0, y0) верхней левой выборки яркости рассматриваемого блока кодирования относительно верхней левой выборки яркости изображения.In an embodiment, the pointer value is used to specify the shape of the split in geometric split merge mode. For example, the pointer could be merge_gpm_partition_idx[x0][y0 ], where merge_gpm_partition_idx[ x0 ][ y0 ] specifies the partition form of the geometric partition merge mode. The array indices x0, y0 specify the location (x0, y0) of the top left luminance sample of the encoding block in question relative to the top left luminance sample of the image.

Обычно значение merge_gpm_partition_idx[ x0 ][ y0 ] декодируется из битового потока. В примере диапазон значений для merge_gpm_partition_idx[ ][ ] составляет от 0 до 63, в том числе 0 и 63. В примере процессом декодирования для merge_gpm_partition_idx[ ][ ] является «обход».Typically the merge_gpm_partition_idx[ x0 ][ y0 ] value is decoded from the bitstream. In the example, the range of values for merge_gpm_partition_idx[ ][ ] is from 0 to 63, including 0 and 63. In the example, the decoding process for merge_gpm_partition_idx[ ][ ] is "bypass".

Когда merge_gpm_partition_idx[ x0 ][ y0 ] не присутствует, он подразумевается равным 0.When merge_gpm_partition_idx[ x0 ][ y0 ] is not present, it is assumed to be 0.

Этап 2: На основе значения указателя и предопределенной таблицы поиска получение значения первого параметра и значения второго параметра.Step 2: Based on the pointer value and the predefined lookup table, obtain the value of the first parameter and the value of the second parameter.

(Parameter1, parameter2)=lookupTable (указатель)(Parameter1, parameter2)=lookupTable (pointer)

В варианте осуществления переменная угла разделения angleIdx (параметр 1) и переменная расстояния distanceIdx (параметр 2) режима геометрического разделения устанавливаются согласно значению merge_gpm_partition_idx[ xCb ][ yCb ] (указатель), как специфицировано в нижеследующей таблице. Можно понять, что в упомянутой реализации эта взаимосвязь может быть реализована согласно таблице 1 или согласно некоторой функции.In an embodiment, the partition angle variable angleIdx (parameter 1) and the distance variable distanceIdx (parameter 2) of the geometric partition mode are set according to the value of merge_gpm_partition_idx[ xCb ][ yCb ] (pointer) as specified in the following table. It can be understood that in the mentioned implementation, this relationship may be implemented according to Table 1 or according to some function.

Таблица 1: Спецификация angleIdx и distanceIdx на основе merge_gpm_partition_idxTable 1: Specification of angleIdx and distanceIdx based on merge_gpm_partition_idx

merge_gpm_partition_idxmerge_gpm_partition_idx 00 11 22 33 44 55 66 77 88 99 1010 11eleven 1212 1313 1414 1515 angleIdxangleIdx 00 00 22 22 22 22 33 33 33 33 44 44 44 44 55 55 distanceIdxdistanceIdx 11 33 00 11 22 33 00 11 22 33 00 11 22 33 00 11 merge_gpm_partition_idxmerge_gpm_partition_idx 1616 1717 1818 1919 2020 2121 2222 2323 2424 2525 2626 2727 2828 2929 30thirty 3131 angleIdxangleIdx 55 55 88 88 11eleven 11eleven 11eleven 11eleven 1212 1212 1212 1212 1313 1313 1313 1313 distanceIdxdistanceIdx 22 33 11 33 00 11 22 33 00 11 22 33 00 11 22 33 merge_gpm_partition_idxmerge_gpm_partition_idx 3232 3333 3434 3535 3636 3737 3838 3939 4040 4141 4242 4343 4444 4545 4646 4747 angleIdxangleIdx 1414 1414 1414 1414 1616 1616 1818 1818 1818 1919 1919 1919 2020 2020 2020 2121 distanceIdxdistanceIdx 00 11 22 33 11 33 11 22 33 11 22 33 11 22 33 11 merge_gpm_partition_idxmerge_gpm_partition_idx 4848 4949 5050 5151 5252 5353 5454 5555 5656 5757 5858 5959 6060 6161 6262 6363 angleIdxangleIdx 2121 2121 2424 2424 2727 2727 2727 2828 2828 2828 2929 2929 2929 30thirty 30thirty 30thirty distanceIdxdistanceIdx 22 33 11 33 11 22 33 11 22 33 11 22 33 11 22 33

Этап 3: Для выборки в текущем блоке декодирования расстояние выборки (sample_dist) вычисляется согласно значению первого параметра и значению второго параметра.Step 3: For a sample in the current decoding block, the sampling distance (sample_dist) is calculated according to the value of the first parameter and the value of the second parameter.

В варианте осуществления этап 3 содержит:In an embodiment, step 3 comprises:

Этап 3.1: получение индексного значения параметра угла (alphaN или angleIdx) для текущего блока, значения ширины (W) текущего блока, значения высоты (H) текущего блока. W и H представляют ширину и высоту текущего блока числом выборок. Например, блок кодирования, ширина и высота которого равны 8, представляет собой квадратный блок, содержащий 64 выборки. В другом примере W и H представляют ширину и высоту текущего блока числом выборок яркости. Индексное значение параметра угла может быть получено согласно приведенному выше описанию, относящемуся к таблице 1.Step 3.1: getting the index value of the angle parameter (alphaN or angleIdx) for the current block, the width (W) value of the current block, the height (H) value of the current block. W and H represent the width and height of the current block by the number of samples. For example, a coding block whose width and height are 8 is a square block containing 64 samples. In another example, W and H represent the width and height of the current block by the number of brightness samples. The index value of the angle parameter can be obtained according to the above description referring to Table 1.

Этап 3.2: получение значения соотношения whRatio согласно значению W и значению H, значение whRatio представляет соотношение между шириной и высотой текущего блока кодирования.Step 3.2: Obtaining the whRatio value according to the W value and the H value, the whRatio value represents the ratio between the width and height of the current encoding block.

В примере whRatio=H/W; или whRatio=W/H.In the example whRatio=H/W; or whRatio=W/H.

В другом примере две переменные nCbW и nCbH специфицируют ширину и высоту текущего блока кодирования, а переменная cIdx специфицирует индекс цветового компонента.In another example, two variables nCbW and nCbH specify the width and height of the current encoding block, and the variable cIdx specifies the color component index.

переменные nW, nH и whRatio выводятся следующим образом:The variables nW, nH and whRatio are output as follows:

nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;

nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;

whRatio=nH/nW.whRatio=nH/nW.

В примере, переменные SubWidthC и SubHeightC специфицируются в таблице 2 в зависимости от структуры выборки формата цветности, которая специфицируется с помощью chroma_format_idc (chroma_format_idc специфицирует выборку цветности относительно выборки яркости) и separate_colour_plane_flag (separate_colour_plane_flag, равный 1, специфицирует, что три цветовых компонента формата цветности 4:4:4 кодируются по отдельности. separate_colour_plane_flag, равный 0, специфицирует, что эти цветовые компоненты не кодируются по отдельности. Когда separate_colour_plane_flag не присутствует, он подразумевается равным 0. Когда separate_colour_plane_flag равен 1, кодированное изображение состоит из трех отдельных компонентов, каждый из которых состоит из кодированных выборок одной цветовой плоскости (Y, Cb или Cr) и использует синтаксис монохромного кодирования. В этом случае каждая цветовая плоскость ассоциирована с конкретным значением colour_plane_id). Другие значения chroma_format_idc, SubWidthC и SubHeightC могут быть специфицированы в будущем ITU-T | ISO/IEC.In the example, the variables SubWidthC and SubHeightC are specified in Table 2 depending on the chroma format sample structure, which is specified using chroma_format_idc (chroma_format_idc specifies the chroma sample relative to the luminance sample) and separate_colour_plane_flag (separate_colour_plane_flag equal to 1 specifies that the three color components of the chroma 4 :4:4 are encoded separately. separate_colour_plane_flag equal to 0 specifies that these color components are not encoded separately. When separate_colour_plane_flag is not present, it is implied to be 0. When separate_colour_plane_flag is equal to 1, the encoded image consists of three separate components, each of which consists of encoded samples of a single color plane (Y, Cb or Cr) and uses monochrome encoding syntax, in which case each color plane is associated with a specific color_plane_id value). Other values for chroma_format_idc, SubWidthC and SubHeightC may be specified in the future by ITU-T | ISO/IEC.

Таблица 2 - Значения SubWidthC и SubHeightC, выводимые из chroma_format_idc и separate_colour_plane_flagTable 2 - SubWidthC and SubHeightC values derived from chroma_format_idc and separate_colour_plane_flag

chroma_format_idcchroma_format_idc separate_colour_plane_flagseparate_colour_plane_flag Формат цветностиColor Format SubWidthCSubWidthC SubHeightCSubHeightC 00 00 МонохромныйMonochrome 11 11 11 00 4:2:04:2:0 22 22 22 00 4:2:24:2:2 22 11 33 00 4:4:44:4:4 11 11 33 11 4:4:44:4:4 11 11

В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.In a monochrome sample there is only one sample array, which is nominally considered the luma array.

В выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости.In a 4:2:0 sample, each of the two chroma arrays is half the height and half the width of the luma array.

В выборке 4:2:2 каждый из двух массивов цветности имеет аналогичную высоту и половину ширины массива яркости.In a 4:2:2 sample, each of the two chroma arrays has the same height and half the width of the lumina array.

В выборке 4:4:4, в зависимости от значения separate_colour_plane_flag, применяется следующее:In a 4:4:4 sample, depending on the value of separate_colour_plane_flag, the following applies:

- Если separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет одинаковую высоту и ширину, что и массив яркости.- If separate_colour_plane_flag is 0, each of the two chroma arrays has the same height and width as the luminance array.

- Иначе (separate_colour_plane_flag равен 1) три цветовые плоскости обрабатываются отдельно как подвергаемые монохромной выборке изображения.- Otherwise (separate_colour_plane_flag is equal to 1) the three color planes are treated separately as monochrome sampled images.

Этап 3.3: Получение значения shiftHor согласно таблице поиска, значению альфа и значению whRatio, в примере значение альфа (alphaN или angleIdx) и значение whRatio используются в качестве индексных значений таблицы поиска. Должно быть понятно, что значение shiftHor также может быть получено согласно функции, при этом значение альфа (alphaN или angleIdx) и значение whRatio представляют собой входные данные в упомянутую функцию, а значение shiftHor представляет собой выходные данные упомянутой функции. В примере результат функции аналогичен или совпадает с таблицей поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки.Step 3.3: Retrieving the shiftHor value according to the lookup table, alpha value and whRatio value, in the example the alpha value (alphaN or angleIdx) and whRatio value are used as index values of the lookup table. It should be understood that the value of shiftHor can also be obtained according to a function, wherein the alpha value (alphaN or angleIdx) and the whRatio value represent the input to the function, and the shiftHor value represents the output of the function. In the example, the function result is the same as or the same as the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process.

В другом примере функция может быть представлена как shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.In another example, the function could be represented as shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.

Этап 3.4: значение sample_dist вычисляется согласно значению shiftHor.Step 3.4: The value of sample_dist is calculated according to the value of shiftHor.

В примере, для вычисления расстояния выборки (sample_dist) сначала следующим образом выводятся переменные offsetX и offsetY:In the example, to calculate the sample distance (sample_dist), the offsetX and offsetY variables are first output as follows:

Если shiftHor равен 0, применяется следующее:If shiftHor is 0, the following applies:

offsetX=( −nW ) >> 1, offsetX=( −nW ) >> 1,

offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );

Иначе (shiftHor равен 1), применяется следующее:Otherwise (shiftHor is 1), the following applies:

offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) ); offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) );

offsetY=( − nH ) >> 1;offsetY=( − nH ) >> 1;

- Переменные xL и yL выводятся следующим образом:- Variables xL and yL are output as follows:

xL=( cIdx== 0 ) ? x : x * SubWidthC xL=( cIdx== 0 ) ? x : x * SubWidthC

yL=( cIdx== 0 ) ? y : y * SubHeightC yL=( cIdx== 0 ) ? y : y * SubHeightC

sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY )  <<  1 ) + 1 ) ) * disLut[ displacementY ].sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY )  << 1 ) + 1 ) ) * disLut[ displacementY ].

Переменные displacementX и displacementY выводятся следующим образом:The displacementX and displacementY variables are output as follows:

hwRatio=cbHeight/cbWidth;hwRatio=cbHeight/cbWidth;

displacementX=angleIdx;displacementX=angleIdx;

displacementY=( angleIdx+8 ) % 32.displacementY=( angleIdx+8 ) % 32.

Массив disLut специфицируется в таблице 3 следующим образом:The disLut array is specified in Table 3 as follows:

Таблица 3 Спецификация массива disLut расстояний геометрического разделенияTable 3 Specification of the disLut array of geometric separation distances

idxidx 00 22 33 44 55 66 88 1010 11eleven 1212 1313 1414 disLut[idx]disLut[idx] 88 88 88 44 44 22 00 −2−2 −4−4 −4−4 −8−8 −8−8 idxidx 1616 1818 1919 2020 2121 2222 2424 2626 2727 2828 2929 30thirty disLut[idx]disLut[idx] −8−8 −8−8 −8−8 −4−4 −4−4 −2−2 00 22 44 44 88 88

В другом варианте осуществления, в примере, Этап 3 в вышеупомянутых вариантах осуществления может содержать следующие этапы:In another embodiment, in an example, Step 3 in the above embodiments may comprise the following steps:

Этап 3.1: получение значения параметра угла (alphaN или angleIdx) для текущего блока, значения индекса расстояния (distanceIdx), значения ширины (W) текущего блока, значения высоты (H) текущего блока. W и H представляют ширину и высоту текущего блока числом выборок. Например, блок кодирования, ширина и высота которого равны 8, представляет собой квадратный блок, содержащий 64 выборки. В другом примере W и H представляют ширину и высоту текущего блока числом выборок яркости. Индексное значение параметра угла может быть получено согласно приведенному выше описанию, относящемуся к таблице 1.Step 3.1: getting the angle parameter value (alphaN or angleIdx) for the current block, the distance index value (distanceIdx), the width (W) value of the current block, the height (H) value of the current block. W and H represent the width and height of the current block by the number of samples. For example, a coding block whose width and height are 8 is a square block containing 64 samples. In another example, W and H represent the width and height of the current block by the number of brightness samples. The index value of the angle parameter can be obtained according to the above description referring to Table 1.

Этап 3.2: получение значения соотношения whRatio согласно значению W и значению H, значение whRatio представляет соотношение между шириной и высотой текущего блока кодирования.Step 3.2: Obtaining the whRatio value according to the W value and the H value, the whRatio value represents the ratio between the width and height of the current encoding block.

В примере whRatio=H/W; или whRatio=W/H.In the example whRatio=H/W; or whRatio=W/H.

В другом примере две переменные nCbW и nCbH специфицируют ширину и высоту текущего блока кодирования, а переменная cIdx специфицирует индекс цветового компонента.In another example, two variables nCbW and nCbH specify the width and height of the current encoding block, and the variable cIdx specifies the color component index.

переменные nW, nH и whRatio выводятся следующим образом:The variables nW, nH and whRatio are output as follows:

nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;

nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;

whRatio=nH/nW. whRatio=nH/nW.

Этап 3.3: Получение значения shiftHor согласно таблице поиска, значению альфа и значению whRatio, в примере, значение alphaN и значение whRatio используются в качестве индексных значений таблицы поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки. Значение shiftHor также может быть получено согласно функции, при этом значение альфа (alphaN или angleIdx) и значение whRatio представляют собой входные данные упомянутой функции, а значение shiftHor представляет собой выходные данные упомянутой функции. В примере результат функции аналогичен или совпадает с таблицей поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки.Step 3.3: Retrieving the shiftHor value according to the lookup table, alpha value and whRatio value, in the example, alphaN value and whRatio value are used as index values of the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process. The shiftHor value can also be obtained according to a function, wherein the alpha value (alphaN or angleIdx) and the whRatio value represent the input of the function, and the shiftHor value represents the output of the function. In the example, the function result is the same as or the same as the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process.

В другом примере функция может быть представлена как shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.In another example, the function could be represented as shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.

Этап 3.4: вычисление значения sample_dist согласно значению shiftHor, значению distanceIdx, значению угла (alphaN или angleIdx), значению W и значению H.Step 3.4: Calculate sample_dist value according to shiftHor value, distanceIdx value, angle value (alphaN or angleIdx), W value and H value.

В примере, для вычисления расстояния выборки (sample_dist) сначала следующим образом выводятся переменные offsetX и offsetY:In the example, to calculate the sample distance (sample_dist), the offsetX and offsetY variables are first output as follows:

Если shiftHor равен 0, применяется следующее:If shiftHor is 0, the following applies:

offsetX=( −nW ) >> 1, offsetX=( −nW ) >> 1,

offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );

Иначе (shiftHor равен 1), применяется следующее:Otherwise (shiftHor is 1), the following applies:

offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) ); offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) );

offsetY=( − nH ) >> 1;offsetY=( − nH ) >> 1;

- Переменные xL и yL выводятся следующим образом:- Variables xL and yL are output as follows:

xL=( cIdx== 0 ) ? x : x * SubWidthC xL=( cIdx== 0 ) ? x : x * SubWidthC

yL=( cIdx== 0 ) ? y : y * SubHeightC yL=( cIdx== 0 ) ? y : y * SubHeightC

sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY )  <<  1 ) + 1 ) ) * disLut[ displacementY ].sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY )  << 1 ) + 1 ) ) * disLut[ displacementY ].

Переменные displacementX и displacementY выводятся следующим образом:The displacementX and displacementY variables are output as follows:

hwRatio=cbHeight/cbWidth;hwRatio=cbHeight/cbWidth;

displacementX=angleIdx;displacementX=angleIdx;

displacementY=( angleIdx+8 ) % 32.displacementY=( angleIdx+8 ) % 32.

Массив disLut специфицирован в приведенной выше таблице 3.The disLut array is specified in Table 3 above.

Этап 4: Использование вычисленного sample_dist для вычисления весовых коэффициентов, причем весовые коэффициенты используются для объединения первого значения предсказания и второго значения предсказания, соответствующего упомянутой выборке. В примере весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2, имея ввиду вес, соответствующий первому значению предсказания, и вес, соответствующий второму значению предсказания.Step 4: Using the calculated sample_dist to calculate weights, the weights being used to combine the first prediction value and the second prediction value corresponding to said sample. In the example, the weights are denoted as sampleWeight1 and sampleWeight2, meaning a weight corresponding to the first prediction value and a weight corresponding to the second prediction value.

В одном примере весовые коэффициенты вычисляются согласно следующим функциямIn one example, the weights are calculated according to the following functions

weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;

wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).

В этом примере wValue представляет собой sampleWeight1, а 8-wValue представляет собой sampleWeight2. Переменная partFlip определяется согласно значению angleIdx. В примере partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, или partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0.In this example, wValue represents sampleWeight1 and 8-wValue represents sampleWeight2. The partFlip variable is defined according to the angleIdx value. In the example, partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, or partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 10.

Этап 5: Вычисление объединенного значения выборки предсказания в координате выборки (x, y) согласно первому значению предсказания в координате (x, y), второму значению предсказания в координате (x, y), sampleWeight1 и sampleWeight2.Step 5: Calculate the combined prediction sample value at sample coordinate (x, y) according to the first prediction value at (x, y) coordinate, second prediction value at (x, y) coordinate, sampleWeight1 and sampleWeight2.

В примере значение выборки предсказания выводится следующим образом:In the example, the prediction sample value is output as follows:

pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 )  >>  shift1 ).pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >>> shift1).

При этом bitDepth представляет битовую глубину выборки, переменную shift1 получают согласно упомянутой bitDepth, в примере shift1= Max( 5, 17 - BitDepth ); Переменную offset1 получают согласно shift1, в примере offset1= 1 << ( shift1-1 ), predSamplesLA и predSamplesLB представляют собой два (nCbW)x(nCbH) массива.In this case, bitDepth represents the bit depth of the sample, the shift1 variable is obtained according to the mentioned bitDepth, in the example shift1= Max( 5, 17 - BitDepth ); The variable offset1 is obtained according to shift1, in the example offset1= 1 << ( shift1-1 ), predSamplesLA and predSamplesLB are two (nCbW)x(nCbH) arrays.

Вариант 2 осуществления (с позиции кодера):Option 2 (from the encoder's perspective):

В этом варианте осуществления применяются следующие этапы.In this embodiment, the following steps apply.

Этап 0: Выбор значения первого параметра и значения второго параметра, в примере значение первого параметра и значение второго параметра получают согласно метрике "скорость-искажение".Step 0: Selecting the value of the first parameter and the value of the second parameter, in the example, the value of the first parameter and the value of the second parameter are obtained according to the speed-distortion metric.

Этап 1: Получение индексного значения согласно значению первого параметра, значению второго параметра и согласно таблице поиска так, что:Step 1: Obtaining the index value according to the value of the first parameter, the value of the second parameter and according to the lookup table so that:

(Parameter1, parameter2)=lookupTable (индекс)(Parameter1, parameter2)=lookupTable (index)

Этап 2: Кодирование индексного значения в битовый поток.Step 2: Encoding the index value into the bit stream.

Опционально в данном варианте осуществления используются следующие этапы:Optionally, this embodiment uses the following steps:

Этап 3: Для выборки в блоке кодирования вычисление расстояния выборки (sample_dist) согласно значению первого параметра и значению второго параметра.Step 3: For a sample in the encoding block, calculate the sampling distance (sample_dist) according to the value of the first parameter and the value of the second parameter.

Этап 4: Использование вычисленного sample_dist для вычисления весовых коэффициентов для объединения первого значения предсказания и второго значения предсказания, соответствующего упомянутой выборке. Весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2, имея ввиду значение веса, соответствующее первому значению предсказания, и значение веса, соответствующее второму значению предсказания.Step 4: Use the calculated sample_dist to calculate weights to combine the first prediction value and the second prediction value corresponding to said sample. The weights are denoted as sampleWeight1 and sampleWeight2, referring to the weight value corresponding to the first prediction value and the weight value corresponding to the second prediction value.

Этап 5: Вычисление объединенного значения предсказания для выборки в координате (x, y) согласно первому значению предсказания в координате (x, y), второму значению предсказания в координате (x, y), sampleWeight1 и sampleWeight2.Step 5: Calculate the combined prediction value for the sample at (x, y) coordinate according to the first prediction value at (x, y) coordinate, the second prediction value at (x, y) coordinate, sampleWeight1 and sampleWeight2.

Детали для каждого этапа на стороне кодера соответствуют приведенным выше примерам, описывающим сторону декодера.The details for each stage on the encoder side are consistent with the examples above describing the decoder side.

Согласно примеру, таблица поиска в варианте 1 осуществления является такой же, как таблица поиска в варианте 2 осуществления, так что кодер и декодер могут получать одинаковый результат.According to the example, the lookup table in Embodiment 1 is the same as the lookup table in Embodiment 2, so that the encoder and the decoder can obtain the same result.

В некоторых примерах значение расстояния может представлять расстояние по горизонтали или расстояние по вертикали, или комбинацию расстояния по вертикали и по горизонтали от упомянутой выборки до линии разграничения (линия разграничения используется для деления блока кодирования на два субблока). Упомянутая выборка представлена координатами (x, y) относительно верхней левой выборки блока кодирования. Пример координаты выборки и sample_dist показаны на Фиг. 11 и Фиг. 12.In some examples, the distance value may represent a horizontal distance or a vertical distance, or a combination of a vertical and a horizontal distance, from said sample to a demarcation line (the demarcation line is used to divide a coding block into two sub-blocks). Said sample is represented by coordinates (x, y) relative to the top left sample of the encoding block. An example sample coordinate and sample_dist are shown in FIG. 11 and Fig. 12.

В примере первый параметр представляет квантованное значение угла (angleIdx), а второй параметр представляет квантованное значение расстояния (distanceIdx). Эти два параметра описывают уравнение линии. В примере расстояние 1230 может быть получено согласно distanceIdx (второй параметр), а угол альфа (1210) может быть получен согласно angleIdx (первый параметр). Расстояние 1230 может быть расстоянием до центра блока кодирования, а угол может быть углом между линией разграничения и горизонтальной (или, что эквивалентно, вертикальной) линией, проходящей через центральную точку блока кодирования.In the example, the first parameter represents the quantized angle value (angleIdx) and the second parameter represents the quantized distance value (distanceIdx). These two parameters describe the equation of the line. In the example, distance 1230 can be obtained according to distanceIdx (second parameter), and angle alpha (1210) can be obtained according to angleIdx (first parameter). Distance 1230 may be the distance to the center of the coding block, and the angle may be the angle between the demarcation line and a horizontal (or, equivalently, vertical) line passing through the center point of the coding block.

В одном примере таблица поиска предопределена.In one example, the lookup table is predefined.

В примере может быть более одной предопределенной таблицы поиска. В примере одна таблица поиска используется для блока кодирования, если соотношение сторон (соотношение сторон=W>H ? W/H : H/W) блока равно 1. В другом примере одна или более таблиц поиска (которые не идентичны упомянутой одной таблице поиска) используются, если соотношение сторон не равно 1, где W и H являются шириной и высотой блока кодирования.The example may have more than one predefined lookup table. In an example, one lookup table is used for an encoding block if the aspect ratio (aspect ratio=W>H ? W/H : H/W) of the block is 1. In another example, one or more lookup tables (which are not identical to said one lookup table) are used if the aspect ratio is not 1, where W and H are the width and height of the encoding block.

В другом примере может быть более одной предопределенной таблицы поиска, одна таблица поиска для блоков кодирования, W*H блока превышает порог; и одна или более таблиц поиска (которые не идентичны упомянутой одной таблице поиска) используются для блока, если W*H блока меньше или равно порогу. Например, если размер текущего блока, который должен быть предсказан, меньше или равен 32×32 выборкам яркости, используется первая таблица поиска. Иначе, если размер текущего блока кодирования больше 32×32 выборок яркости, используется вторая таблица поиска. Эти две таблицы поиска могут содержать разные наборы параметров в отношении различных свойств блоков разных размеров. Например, вторая таблица поиска может содержать больше параметров, чем первая таблица поиска, чтобы обеспечить большую гибкость разделения для больших блоков.In another example, there may be more than one predefined lookup table, one lookup table for encoding blocks, the block's W*H exceeds a threshold; and one or more lookup tables (which are not identical to said one lookup table) are used for a block if the block's W*H is less than or equal to a threshold. For example, if the size of the current block to be predicted is less than or equal to 32x32 luminance samples, the first lookup table is used. Otherwise, if the size of the current encoding block is greater than 32x32 luminance samples, the second lookup table is used. These two lookup tables may contain different sets of parameters for different properties of different block sizes. For example, the second lookup table may contain more parameters than the first lookup table to provide greater partitioning flexibility for larger blocks.

В некоторых примерах, если для блока используется более 1 предопределенной таблицы поиска, функция f(W, H) может использоваться для определения одной таблицы поиска для этого блока, где W и H являются шириной и высотой блока кодирования.In some examples, if more than 1 predefined lookup table is used for a block, the function f(W, H) can be used to define one lookup table for that block, where W and H are the width and height of the encoding block.

В другом примере расстояние выборки sample_dist вычисляется по формуле:In another example, the sampling distance sample_dist is calculated using the formula:

sample_dist=((x<<1) + 1)*Dis[angleIdx1] + ((y<<1) + 1))*Dis[angleIdx2] - offset(distanceIdx). Гдеsample_dist=((x<<1) + 1)*Dis[angleIdx1] + ((y<<1) + 1))*Dis[angleIdx2] - offset(distanceIdx). Where

- Значение angleIdx1 и значение angleIdx2 берутся из битового потока или выводятся/вычисляются на основе другой информации, полученной из битового потока, angleIdx1 и angleIdx2 представляют квантованные тригонометрические параметры линии разграничения, первый имеет тип косинуса, а второй имеет тип синуса. В примере x и y являются -x и -y координатами выборки относительно левой верхней выборки блока кодирования.- The value of angleIdx1 and the value of angleIdx2 are taken from the bitstream or output/calculated based on other information obtained from the bitstream, angleIdx1 and angleIdx2 represent the quantized trigonometric parameters of the demarcation line, the first is of cosine type and the second is of sine type. In the example, x and y are the -x and -y sample coordinates relative to the top left sample of the encoding block.

- Dis[] является таблицей поиска. Dis[angleIdx1] описывает изменение расстояния выборки (sample_dist) относительно единичного увеличения (увеличения со значением 1) -x координаты упомянутой выборки. Dis[angleIdx2] описывает изменение расстояния выборки (sample_dist) относительно единичного увеличения (увеличения со значением 1) -y координаты упомянутой выборки. В одном примере angleIdx1 равен angleIdx, а angleIdx2 равен (displacementX+8)%32.- Dis[] is a lookup table. Dis[angleIdx1] describes the change in sample distance (sample_dist) relative to a unit increment (increase with a value of 1) -x coordinate of said sample. Dis[angleIdx2] describes the change in sample distance (sample_dist) relative to a unit increment (increase with a value of 1) -y coordinate of said sample. In one example, angleIdx1 is equal to angleIdx and angleIdx2 is equal to (displacementX+8)%32.

- offset (distanceIdx) является значением смещения, которое является функцией индексного значения (distanceIdx), причем индексное значение получается из битового потока или выводится/вычисляется на основе другой информации, получаемой из битового потока.- offset (distanceIdx) is an offset value that is a function of the index value (distanceIdx), where the index value is obtained from the bitstream or is inferred/computed based on other information obtained from the bitstream.

Построение таблицы поиска:Building a lookup table:

Согласно одному примеру диапазон значений для первого параметра может составлять от 0 до 4K-1, где K является целым числом, которое больше 0; диапазон значений для второго параметра может составлять от 0 до N. В этом случае строки упомянутой таблицы поиска могут включать в себя все комбинации первого параметра и второго параметра, за исключением комбинаций:According to one example, the range of values for the first parameter may be from 0 to 4K-1, where K is an integer that is greater than 0; the range of values for the second parameter may be from 0 to N. In this case, the rows of said lookup table may include all combinations of the first parameter and the second parameter, except for the combinations:

- Первый набор пар: значение второго параметра равно 0, а значение первого параметра равно одному из {0, K, 2K, 3K}.- First set of pairs: the value of the second parameter is 0, and the value of the first parameter is one of {0, K, 2K, 3K}.

- Второй набор пар: значение второго параметра=0, значение первого параметра равно одному из {K/2, 3K/2, 5K/2, 7K/2}.- Second set of pairs: the value of the second parameter=0, the value of the first parameter is one of {K/2, 3K/2, 5K/2, 7K/2}.

- Третий набор параметров: значение второго параметра=0, значение первого параметра больше или равно 2K.- Third set of parameters: second parameter value=0, first parameter value greater than or equal to 2K.

В примере значение K равно 8 или 4. Число K описывает то, сколько дискретных значений угла используются для разделения угла в 90 градусов. В примере, если число K равно 8, линия разграничения может иметь следующие значения углов: 0, 11,25, 22,5, 33,75, 45, … градусов. В другом примере, если значение K равно 4, тогда значениями углов являются: 0, 22,5, 45, 67,5, … градусов.In the example, the value of K is 8 or 4. The number K describes how many discrete angle values are used to subdivide a 90-degree angle. In the example, if the K number is 8, the demarcation line can have the following angle values: 0, 11.25, 22.5, 33.75, 45, ... degrees. In another example, if the value of K is 4, then the angle values are: 0, 22.5, 45, 67.5, ... degrees.

В примере значение N равно 4. В общем случае N может быть целым числом больше 0.In the example, the value of N is 4. In general, N can be an integer greater than 0.

В некоторых вариантах осуществления второй параметр описывает расстояние от линии разграничения до центра блока кодирования. Если значение второго параметра равно нулю, это означает, что линия разграничения проходит через центр блока кодирования. Если значение первого параметра равно K, это означает, что линия разграничения ориентирована либо по горизонтали, либо по вертикали (значение угла равно 0, 90, 270 или 360 градусов). Первый набор пар исключается из таблицы поиска, поскольку он создавал бы избыточный раздел, который также может быть достигнут путем двоичного разделения (то есть на два) блока кодирования с помощью двоичного дерева. Двоичное разбиение является механизмом, который разделяет блок кодирования на 2 блока кодирования равного размера по вертикальной или горизонтальной оси (а не на субблоки). Следовательно, согласно вариантам осуществления настоящего изобретения, Первый набор пар исключается из таблицы поиска.In some embodiments, the second parameter describes the distance from the demarcation line to the center of the coding block. If the value of the second parameter is zero, this means that the demarcation line passes through the center of the coding block. If the value of the first parameter is K, this means that the demarcation line is oriented either horizontally or vertically (the angle value is 0, 90, 270, or 360 degrees). The first set of pairs is excluded from the lookup table because it would create a redundant partition, which can also be achieved by binary splitting (i.e. into two) the encoding block using a binary tree. Binary partitioning is a mechanism that divides a coding block into 2 coding blocks of equal size along a vertical or horizontal axis (rather than into sub-blocks). Therefore, according to embodiments of the present invention, the First set of pairs is excluded from the lookup table.

Второй набор пар исключается из таблицы поиска, поскольку второй набор пар создавал бы получаемые делением области, которые могут быть достигнуты режимом треугольного предсказания. Поэтому исключение второго набора пар предотвратит избыточные субблочные разделы.The second set of pairs is excluded from the lookup table because the second set of pairs would create division regions that can be achieved by the triangular prediction mode. Therefore, excluding the second set of pairs will prevent redundant subblock partitions.

Третий набор пар исключается из таблицы, так как при угле, равном X или X+180, создавались бы одинаковые разделы, если второй параметр равняется нулю.The third set of pairs is excluded from the table because an angle equal to X or X+180 would create identical partitions if the second parameter were zero.

Согласно другому примеру, из таблицы поиска могут быть исключены следующие пары:According to another example, the following pairs could be excluded from the lookup table:

- Значение Второго параметра, равное N, и значение Первого параметра, равное одному из {K/2, 3K/2, 5K/2, 7K/2}.- The value of the Second parameter is equal to N, and the value of the First parameter is equal to one of {K/2, 3K/2, 5K/2, 7K/2}.

- Значение Второго параметра, равное N, и значение Первого параметра, равное одному из {K/2-1, 3K/2-1, 5K/2-1, 7K/2-1, K/2+1, 3K/2+1, 5K/2+1, 7K/2+1}.- The value of the Second parameter is equal to N, and the value of the First parameter is equal to one of {K/2-1, 3K/2-1, 5K/2-1, 7K/2-1, K/2+1, 3K/2 +1, 5K/2+1, 7K/2+1}.

В некоторых вариантах осуществления указанные выше пары могут быть исключены из таблицы поиска, поскольку они создают 2 субблока, один из которых может быть слишком маленьким. Если значение первого параметра равно K/2, 3k/2, …,, это означает, что угол линии разграничения составляет 45 градусов, 135 градусов, 225 градусов или 315 градусов. Если значение второго параметра равно N (которое имеет наивысшее значение), то один из субблоков будет содержать небольшую часть одного угла блока кодирования, которая будет слишком мала для операции деления.In some embodiments, the above pairs may be excluded from the lookup table because they create 2 sub-blocks, one of which may be too small. If the value of the first parameter is K/2, 3k/2, ...,, this means that the angle of the demarcation line is 45 degrees, 135 degrees, 225 degrees or 315 degrees. If the value of the second parameter is N (which has the highest value), then one of the subblocks will contain a small portion of one corner of the encoding block, which will be too small for the division operation.

Очередность пар в таблице поиска:The order of pairs in the lookup table is:

Согласно одному примеру пары (первый параметр, второй параметр) могут быть добавлены в конец таблицы поиска, если второй параметр равен N (где N имеет наивысшее возможное значение второго параметра). Другими словами, если есть P пар, в которых значение второго параметра равно N, то последние P записей в таблице поиска могут содержать упомянутую P-пару. Например, если N равно 4, а K равно 8, то существует P=4K*1=32 пары параметров, для которых второй параметр равен 4.According to one example, pairs (first parameter, second parameter) may be added to the end of the lookup table if the second parameter is equal to N (where N is the highest possible value of the second parameter). In other words, if there are P pairs in which the value of the second parameter is N, then the last P entries in the lookup table may contain said P-pair. For example, if N is 4 and K is 8, then there are P=4K*1=32 parameter pairs for which the second parameter is 4.

Согласно другому примеру пары параметров упорядочиваются в соответствии с эвристическим процессом. Этот эвристический процесс может быть определен из обучающих данных, которые, например, отражают появление или использование пар параметров в наборе обучающих данных. Таким образом, наиболее часто встречающиеся пары параметров помещаются в начало списка, а менее часто встречающиеся пары параметров помещаются в конец списка.In another example, parameter pairs are ordered according to a heuristic process. This heuristic process can be determined from training data that, for example, reflects the occurrence or use of parameter pairs in the training data set. Thus, the most frequently occurring parameter pairs are placed at the beginning of the list, and the less frequently occurring parameter pairs are placed at the end of the list.

Когда второй параметр равен N, один субблок меньше другого субблока. Выбор такого разделения менее вероятен (по сравнению со случаями, когда число выборок в каждом субблоке является более близким). Более того, индексное значение (таблицы поиска), которое имеет более высокое значение, обычно требует большего числа битов для того, чтобы кодироваться в битовый поток. Следовательно, это увеличивает эффективность сжатия за счет включения менее вероятных пар в конец таблицы, следовательно, начало таблицы может быть выделено более вероятным парам (например, парам, которые приводят в результате к более благоприятным разделениям на субблоки).When the second parameter is N, one subblock is smaller than the other subblock. The choice of such a split is less likely (compared to cases where the number of samples in each sub-block is closer). Moreover, an index value (lookup table) that has a higher value usually requires more bits in order to be encoded into the bitstream. Consequently, this increases compression efficiency by including less likely pairs at the end of the table, hence the beginning of the table can be allocated to more likely pairs (eg, pairs that result in more favorable subblock divisions).

Ниже приведены один пример указателя (geo_partition_idx) и таблица поиска. Индикатор имеет значение от 0 до 139, которое используется для выбора первого параметра и второго параметра с использованием таблицы поиска. Примером таблицы поиска является Таблица 4.Below is one example index (geo_partition_idx) and lookup table. The indicator has a value from 0 to 139, which is used to select the first parameter and the second parameter using a lookup table. An example of a lookup table is Table 4.

Таблица 4: таблица поиска, где geo_partition_idx является индексом в таблицу, а angleIdx является первым параметром, а distanceIdx является вторым параметром.Table 4: Lookup table, where geo_partition_idx is the index into the table and angleIdx is the first parameter and distanceIdx is the second parameter.

geo_partition_idxgeo_partition_idx angleIdxangleIdx distanceIdxdistanceIdx 00 00 11 11 00 22 22 00 33 33 00 44 44 11 00 55 11 11 66 11 22 77 11 33 88 11 44 99 22 00 1010 22 11 11eleven 22 22 1212 22 33 1313 22 44 1414 33 00 1515 33 11 1616 33 22 1717 33 33 1818 33 44 1919 44 11 2020 44 22 2121 44 33 2222 44 44 2323 55 00 2424 55 11 2525 55 22 2626 55 33 2727 55 44 2828 66 00 2929 66 11 30thirty 66 22 3131 66 33 3232 66 44 3333 77 00 3434 77 11 3535 77 22 3636 77 33 3737 77 44 3838 88 11 3939 88 22 4040 88 33 4141 88 44 4242 99 00 4343 99 11 4444 99 22 4545 99 33 4646 99 44 4747 1010 00 4848 1010 11 4949 1010 22 5050 1010 33 5151 1010 44 5252 11eleven 00 5353 11eleven 11 5454 11eleven 22 5555 11eleven 33 5656 11eleven 44 5757 1212 11 5858 1212 22 5959 1212 33 6060 1212 44 6161 1313 00 6262 1313 11 6363 1313 22 6464 1313 33 6565 1313 44 6666 1414 00 6767 1414 11 6868 1414 22 6969 1414 33 7070 1414 44 7171 1515 00 7272 1515 11 7373 1515 22 7474 1515 33 7575 1515 44 7676 1616 11 7777 1616 22 7878 1616 33 7979 1616 44 8080 1717 11 8181 1717 22 8282 1717 33 8383 1717 44 8484 1818 11 8585 1818 22 8686 1818 33 8787 1818 44 8888 1919 11 8989 1919 22 9090 1919 33 9191 1919 44 9292 2020 11 9393 2020 22 9494 2020 33 9595 2020 44 9696 2121 11 9797 2121 22 9898 2121 33 9999 2121 44 100100 2222 11 101101 2222 22 102102 2222 33 103103 2222 44 104104 2323 11 105105 2323 22 106106 2323 33 107107 2323 44 108108 2424 11 109109 2424 22 110110 2424 33 111111 2424 44 112112 2525 11 113113 2525 22 114114 2525 33 115115 2525 44 116116 2626 11 117117 2626 22 118118 2626 33 119119 2626 44 120120 2727 11 121121 2727 22 122122 2727 33 123123 2727 44 124124 2828 11 125125 2828 22 126126 2828 33 127127 2828 44 128128 2929 11 129129 2929 22 130130 2929 33 131131 2929 44 132132 30thirty 11 133133 30thirty 22 134134 30thirty 33 135135 30thirty 44 136136 3131 11 137137 3131 22 138138 3131 33 139139 3131 44

Должно быть понятно, что таблица 4 является лишь примером, чтобы показать возможные комбинации значений для первого параметра и второго параметра, в других реализациях для получения первого параметра и второго параметра в качестве таблицы поиска может использоваться часть таблицы 4.It should be understood that Table 4 is just an example to show possible combinations of values for the first parameter and the second parameter; other implementations may use a portion of Table 4 as a lookup table to obtain the first parameter and the second parameter.

Пример 1. Способ осуществления кодирования, реализуемый устройством декодирования, содержащий:Example 1. Encoding method implemented by a decoding device, containing:

получение битового потока;receiving bit stream;

получение значения указателя для текущего блока согласно битовому потоку;obtaining a pointer value for the current block according to the bit stream;

получение значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска;obtaining the value of the first parameter for the current block and the value of the second parameter for the current block according to the pointer value and the predefined lookup table;

получение значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра;obtaining a sample distance value for a sample that is in the current block according to the value of the first parameter and the value of the second parameter;

получение значения предсказания для выборки согласно значению расстояния выборки для выборки.obtaining a prediction value for the sample according to the sampling distance value for the sample.

Пример 2. Способ по примеру 1, в котором первый параметр представляет угол для разделения текущего блока.Example 2: Method as in Example 1, where the first parameter represents the angle to split the current block.

Пример 3. Способ по примеру 1 или 2, в котором второй параметр представляет расстояние для разделения текущего блока.Example 3: Method as in Example 1 or 2, in which the second parameter represents the distance to split the current block.

Пример 4. Способ по любому из примеров с 1 по 3, в котором предопределенная таблица поиска состоит из пар первого и второго параметров (в примере каждая запись в таблице представляет собой уникальную пару первого параметра и второго параметра),Example 4. The method as in any one of Examples 1 to 3, wherein the predefined lookup table consists of pairs of first and second parameters (in the example, each entry in the table is a unique pair of the first parameter and the second parameter),

следующая пара находится в предопределенной таблице поиска:the following pair is in the predefined lookup table:

первый параметр представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре не представляет расстояние в ноль выборок от центра текущего блока.the first parameter represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in that pair does not represent a distance of zero samples from the center of the current block.

Пример 5. Способ по любому из примеров с 1 по 4, в котором предопределенная таблица поиска состоит из пар первого и второго параметров (в примере каждая запись в таблице представляет собой уникальную пару первого параметра и второго параметра),Example 5. The method as in any one of Examples 1 to 4, wherein the predefined lookup table consists of pairs of first and second parameters (in the example, each entry in the table is a unique pair of the first parameter and the second parameter),

следующая пара находится в предопределенной таблице поиска;the next pair is in a predefined lookup table;

первый параметр представляет угол, не соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.the first parameter represents an angle other than one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block.

Пример 6. Способ по любому из примеров с 1 по 5, в котором предопределенная таблица поиска состоит из пар первого и второго параметров (в примере каждая запись в таблице представляет собой уникальную пару первого параметра и второго параметра),Example 6. The method as in any one of Examples 1 to 5, wherein the predefined lookup table consists of pairs of first and second parameters (in the example, each entry in the table is a unique pair of the first parameter and the second parameter),

следующая пара не содержится в предопределенной таблице поиска;the next pair is not contained in the predefined lookup table;

первый параметр представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.the first parameter represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in this pair represents the distance of zero samples from the center of the current block.

Пример 7. Декодер (30), содержащий схему обработки для выполнения способа по любому из примеров с 1 по 6.Example 7 A decoder (30) containing processing circuitry for performing the method of any one of Examples 1 to 6.

Пример 8. Компьютерный программный продукт, содержащий программный код для выполнения способа по любому из примеров с 1 по 6.Example 8. A computer program product containing program code for executing the method of any of Examples 1 to 6.

Пример 9. Декодер, содержащий:Example 9. Decoder containing:

один или более процессоров; иone or more processors; And

долговременный считываемый компьютером носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из примеров с 1 по 6. a non-transitory computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures a decoder to perform the method according to any of Examples 1 to 6.

Ниже приводится пояснение по применениям способа кодирования, а также способа декодирования, показанных в вышеописанных вариантах осуществления, а также использующей их системы.Below is an explanation of the applications of the encoding method as well as the decoding method shown in the above-described embodiments, as well as the system using them.

ФИГ. 13 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.FIG. 13 is a block diagram showing a content delivery system 3100 for implementing a content distribution service. This content delivery system 3100 includes a capture device 3102, a terminal device 3106, and optionally includes a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication line 3104. The communication link may include a communication channel 13 described above. Communication link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G/4G/5G), USB, or any combination thereof, or the like.

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по отдельности.The capture device 3102 generates data and can encode the data using the encoding method shown in the above embodiments. Alternatively, capture device 3102 may distribute the data to a streaming server (not shown in the Figures), and the server encodes the data and transmits the encoded data to terminal device 3106. Capture device 3102 includes, but is not limited to, a camera, smartphone, or tablet. , computer or laptop, video conferencing system, PDA, vehicle-mounted device, or a combination of any of these, or the like. For example, capture device 3102 may include source device 12 described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform video encoding processing. When the data includes audio (ie, speech), an audio encoder included in the capture device 3102 may actually perform audio encoding processing. For some practical scenarios, capture device 3102 distributes encoded video and audio data by multiplexing them together. For other practical scenarios, such as in a video conferencing system, encoded audio data and encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and the encoded video data to the terminal device 3106 separately.

В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR) / цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.In the content delivery system 3100, the terminal device 310 receives and reproduces encoded data. Terminal device 3106 may be a device capable of receiving and retrieving data, such as a smartphone or tablet 3108, computer or laptop 3110, network video recorder (NVR)/digital video recorder (DVR) 3112, television 3114, set-top box (STB) 3116, video conferencing system 3118 , a video surveillance system 3120, a personal digital assistant (PDA) 3122, a vehicle-mounted device 3124, or a combination thereof, or the like, capable of decoding the above encoded data. For example, terminal device 3106 may include receiver device 14 described above. When the encoded data includes video, the video decoder 30 included in the terminal device is given priority to perform video decoding. When the encoded data includes audio, an audio decoder included in the terminal device is given priority to perform audio decoding processing.

Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.For a terminal device with its own display, such as a 3108 smartphone or tablet, 3110 computer or laptop, 3112 Network Video Recorder (NVR)/Digital Video Recorder (DVR), 3114 TV, 3122 Personal Digital Assistant (PDA), or 3124 vehicle-mounted device, terminal the device can transmit decoded data to its display. For a non-display terminal device, such as the STB 3116, video conferencing system 3118, or video surveillance system 3120, it communicates with an external display 3126 to receive and display the decoded data.

Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображений или устройство декодирования изображений, как показано в вышеупомянутых вариантах осуществления.When each device in this system performs encoding or decoding, an image encoding device or an image decoding device may be used as shown in the above embodiments.

ФИГ. 14 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.FIG. 14 is a diagram showing the structure of an exemplary terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, a protocol processing unit 3202 analyzes the transmission protocol of the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), Hypertext Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real Time Transport Protocol (RTP), Exchange Protocol real-time messaging (RTMP) or any combination thereof, or the like.

После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to a demultiplexing block 3204. A demultiplexer 3204 may separate the multiplexed data into encoded audio data and encoded video data. As described above, in other practical scenarios, such as in a video conferencing system, encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is transmitted to the video decoder 3206 and audio decoder 3208 without using the demultiplexer 3204.

Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. 14) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на ФИГ. 14) перед его подачей в блок 3212 синхронизации.Through demultiplexing processing, an elementary video stream (ES), audio ES, and optionally subtitles are generated. The video decoder 3206, which includes the video decoder 30 described in the above embodiments, decodes the video ES using the decoding method as shown in the above embodiments to generate a video frame and supplies this data to the synchronization unit 3212. Audio decoder 3208 decodes the audio ES to generate an audio frame and supplies this data to synchronization block 3212. Alternatively, the video frame may be stored in a buffer (not shown in FIG. 14) before being supplied to synchronization block 3212. Likewise, an audio frame may be stored in a buffer (not shown in FIG. 14) before being supplied to synchronization block 3212.

Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.The synchronization unit 3212 synchronizes the video frame and the audio frame and supplies the video/audio to the video/audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. Information may be encoded in syntax using timestamps relating to the presentation of the encoded audio and video data, as well as timestamps relating to the delivery of the data stream itself.

Если субтитр включен в поток, декодер 3210 субтитров декодирует субтитр и синхронизирует его с видеокадром и аудиокадром и передает видео/аудио/субтитр на дисплей 3216 видео/аудио/субтитров.If a subtitle is included in the stream, the subtitle decoder 3210 decodes the subtitle and synchronizes it with the video frame and audio frame and transmits the video/audio/subtitle to the video/audio/subtitle display 3216.

Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображений, либо устройство декодирования изображений из вышеупомянутых вариантов осуществления может быть включено в другую систему, например, автомобильную систему.The present invention is not limited to the above system, and either the image encoding device or the image decoding device from the above embodiments can be included in another system, such as an automobile system.

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

Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are defined more precisely, and additional operations such as exponentiation and real-valued division are also defined. Numbering and counting conventions specify starting at 0, for example, "first" is equivalent to 0, "second" is equivalent to 1, etc.

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

Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:

++ СложениеAddition Вычитание (как оператор с двумя аргументами) или отрицание (как унарный префиксный оператор)Subtraction (as a two-argument operator) or negation (as a unary prefix operator) ** Умножение, в том числе матричное умножениеMultiplication, including matrix multiplication xy x y Возведение в степень. Определяет x в степени y. В других контекстах такое обозначение используется в качестве надстрочного индекса, которое не следует интерпретировать в качестве возведения в степень.Exponentiation. Defines x to the power of y. In other contexts, this notation is used as a superscript that should not be interpreted as exponentiation. // Целочисленное деление с усечением результата в сторону нуля. Например, 7/4 и -7 / -4 усекаются до 1, а -7/4 и 7 / -4 усекаются до -1.Integer division with the result truncated towards zero. For example, 7/4 and -7/-4 are truncated to 1, and -7/4 and 7/-4 are truncated to -1. ÷÷ Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление.Used to indicate division in mathematical equations where truncation or rounding is not intended. Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление.Used to indicate division in mathematical equations where truncation or rounding is not intended. Суммирование f( i ), где i принимает все целые значения от x до y включительно.Summation f( i), where i takes all integer values from x to y inclusive. x % yx % y Операция по модулю. Остаток от деления x на y, определена только для целых чисел x и y, где x >= 0 и y > 0.Modulo operation. The remainder of x divided by y is defined only for integers x and y, where x >= 0 and y > 0.

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

Следующие логические операторы определены следующим образом:The following logical operators are defined as follows:

x && y - Булево логическое «и» между x и yx && y - Boolean logical "and" between x and y

x | | y - Булево логическое «или» между x и yx | | y - Boolean logical "or" between x and y

! - Булево логическое «не»! - Boolean logical "not"

x ? y : z - Если значением x является ИСТИНА или оно не равно 0, принимается значение y; иначе, принимается значение z.x? y : z - If the value of x is TRUE or is not 0, the value of y is accepted; otherwise, the z value is assumed.

Реляционные операторыRelational Operators

Следующие реляционные операторы определены следующим образом:The following relational operators are defined as follows:

> - Больше> - More

>= - Больше или равно>= - Greater than or equal to

< - Меньше< - Less

<= - Меньше или равно<= - Less than or equal to

= = - Равно= = - Equal

!= - Не равно!= - Not equal

Когда реляционный оператор применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.When a relational operator is applied to a syntactic element or variable that is assigned the value "na" (not applicable), the value "na" is treated as a separate value for the syntactic element or variable. The value "na" is not considered equal to any other value.

Побитовые операторыBitwise operators

Следующие побитовые операторы определены следующим образом:The following bitwise operators are defined as follows:

& Побитовое «и». При работе с целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.& Bitwise "and". When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.

| Побитовое «или». При работе с целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.| Bitwise "or". When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.

^ Побитовое «исключающее ИЛИ». При работе с целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.^ Bitwise exclusive OR. When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.

x>>y Арифметический сдвиг вправо целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.x>>y Arithmetic right shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the most significant bits (MSB) by a right shift have a value equal to MSB x before the shift operation.

x<<y Арифметический сдвиг влево целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.x<<y Arithmetic left shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the least significant bits (LSB) by left shifting have a value of 0.

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

Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:

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

++ Приращение, т.е. x++ эквивалентно x=x+1; при использовании в индексе массива принимает значение переменной до операции приращения.++ Increment, i.e. x++ is equivalent to x = x+ 1; when used in an array index, takes the value of the variable before the increment operation.

−− Уменьшение, т.е. x−− эквивалентно x=x-1; при использовании в индексе массива принимает значение переменной до операции уменьшения.−− Decrease, i.e. x−− is equivalent to x = x- 1; when used in an array index, takes the value of the variable before the decrement operation.

+= Приращение на указанную величину, т.е. x += 3 эквивалентно x=x+3, а x+=(−3) эквивалентно x=x+(−3).+= Increment by the specified amount, i.e. x += 3 is equivalent to x=x+3, and x+=(−3) is equivalent to x=x+(−3).

−= Уменьшение на указанную величину, т.е. x −= 3 эквивалентно x=x−3, а x−=(−3) эквивалентно x=x−(−3).−= Decrease by the specified amount, i.e. x −= 3 is equivalent to x=x−3, and x−=(−3) is equivalent to x=x−(−3).

Обозначение диапазонаRange designation

Следующее обозначение используется для указания диапазона значений:The following notation is used to indicate a range of values:

x=y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y.x=y..z x takes integer values from y to z, inclusive, where x, y and z are integers and z is greater than y.

Математические функцииMathematical functions

Определены следующие математические функции:The following mathematical functions are defined:

Abs( x ) = Abs( x ) =

Asin( x ) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан.Asin( x ) is a trigonometric arcsine function operating on an argument x that ranges from -1.0 to 1.0 inclusive, with an output value ranging from -π÷2 to π÷2 inclusive, in units of radians.

Atan( x ) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от −π÷2 до π÷2 включительно в единицах радиан.Atan( x ) is a trigonometric arctangent function operating on an argument x, with an output value ranging from −π÷2 to π÷2 inclusive, in units of radians.

Atan2( y, x ) = Atan2( y, x ) =

Ceil( x ) наименьшее целое число, большее или равное x.Ceil( x ) is the smallest integer greater than or equal to x.

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

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

Clip3( x, y, z ) = Clip3( x, y, z ) =

Cos( x ) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.Cos( x ) is a trigonometric cosine function that operates on x in units of radians.

Floor( x ) наибольшее целое число, меньшее или равное x.Floor( x ) is the largest integer less than or equal to x.

GetCurrMsb( a, b, c, d ) = GetCurrMsb( a, b, c, d ) =

Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,718 281 828 ...).Ln( x ) natural logarithm of x (logarithm to base e, where e is the base constant of the natural logarithm 2.718 281 828 ...).

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

Log10( x ) логарифм x по основанию 10. Log10( x ) is the logarithm of x to base 10.

Min( x, y ) = Min( x, y ) =

Max( x, y ) = Max( x, y ) =

Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 ) Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )

Sign( x ) = Sign( x ) =

Sin( x ) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан. Sin( x ) is a trigonometric sine function that operates on x in units of radians.

Sqrt( x ) = Sqrt( x ) =

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

Tan( x ) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.Tan( x ) is a trigonometric tangent function that operates on x in units of radians.

Порядок приоритетности операцийOrder of priority of operations

Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:When the order of precedence in an expression is not explicitly specified using parentheses, the following rules apply:

- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.- Higher priority operations are evaluated before any lower priority operation.

- Операции с одинаковым приоритетом оцениваются последовательно слева направо.- Operations with the same priority are evaluated sequentially from left to right.

В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.The table below lists the priority of operations from highest to lowest; a higher position in the table indicates higher priority.

Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.For those operators that are also used in the C programming language, the order of precedence used in this description is the same as in the C programming language.

Таблица: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы)Table: Operation priority from highest (at the top of the table) to lowest (at the bottom of the table)

операции (с операндами x, y и z)operations (with operands x, y and z) «x++», «x− −»"x++", "x− −" «!x», «−x» (как унарный префиксный оператор)"!x", "−x" (as unary prefix operator) xy x y «x * y», «x/y», «x ÷ y», «» «x % y»"x * y", "x/y", "x ÷ y", " "x%y" «x+y», «x−y» (как оператор с двумя аргументами), «»"x+y", "x−y" (as an operator with two arguments), " » «x << y», «x >> y»"x << y", "x >> y" «x < y», «x <= y», «x > y», «x >= y»"x < y", "x <= y", "x > y", "x >= y" «x = = y», «x != y»"x == y", "x != y" «x & y»"x&y" «x | y»"x | y" «x && y»"x && y" «x | | y»"x | | y" «x ? y : z»"x? y : z" «x..y»"x..y" «x=y», «x += y», «x −= y»"x=y", "x += y", "x −= y"

Текстовое описание логических операцийText description of logical operations

В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:

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

определение 0 definition 0

else if( условие 1 )else if( condition 1 )

определение 1 definition 1

......

else /* информативный комментарий по оставшемуся условию */else /* informative comment on the remaining condition */

определение ndefinition of n

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

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

- If условие 0, определение 0- If condition 0, definition 0

- Иначе, If условие 1, определение 1- Otherwise, If condition 1, definition 1

- ...- ...

- Иначе (информативный комментарий по оставшемуся условию), определение n- Otherwise (informative comment on the remaining condition), definition n

Каждое определение «If ... Иначе, If ... Иначе, ...» в тексте вводится словами «... как указано ниже» или «...применяется следующее», за которым сразу следует «If ...». Последним условием «If ... Иначе, If ... Иначе, ...» всегда является «Иначе, ...». Чередование определений «If ... Иначе, If ... Иначе, ...» могут быть идентифицированы путем сопоставления «... как указано ниже» или «... применяется следующее» с завершающим «Иначе, ...».Each definition of "If...Else, If...Else,..." in the text is introduced by the words "...as below" or "...the following applies" followed immediately by "If..." . The last condition of "If... Else, If... Else, ..." is always "Else, ...". Alternating definitions "If...Else, If...Else,..." can be identified by matching "...as below" or "...the following applies" with the final "Else,...".

В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:

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

определение 0 definition 0

else if( условие 1a | | условие 1b )else if( condition 1a | | condition 1b )

определение 1 definition 1

...
else
определение n
...
else
definition of n

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

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

- Если все из следующих условий истинны, определение 0:- If all of the following conditions are true, definition 0:

-- условие 0a-- condition 0a

-- условие 0b-- condition 0b

- Иначе, если истинными являются одно или более из следующих условий, определение 1:- Else, if one or more of the following conditions are true, Definition 1:

-- условие 1a-- condition 1a

-- условие 1b-- condition 1b

- ...- ...

- Иначе, определение n- Otherwise, the definition of n

В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:

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

определение 0 definition 0

if( условие 1 )if( condition 1 )

определение 1 definition 1

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

Когда условие 0, определение 0When condition is 0, definition is 0

Когда условие 1, определение 1.When condition is 1, definition is 1.

Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, т.е. обработки или кодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при видеокодировании. В общем, только блоки 244 интер-предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование для обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, интра-предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования 270 и энтропийного декодирования 304.Although embodiments of the present invention have been primarily described in terms of video encoding, it should be noted that embodiments of encoding system 10, encoder 20, and decoder 30 (and thus system 10), as well as other embodiments described herein, may also be configured to process or encode a still image, i.e. processing or encoding a single image independently of any preceding or subsequent image, as in video encoding. In general, only the inter-prediction (encoder) and 344 (decoder) blocks 244 may not be available if the encoding for image processing is limited to a single image 17. All other functionality (also referred to as tools or techniques) of video encoder 20 and video decoder 30 may equally be used for still image processing such as residual computation 204/304, transform 206, quantization 208, inverse quantization 210/310, (inverse) transform 212/312, division 262/362, intra-prediction 254/354 and/ or loop filtering 220, 320 and entropy encoding 270 and entropy decoding 304.

Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций, или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами, или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.Embodiments of, for example, encoder 20 and decoder 30, as well as the functions described herein, for example, with respect to encoder 20 and decoder 30 may be implemented by hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted through a communication medium in the form of one or more instructions or code and executed by a hardware processing unit. Computer-readable media may include computer-readable media that corresponds to a tangible medium, such as a storage medium, or a communication medium, including any medium that enables transmission of a computer program from one location to another, such as according to a communications protocol. Thus, computer readable media may typically correspond to (1) tangible computer readable media that is durable, or (2) a communication medium such as a signal or carrier wave. Storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementing the techniques described in this disclosure. The computer program product may include computer-readable media.

В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.By way of example, and not limitation, such computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media that can used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Additionally, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave communications, then coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave communications are included in the definition of media. However, it should be understood that computer readable and storage media do not include connections, carrier waves, signals, or other short-lived media, but are instead directed to long-term, tangible storage media. The disc and disc used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs are typically reproduce data magnetically, while discs (discs) reproduce data optically using lasers. Combinations of the above should also be included in the scope of computer readable media.

Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах, или логических элементах.The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein can refer to any of the above structure or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within specialized hardware and/or software modules configured for encoding and decoding or included in a bundled codec. In addition, the techniques may be fully implemented in one or more circuits, or logic elements.

Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.The techniques of this disclosure may be implemented in a wide variety of devices or hardware components, including a wireless telephone, an integrated circuit (IC), or a set of ICs (eg, a chipset). This disclosure describes various components, modules, or blocks to highlight functional aspects of devices configured to implement the disclosed technologies, but not necessarily required to be implemented by different hardware units. Rather, as described above, the various blocks may be combined into a codec hardware block or provided by a collection of interacting hardware blocks, including one or more processors as described above, together with suitable software and/or firmware.

Claims (41)

1. Способ декодирования, реализуемый устройством декодирования, содержащий:1. A decoding method implemented by a decoding device, containing: получение битового потока; иreceiving bit stream; And выполнение декодирования посредством:performing decoding by: получения значения указателя для текущего блока согласно битовому потоку;obtaining a pointer value for the current block according to the bit stream; получения значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска;obtaining the value of the first parameter for the current block and the value of the second parameter for the current block according to the pointer value and the predefined lookup table; получения значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра; иobtaining a sample distance value for a sample that is in the current block according to the value of the first parameter and the value of the second parameter; And получения значения предсказания для выборки согласно значению расстояния выборки для выборки,obtaining the prediction value for the sample according to the sampling distance value for the sample, при этом предопределенной таблицей поиска являетсяin this case the predefined lookup table is merge_gpm_partition_idxmerge_gpm_partition_idx 00 11 22 33 44 55 66 77 88 99 1010 11eleven 1212 1313 1414 1515 angleIdxangleIdx 00 00 22 22 22 22 33 33 33 33 44 44 44 44 55 55 distanceIdxdistanceIdx 11 33 00 11 22 33 00 11 22 33 00 11 22 33 00 11 merge_gpm_partition_idxmerge_gpm_partition_idx 1616 1717 1818 1919 2020 2121 2222 2323 2424 2525 2626 2727 2828 2929 30thirty 3131 angleIdxangleIdx 55 55 88 88 11eleven 11eleven 11eleven 11eleven 1212 1212 1212 1212 1313 1313 1313 1313 distanceIdxdistanceIdx 22 33 11 33 00 11 22 33 00 11 22 33 00 11 22 33 merge_gpm_partition_idxmerge_gpm_partition_idx 3232 3333 3434 3535 3636 3737 3838 3939 4040 4141 4242 4343 4444 4545 4646 4747 angleIdxangleIdx 1414 1414 1414 1414 1616 1616 1818 1818 1818 1919 1919 1919 2020 2020 2020 2121 distanceIdxdistanceIdx 00 11 22 33 11 33 11 22 33 11 22 33 11 22 33 11 merge_gpm_partition_idxmerge_gpm_partition_idx 4848 4949 5050 5151 5252 5353 5454 5555 5656 5757 5858 5959 6060 6161 6262 6363 angleIdxangleIdx 2121 2121 2424 2424 2727 2727 2727 2828 2828 2828 2929 2929 2929 30thirty 30thirty 30thirty distanceIdxdistanceIdx 22 33 11 33 11 22 33 11 22 33 11 22 33 11 22 33
при этом указателем является merge_gpm_partition_idx, при этом первым параметром является angleIdx, который представляет угол для разделения текущего блока, при этом вторым параметром является distanceIdx, который представляет расстояние для разделения текущего блока.where the pointer is merge_gpm_partition_idx, where the first parameter is angleIdx, which represents the angle to split the current block, where the second parameter is distanceIdx, which represents the distance to split the current block. 2. Способ по п. 1, в котором второй параметр специфицирует индекс расстояния геометрического раздела, или второй параметр описывает расстояние от линии разграничения до центра текущего блока.2. The method according to claim 1, in which the second parameter specifies the distance index of the geometric section, or the second parameter describes the distance from the demarcation line to the center of the current block. 3. Способ по любому из пп. 1, 2, в котором получение значения предсказания для выборки согласно значению расстояния выборки для выборки содержит:3. Method according to any one of paragraphs. 1, 2, wherein obtaining a prediction value for a sample according to a sampling distance value for a sample comprises: вычисление двух весовых коэффициентов согласно значению расстояния выборки; иcalculating two weight coefficients according to the sampling distance value; And получение значения предсказания для выборки согласно первому значению предсказания, второму значению предсказания и упомянутым двум весовым коэффициентам.obtaining a prediction value for the sample according to the first prediction value, the second prediction value, and the two weights. 4. Способ по любому из пп. 1-3, в котором значение расстояния выборки представляет расстояние по горизонтали или расстояние по вертикали, или комбинацию расстояний по вертикали и по горизонтали от упомянутой выборки до линии разграничения, при этом линия разграничения используется для деления блока кодирования на два субблока.4. Method according to any one of paragraphs. 1-3, wherein the sample distance value represents a horizontal distance or a vertical distance, or a combination of vertical and horizontal distances from said sample to a demarcation line, wherein the demarcation line is used to divide a coding block into two sub-blocks. 5. Способ по любому из пп. 1-4, в котором предопределенная таблица поиска содержит пары первого и второго параметров,5. Method according to any one of paragraphs. 1-4, in which the predefined lookup table contains pairs of first and second parameters, при этом когда первый параметр в паре представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, соответствующий второй параметр в этой паре не представляет расстояние в ноль выборок от центра текущего блока.provided that when the first parameter in a pair represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270 or 315 degrees, the corresponding second parameter in that pair does not represent a distance of zero samples from the center of the current block. 6. Способ по любому из пп.1-5, в котором предопределенная таблица поиска содержит пары первых и вторых параметров,6. The method according to any one of claims 1 to 5, wherein the predefined lookup table contains pairs of first and second parameters, при этом первый параметр в паре представляет угол, не соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.wherein the first parameter in the pair represents an angle other than one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block. 7. Способ по любому из пп.1-6, в котором предопределенная таблица поиска содержит пары первого и второго параметров,7. The method according to any one of claims 1 to 6, wherein the predefined lookup table contains pairs of first and second parameters, при этом первый параметр в паре представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.wherein the first parameter in the pair represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block. 8. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-7.8. A decoder (30) comprising a processing circuit for performing the method according to any one of claims. 1-7. 9. Декодер, содержащий:9. Decoder containing: один или более процессоров; иone or more processors; And долговременный считываемый компьютером носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп.1-7. a non-transitory computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures a decoder to perform the method of any one of claims 1 to 7. 10. Способ кодирования, реализуемый устройством кодирования, содержащий:10. An encoding method implemented by an encoding device, containing: выбор значения первого параметра и значения второго параметра;selecting the value of the first parameter and the value of the second parameter; получение индексного значения согласно значению первого параметра, значению второго параметра и таблице поиска; иobtaining an index value according to the first parameter value, the second parameter value and the lookup table; And кодирование индексного значения в битовый поток,encoding the index value into a bit stream, при этом предопределенной таблицей поиска являетсяin this case the predefined lookup table is merge_gpm_partition_idxmerge_gpm_partition_idx 00 11 22 33 44 55 66 77 88 99 1010 11eleven 1212 1313 1414 1515 angleIdxangleIdx 00 00 22 22 22 22 33 33 33 33 44 44 44 44 55 55 distanceIdxdistanceIdx 11 33 00 11 22 33 00 11 22 33 00 11 22 33 00 11 merge_gpm_partition_idxmerge_gpm_partition_idx 1616 1717 1818 1919 2020 2121 2222 2323 2424 2525 2626 2727 2828 2929 30thirty 3131 angleIdxangleIdx 55 55 88 88 11eleven 11eleven 11eleven 11eleven 1212 1212 1212 1212 1313 1313 1313 1313 distanceIdxdistanceIdx 22 33 11 33 00 11 22 33 00 11 22 33 00 11 22 33 merge_gpm_partition_idxmerge_gpm_partition_idx 3232 3333 3434 3535 3636 3737 3838 3939 4040 4141 4242 4343 4444 4545 4646 4747 angleIdxangleIdx 1414 1414 1414 1414 1616 1616 1818 1818 1818 1919 1919 1919 2020 2020 2020 2121 distanceIdxdistanceIdx 00 11 22 33 11 33 11 22 33 11 22 33 11 22 33 11 merge_gpm_partition_idxmerge_gpm_partition_idx 4848 4949 5050 5151 5252 5353 5454 5555 5656 5757 5858 5959 6060 6161 6262 6363 angleIdxangleIdx 2121 2121 2424 2424 2727 2727 2727 2828 2828 2828 2929 2929 2929 30thirty 30thirty 30thirty distanceIdxdistanceIdx 22 33 11 33 11 22 33 11 22 33 11 22 33 11 22 33
при этом индексным значением является merge_gpm_partition_idx, при этом первым параметром является angleIdx, который представляет угол для разделения текущего блока, при этом вторым параметром является distanceIdx, который представляет расстояние для разделения текущего блока.where the index value is merge_gpm_partition_idx, where the first parameter is angleIdx, which represents the angle to partition the current block, where the second parameter is distanceIdx, which represents the distance to partition the current block. 11. Способ по п. 10, при этом способ дополнительно содержит:11. The method according to claim 10, wherein the method additionally contains: вычисление расстояния выборки для выборки в блоке кодирования;calculating a sampling distance for a sample in the encoding block; вычисление весовых коэффициентов, соответствующих выборке, согласно вычисленному расстоянию выборки; иcalculating weights corresponding to the sample according to the calculated sampling distance; And вычисление объединенного значения предсказания для выборки согласно первому значению предсказания, второму значению предсказания и упомянутым весовым коэффициентам.calculating a combined prediction value for the sample according to the first prediction value, the second prediction value, and said weights. 12. Кодер, содержащий:12. Encoder containing: один или более процессоров; иone or more processors; And долговременный считываемый компьютером носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует кодер для выполнения способа по п. 10 или 11.a non-transitory computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures the encoder to perform the method of claim 10 or 11. 13. Считываемый компьютером носитель, содержащий исполняемые процессором инструкции для выполнения способа по любому из пп.1-7.13. A computer-readable medium containing processor-executable instructions for performing the method of any one of claims 1 to 7. 14. Считываемый компьютером носитель, содержащий исполняемые процессором инструкции для выполнения способа по любому из пп.10-11.14. A computer-readable medium containing processor-executable instructions for performing the method of any one of claims 10-11.
RU2022101005A 2019-06-21 2020-06-19 Encoder, decoder and related methods for sub-block partition mode RU2811983C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EPPCT/EP2019/066432 2019-06-21

Publications (2)

Publication Number Publication Date
RU2022101005A RU2022101005A (en) 2023-07-21
RU2811983C2 true RU2811983C2 (en) 2024-01-22

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110200111A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Encoding motion vectors for geometric motion partitioning
US20120147961A1 (en) * 2010-12-09 2012-06-14 Qualcomm Incorporated Use of motion vectors in evaluating geometric partitioning modes
RU2571509C2 (en) * 2011-03-08 2015-12-20 Квэлкомм Инкорпорейтед Encoding transform coefficients for video coding
WO2018149995A1 (en) * 2017-02-16 2018-08-23 Telefonaktiebolaget Lm Ericsson (Publ) Filter apparatus and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110200111A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Encoding motion vectors for geometric motion partitioning
US20120147961A1 (en) * 2010-12-09 2012-06-14 Qualcomm Incorporated Use of motion vectors in evaluating geometric partitioning modes
RU2571509C2 (en) * 2011-03-08 2015-12-20 Квэлкомм Инкорпорейтед Encoding transform coefficients for video coding
WO2018149995A1 (en) * 2017-02-16 2018-08-23 Telefonaktiebolaget Lm Ericsson (Publ) Filter apparatus and methods

Similar Documents

Publication Publication Date Title
CN113613013B (en) Video decoding device, decoding method implemented by decoding device and decoder
US11909959B2 (en) Encoder, a decoder and corresponding methods for merge mode
KR20210141712A (en) Encoder, Decoder and Corresponding Methods Using IBC Merge List
US11876997B2 (en) Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction
US20220021883A1 (en) Chroma sample weight derivation for geometric partition mode
JP2022547293A (en) High-level signaling method and apparatus for weighted prediction
JP7384998B2 (en) Encoders, decoders, and corresponding methods for chroma intramode derivation
JP7532597B2 (en) Calculating sample distances for geometric partitioning modes
RU2811983C2 (en) Encoder, decoder and related methods for sub-block partition mode
RU2814812C2 (en) Deriving chroma sample weight for geometric separation mode
RU2822450C1 (en) Encoding process for geometric separation mode