RU2815734C1 - Method and device for motion information storage - Google Patents

Method and device for motion information storage Download PDF

Info

Publication number
RU2815734C1
RU2815734C1 RU2023107973A RU2023107973A RU2815734C1 RU 2815734 C1 RU2815734 C1 RU 2815734C1 RU 2023107973 A RU2023107973 A RU 2023107973A RU 2023107973 A RU2023107973 A RU 2023107973A RU 2815734 C1 RU2815734 C1 RU 2815734C1
Authority
RU
Russia
Prior art keywords
motion information
distance
parameter
block
sample
Prior art date
Application number
RU2023107973A
Other languages
Russian (ru)
Inventor
Хань ГАО
Семих ЭСЕНЛИК
Елена Александровна АЛШИНА
Бяо ВАН
Ананд Мехер КОТРА
Original Assignee
Хуавэй Текнолоджиз Ко., Лтд.
Filing date
Publication date
Application filed by Хуавэй Текнолоджиз Ко., Лтд. filed Critical Хуавэй Текнолоджиз Ко., Лтд.
Application granted granted Critical
Publication of RU2815734C1 publication Critical patent/RU2815734C1/en

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: bitstream is received that contains the encoded data of the current block and a pointer. The current block is divided by a common boundary into the first subblock and the second subblock. The first sub-block corresponds to the first prediction value, and the second sub-block corresponds to the second prediction value. The common boundary represents the dividing line of the geometric partitioning mode. The pointer is extracted from the bit stream by analysis. An angular parameter and a distance parameter are obtained based on the pointer, where the angular parameter specifies the angle index of the geometric partitioning mode, and the distance parameter specifies the distance index of the geometric partitioning mode. The distance between the set of discrete samples in the current block and the common boundary is determined based on the angular parameter and the distance parameter by checking a preset lookup table. The first weighting coefficient is obtained according to the distance. The second weight coefficient is obtained according to the first weight coefficient. The concatenated prediction value for the current block is obtained by using the first prediction value, the second prediction value, the first weight coefficient, and the second weight coefficient.
EFFECT: improved efficiency of video encoding.
39 cl, 24 dwg, 5 tbl

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF TECHNOLOGY TO WHICH THE INVENTION RELATES

Варианты осуществления настоящей заявки в целом относятся к области видеокодирования и, более конкретно, к интер-предсказанию.Embodiments of the present application generally relate to the field of video coding and, more specifically, to inter-prediction.

УРОВЕНЬ ТЕХНИКИ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, 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 the recipient's video decompressor, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques are desired that improve the compression ratio with little or no loss in image quality.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ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 goals are achieved by the invention according to independent claims. Additional forms of implementation are obvious from the dependent claims, description and figures.

Согласно первому аспекту настоящей заявки раскрыт способ хранения информации о движении, текущий блок состоит из первого подблока и второго подблока, первый подблок и второй подблок отделены общей границей, первый подблок соответствует первой информации о движении, а второй подблок соответствует второй информации о движении, причем способ содержит: определение расстояния между набором дискретных отсчетов в текущем блоке и общей границей; и сравнение расстояния с пороговой величиной для определения того, что третья информация о движении сохранена для набора дискретных отсчетов, при этом третья информация о движении выводится из первой информации о движении и второй информации о движении.According to a first aspect of the present application, a method for storing motion information is disclosed, the current block is composed of a first sub-block and a second sub-block, the first sub-block and the second sub-block are separated by a common boundary, the first sub-block corresponds to the first traffic information, and the second sub-block corresponds to the second traffic information, wherein the method contains: determining the distance between a set of discrete samples in the current block and a common boundary; and comparing the distance with a threshold to determine that third motion information is stored for the sample set, wherein the third motion information is derived from the first motion information and the second motion information.

В возможном варианте реализации сравнение расстояния с пороговой величиной для определения того, что третья информация о движении сохранена для набора дискретных отсчетов, содержит определение того, что третья информация о движении сохранена для набора дискретных отсчетов, в случае, при котором абсолютное значение расстояния меньше или равно пороговой величине.In an exemplary embodiment, comparing the distance to a threshold for determining that third motion information is stored for the sample set comprises determining that third motion information is stored for the sample set in the case where the absolute value of the distance is less than or equal to threshold value.

В возможном варианте реализации, в случае, при котором абсолютное значение расстояния больше пороговой величины, способ дополнительно содержит: определение того, что первая информация о движении сохранена для набора дискретных отсчетов, в случае, при котором расстояние является положительным; или определение того, что вторая информация о движении сохранена для набора дискретных отсчетов, в случае, при котором расстояние является отрицательным.In an exemplary embodiment, in a case in which the absolute value of the distance is greater than a threshold value, the method further comprises: determining that the first motion information is stored for a set of discrete samples in the case in which the distance is positive; or determining that the second motion information is stored for a set of samples, in the case where the distance is negative.

В возможном варианте реализации пороговая величина является предварительно определенной.In an exemplary embodiment, the threshold value is predetermined.

В возможном варианте реализации пороговая величина основана на геометрическом соотношении между общей границей и горизонтальным направлением или вертикальным направлением.In an exemplary embodiment, the threshold is based on a geometric relationship between the common boundary and the horizontal direction or vertical direction.

В возможном варианте реализации пороговая величина основана на угле между перпендикулярным направлением общей границы и горизонтальным направлением или вертикальным направлением.In an exemplary embodiment, the threshold is based on the angle between the perpendicular direction of the common boundary and the horizontal direction or vertical direction.

В возможном варианте реализации пороговая величина основана на ширине и/или высоте текущего блока.In an exemplary embodiment, the threshold is based on the width and/or height of the current block.

В возможном варианте реализации общая граница определяется посредством углового параметра и параметра расстояния, причем перед определением расстояния между набором дискретных отсчетов в текущем блоке и общей границей способ дополнительно содержит: определение углового параметра и параметра расстояния.In a possible embodiment, the common boundary is determined by an angular parameter and a distance parameter, and before determining the distance between the set of discrete samples in the current block and the common boundary, the method further comprises: determining the angular parameter and the distance parameter.

В возможном варианте реализации в декодере определение углового параметра и параметра расстояния содержит: выделение посредством анализа углового параметра и параметра расстояния из битового потока; или выделение посредством анализа указателя из битового потока и получение углового параметра и параметра расстояния на основе указателя.In an exemplary embodiment, in the decoder, determining the angular parameter and the distance parameter comprises: extracting, by analyzing, the angular parameter and the distance parameter from the bit stream; or extracting, by parsing, a pointer from the bitstream and obtaining an angular parameter and a distance parameter based on the pointer.

В возможном варианте реализации после определения углового параметра и параметра расстояния способ дополнительно содержит: определение первого вычислительного параметра на основе углового параметра; вычисление временного углового параметра на основе углового параметра; определение второго вычислительного параметра на основе временного углового параметра; и вычисление третьего вычислительного параметра на основе углового параметра и параметра расстояния.In an exemplary embodiment, after determining the angular parameter and the distance parameter, the method further comprises: determining a first computational parameter based on the angular parameter; calculating a temporary angular parameter based on the angular parameter; determining a second computational parameter based on the time angular parameter; and calculating a third calculation parameter based on the angular parameter and the distance parameter.

В возможном варианте реализации первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно угловому параметру, и второй вычислительный параметр определяется посредством проверки упомянутой таблицы поиска согласно временному угловому параметру, и при этом первый вычислительный параметр и второй вычислительный параметр являются значением косинуса и значением синуса одного и того же угла, соответственно.In an exemplary embodiment, a first computational parameter is determined by checking a preset lookup table according to an angular parameter, and a second computational parameter is determined by checking said lookup table according to a temporary angular parameter, and wherein the first computational parameter and the second computational parameter are a cosine value and a sine value of one and the same angle, respectively.

В возможном варианте реализации расстояние вычисляется следующим образом:In a possible implementation, the distance is calculated as follows:

distFromLine=(x+K)*P1+(y+K)*P2-P3,distFromLine=(x+K)*P1+(y+K)*P2-P3,

где P1, P2 и P3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром, соответственно, distFromLine представляет расстояние, K является неотрицательным целым числом, x представляет горизонтальную координату целевого положения в наборе дискретных отсчетов, y представляет вертикальную координату целевого положения в прямоугольной системе координат, где положение верхнего левого дискретного отсчета текущего блока устанавливается в качестве начала координат, направление вправо устанавливается в качестве положительного горизонтального направления, а направление вниз устанавливается в качестве положительного вертикального направления.where P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter, respectively, distFromLine represents the distance, K is a non-negative integer, x represents the horizontal coordinate of the target position in the sample set, y represents the vertical coordinate of the target position in the rectangular a coordinate system where the position of the top left sampled reference of the current block is set as the origin, the right direction is set as the positive horizontal direction, and the down direction is set as the positive vertical direction.

В возможном варианте реализации K равно 1. In a possible implementation, K is equal to 1.

В возможном варианте реализации целевое положение предварительно определено в наборе дискретных отсчетов.In an exemplary embodiment, the target position is predefined in a set of discrete samples.

В возможном варианте реализации предварительно определенное положение является верхним левым положением набора дискретных отсчетов или центральным положением набора дискретных отсчетов.In an exemplary embodiment, the predetermined position is the top left position of the sample set or the center position of the sample set.

В возможном варианте реализации точность дискретного отсчета расстояния выше целочисленного дискретного отсчета; соответственно, расстояние вычисляется следующим образом:In a possible embodiment, the accuracy of the discrete distance reading is higher than the integer discrete reading; Accordingly, the distance is calculated as follows:

distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,

где 2N представляет обратную величину точности дискретного отсчета расстояния.where 2 N represents the reciprocal of the discrete distance reading accuracy.

В возможном варианте реализации N равно 1.In a possible implementation, N is equal to 1.

В возможном варианте реализации набор дискретных отсчетов является набором дискретных отсчетов яркости текущего блока.In an exemplary embodiment, the set of samples is a set of luminance samples of the current block.

В возможном варианте реализации перед определением расстояния между набором дискретных отсчетов в текущем блоке и общей границей способ дополнительно содержит: разделение текущего блока на множество наборов дискретных отсчетов, при этом каждый из множества наборов дискретных отсчетов имеет тот же размер, что и набор дискретных отсчетов; или установку текущего блока в качестве набора дискретных отсчетов.In an exemplary embodiment, before determining the distance between a set of samples in the current block and a common boundary, the method further comprises: dividing the current block into a plurality of sets of samples, each of the plurality of sets of samples having the same size as the set of samples; or setting the current block as a set of discrete samples.

В возможном варианте реализации набор дискретных отсчетов является массивом дискретных отсчетов 4×4.In an exemplary embodiment, the sample set is a 4x4 sample array.

В возможном варианте реализации каждый из множества наборов дискретных отсчетов соответствует каждому модулю хранения информации о движении, модуль хранения информации о движении используется для хранения одной из первой информации о движении, второй информации о движении и третьей информации о движении.In an exemplary embodiment, each of the plurality of sets of discrete samples corresponds to each motion information storage module, the motion information storage module is used to store one of the first motion information, the second motion information, and the third motion information.

В возможном варианте реализации первый подблок и второй подблок являются треугольным разбиением, трапециевидным разбиением или асимметричным прямоугольным разбиением.In an exemplary embodiment, the first subblock and the second subblock are a triangular mesh, a trapezoidal mesh, or an asymmetric rectangular mesh.

В возможном варианте реализации первая информация о движении содержит информацию о движении на основе первого списка опорных снимков, вторая информация о движении содержит информацию о движении на основе второго списка опорных снимков, и при этом третья информация о движении содержит первую информацию о движении и вторую информацию о движении. In an exemplary embodiment, the first motion information comprises motion information based on the first reference picture list, the second motion information contains motion information based on the second reference picture list, and wherein the third motion information comprises first motion information and second motion information. movement.

Информация.Information.

Согласно второму аспекту настоящей заявки раскрыто устройство для декодирования видеопотока, включающее в себя процессор и память. Память хранит инструкции, которые предписывают процессору выполнять способ согласно первому аспекту.According to a second aspect of the present application, an apparatus for decoding a video stream is disclosed, including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the first aspect.

Согласно третьему аспекту настоящей заявки раскрыто устройство для кодирования видеопотока, включающее в себя процессор и память. Память хранит инструкции, которые предписывают процессору выполнять способ согласно первому аспекту.According to a third aspect of the present application, an apparatus for encoding a video stream is disclosed, including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the first aspect.

Согласно четвертому аспекту предлагается машиночитаемый носитель данных, на котором хранятся инструкции, которые, при их исполнении, предписывают одному или более процессорам обеспечивать кодирования видеоданных. Инструкции предписывают одному или более процессорам выполнять способ согласно первому аспекту.According to a fourth aspect, there is provided a computer-readable storage medium that stores instructions that, when executed, cause one or more processors to provide encodings of video data. The instructions direct one or more processors to perform the method according to the first aspect.

В соответствии с пятым аспектом компьютерная программа содержит программный код для выполнения способа согласно первому аспекту при ее исполнении на компьютере.According to a fifth aspect, the computer program includes program code for performing the method according to the first aspect when executed on a computer.

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

В следующих вариантах осуществления заявки описаны более подробно со ссылками на приложенные фигуры и чертежи, на которых:In the following embodiments, the applications 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 present application; FIG.

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

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

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

Фиг.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;

Фиг.6 является схемой, показывающей пример положений пространственного потенциально подходящего варианта на слияние;FIG. 6 is a diagram showing an example of positions of a spatial merging candidate;

Фиг.7 является схемой, показывающей пример пар потенциально подходящих вариантов, рассматриваемых для проверки избыточности пространственных потенциально подходящих вариантов на слияние;FIG. 7 is a diagram showing an example of pairs of candidates considered for redundancy testing of spatial candidates for merging; FIG.

Фиг.8 является схемой, показывающей пример масштабирования вектора движения для временного потенциально подходящего варианта на слияние;FIG. 8 is a diagram showing an example of motion vector scaling for a temporary fusion candidate; FIG.

Фиг.9 является схемой, показывающей пример хранения вектора движения для блока предсказания размером 8×8 дискретных отсчетов яркости;Fig. 9 is a diagram showing an example of motion vector storage for a prediction block of size 8×8 luminance samples;

Фиг.10 является схемой, показывающей пример интер-предсказания на основе треугольного разбиения;Fig. 10 is a diagram showing an example of inter-prediction based on triangular partitioning;

Фиг.11 является схемой, показывающей пример выбора MV с уни-предсказанием для режима треугольного разбиения;FIG. 11 is a diagram showing an example of selecting a uni-prediction MV for a triangular partitioning mode; FIG.

Фиг.12 является схемой, показывающей пример весовых коэффициентов, используемых в процессе смешивания;Fig. 12 is a diagram showing an example of weighting factors used in the mixing process;

Фиг.13 является схемой, показывающей пример хранения вектора движения для режима треугольного разбиения;Fig. 13 is a diagram showing an example of motion vector storage for the triangular partitioning mode;

Фиг.14 является схемой, показывающей пример другого геометрического разбиения;FIG. 14 is a diagram showing an example of another geometric partition; FIG.

Фиг.15 является схемой, показывающей пример параметров GEO-разбиения;FIG. 15 is a diagram showing an example of GEO partitioning parameters;

Фиг.16 является схемой, показывающей пример операции смешивания;Fig. 16 is a diagram showing an example of a mixing operation;

Фиг.17 является схемой, показывающей пример таблицы поиска для операции смешивания;FIG. 17 is a diagram showing an example of a lookup table for a mixing operation;

Фиг.18 является схемой, показывающей пример примера хранения движения 4×4 с целочисленным положением и положением в половину пикселя;Fig. 18 is a diagram showing an example of a 4x4 motion storage example with an integer position and a half-pixel position;

Фиг.19 является схемой, показывающей пример способа хранения движения;Fig. 19 is a diagram showing an example of a motion storage method;

Фиг.20 является блок-схемой, иллюстрирующей пример способа хранения информации о движении;Fig. 20 is a block diagram illustrating an example of a method for storing motion information;

Фиг.21 является блок-схемой, иллюстрирующей пример устройства хранения информации о движении;FIG. 21 is a block diagram illustrating an example of a motion information storage device;

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

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

Следующие одинаковые ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.The following identical reference numerals 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 the disclosure and which show by way of illustration specific aspects of embodiments of the application or specific aspects in which embodiments of the present application may be used. It is understood that embodiments of the application may be used in other aspects and contain structural or logical changes not depicted in the figures. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present application is determined by the appended claims.

Например, должно понятно, что раскрытие в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков (модулей), например функциональных блоков, для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков явно не описаны или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описывается на основе одного или множества блоков, например функциональных блоков, соответствующий метод может включать в себя в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап выполнения функциональные возможности одного или множества модулей или множества этапов, каждый из которых выполняет функциональные возможности одного или более из множества модулей), даже если такой один или множество этапов явно не описаны или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.For example, it should be understood that the disclosure in connection with a method described may also be true for a corresponding device or system configured to perform the method, and vice versa. For example, if one or more specific method steps are described, the corresponding apparatus may include one or more blocks (modules), such as functional blocks, for performing the one or more method steps described (e.g., one unit performing one or more steps or multiple 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 more blocks, such as function blocks, the corresponding method may include one step for performing the functionality of one or more blocks (e.g., one step of performing the functionality of one or more modules or a plurality of steps, each of which performs the functionality of one or more of the plurality of modules), even if such one or multiple steps are not expressly 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.

Видеокодирование обычно относится к обработке последовательности снимков, которые образуют видео или видеопоследовательность. Вместо термина «снимок» можно использовать термин «кадр» или «изображение» как синонимы в области видеокодирования. Видеокодирование (или кодирование в общем смысле) содержит две части видеокодирование и декодирование видео. Видеокодирование выполняется на стороне источника, обычно содержащее обработку (например, посредством сжатия) исходных видеоснимков для уменьшения объема данных, необходимых для представления видеоснимков (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоснимков. Варианты осуществления, относящиеся к «кодированию» видеоснимков (или снимков в целом, следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеоснимков или соответственных видеопоследовательностей. Объединение кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).Video encoding generally refers to the processing of a sequence of pictures that form a video or video sequence. Instead of the term "snapshot", the term "frame" or "image" can be used interchangeably in the field of video coding. Video encoding (or encoding in a general sense) contains two parts: video encoding and video decoding. Video encoding is performed at the source side, typically involving processing (eg, through compression) of the original video pictures to reduce the amount of data required to represent the video pictures (for more efficient storage and/or transmission). Video decoding is performed at the receiving end and typically involves reverse processing from the encoder to reconstruct video images. Embodiments relating to "coding" of video pictures (or pictures in general) should be understood as relating to either "encoding" or "decoding" of video pictures 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. Recovered videos are of the same quality as the original videos (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video encoding, further compression is performed, for example through quantization, to reduce the amount of data representing video images that cannot be fully reconstructed in the decoder, i.e. The quality of the restored videos is lower or worse compared to the quality of the original videos.

Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области дискретных отсчетов и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждый снимок видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутри снимка) (интра) предсказания и/или временного (между снимками) (интер) предсказания для генерации блока предсказания, вычитая блок предсказания из текущего блока (блок, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжатие), тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, интра- и интер-предсказание) и/или реконструкцию для обработки, то есть кодирования, последующих блоков.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 snapshot 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-shot) (intra) prediction and/or temporal (inter-shot) (inter) prediction to generate a prediction block. subtracting the prediction block from the current block (the block that is currently being processed/to be processed) to obtain a residual block, transforming the residual block, and quantizing the residual block in the transform domain to reduce the amount of data that needs to be transferred (compression), whereas in The decoder reverses processing from the encoder and applies it to the encoded or compressed block to recover the current block for presentation. In addition, the encoder duplicates the decoder's processing loop so that both will generate identical predictions (eg, intra- and inter-prediction) and/or reconstruction for processing, ie encoding, subsequent blocks.

В следующих вариантах осуществления системы 10 видеокодирования кодер 20 и декодер 30 описываются на основе фигур с 1 по 3.In the following embodiments of the video encoding system 10, the encoder 20 and decoder 30 are described based on Figures 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 a video encoding system 10 (or encoding system 10 for short), which may utilize the techniques of this 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 techniques in accordance with the 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 picture data 21, for example, to a destination device 14 for decoding the encoded picture data 13.

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

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

В отличие от препроцессора 18 и обработки, выполняемой модулем 18 предварительной обработки, снимок или данные 17 снимка также могут называться необработанным снимком или данными 17 необработанного снимка.In contrast to the preprocessor 18 and the processing performed by the preprocessing module 18, the snapshot or snapshot data 17 may also be referred to as a raw snapshot or raw snapshot 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 of the image data 17 to produce a preprocessed image 19 or preprocessed image data 19. Preprocessing performed by preprocessor 18 may, for example, include cropping, color format conversion (eg, RGB to YCbCr), color correction, or noise reduction. It may be understood that the pre-processing module 18 may be an optional component.

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

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

Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. в необязательном порядке, содержать интерфейс или модуль 28 связи, постпроцессор 32 и устройство 34 отображения.The recipient device 14 includes a decoder 30 (eg, video decoder 30) and may additionally, i.e. optionally comprising an interface or communication module 28, a post-processor 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 coded snapshot 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 coded snapshot data storage device, and provide 21 encoded picture data to 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 picture 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 snapshot data 21 into an appropriate format, such as packets, and/or process the encoded snapshot data using any type of transmission encoding or processing for transmission over a communication channel or communication network.

Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения данных 21 кодированного снимка.The communication interface 28, constituting a counterpart to the communication interface 22, may, for example, be configured to receive transmitted data and process the transmission data using any form of appropriate decoding or transmission processing and/or decompression to obtain encoded picture 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 source device 12 to destination device 14, or as bidirectional communication interfaces, and may be configured, for example, to send and receive messages, for example to establish a connection, to confirm and exchange any other information related to the communication channel and/or data transfer, for example, to transmit encoded snapshot data.

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

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

Устройство 34 отображения устройства-получателя 14 выполнено с возможностью приема данных 33 снимка с постобработкой для отображения снимка, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного снимка, например интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифровой световой процессор (DLP) или любые другие дисплеи.The display device 34 of the recipient device 14 is configured to receive photo data 33 with post-processing to display the photo, for example, to a user or viewer. The display device 34 may be or include any kind 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 displays.

Хотя Фиг.1A изображает устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать оба или обе функциональные возможности, устройство-источник 12 или соответствующие функциональные возможности и устройство-получатель 14 или соответствующие функциональные возможности. В таких вариантах осуществления устройство-источник 12 или соответствующие функциональные возможности и устройство-получатель 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любого их сочетания. Although FIG. 1A depicts 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 related functionality and destination device 14 or related 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 for a specific element based on the description, the presence and (precise) separation of functionality of various modules or functions in the source device 12 and/or destination device 14, as shown in FIG. 1A, may vary depending on the actual device and applications.

Кодер 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 processing circuitry as shown in FIG. 1B, such as one or more microprocessors, digital processors, signals (DSP), application programs. application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, video encoding hardware, or any combination thereof. Encoder 20 may be implemented through processing circuitry 46 to implement various modules, as discussed with respect to encoder 20 in FIG. 2 and/or any other encoding system or subsystem described herein. Decoder 30 may be implemented through processing circuitry 46 to implement various modules, as discussed with respect to decoder 30 in FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuit may be configured to perform various operations, as described below. As shown in FIG. 5, if the techniques are partially implemented in software, the apparatus may store 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 execute 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 stationary device, such as laptop or notebook computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, sets- set-top boxes, televisions, display devices, digital media players, game consoles, video streaming devices (such as content service servers or content delivery servers), broadcast receiver device, broadcast transmitter device, and the like. and may or may not use any kind 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 merely an example, and the techniques of the present application may be applied to video encoding settings (e.g., video encoding or video decoding) that do not necessarily involve any communication between encoding and decoding devices. . In other examples, data is retrieved from local memory, transferred over a network, etc. A video encoding apparatus may encode and store data in memory, and/or a video decoding apparatus 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 convenience of description, embodiments of the application are described herein, for example, with reference to High Efficiency Video Coding (HEVC) or to the Versatile Video Coding (VVC) reference software, a next-generation video coding standard developed by the Joint Collaboration Group on Video Coding (JCT-VC) Group ITU-T Video Coding Experts Group (VCEG) and ISO/IEC Moving Picture Experts Group (MPEG). One skilled in the art will appreciate that embodiments of the application 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 methods of the present application. In the example of FIG. 2, video encoder 20 includes an input 201 (or input interface 201), a remainder calculation module 204, a transform processing module 206, a quantization module 208, an inverse quantization module 210 and an inverse transform processing module 212, a reconstruction module 214, a contour module 220 filter, decoded snapshot buffer (DPB) 230, mode selection module 260, entropy encoding module 270, and output 272 (or output interface 272). The mode selection module 260 may include an inter-prediction module 244, an intra-prediction module 254, and a partitioning module 262. The inter-prediction module 244 may include a motion estimation module and a motion compensation module (not shown). The 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 unit 204, transform processing unit 206, quantization unit 208, mode selection unit 260 may relate to the forward signal path generation of the encoder 20, while the inverse quantization unit 210, inverse transform processing unit 212, restoration unit 214, buffer 216, loop filter 220, decoded picture buffer (DPB) 230, inter-prediction module 244, and intra-prediction module 254 may relate to generating a return signal path of the video encoder 20, wherein the return signal path of the video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in FIG. 3). An inverse quantization unit 210, an inverse transform processing unit 212, a restoration unit 214, a loop filter 220, a decoded picture buffer (DPB) 230, an inter-prediction unit 244, and an intra-prediction unit 254 also relate to forming the “Built-in Decoder” of the video encoder 20.

Снимки и разбиение снимков (снимки и блоки)Snapshots and snapshot splitting (snapshots and blocks)

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

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

Варианты осуществления видеокодера 20 могут содержать модуль разбиения снимка (не показан на фиг.2), выполненный с возможностью разбиения снимка 17 на множество (обычно не перекрывающихся) блоков 203 снимка. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единичными блоками дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разбиения снимка может быть выполнен с возможностью использования одного и того же размера блока для всех снимков видеопоследовательности и соответствующей сетки, определяющей размер блока, или для изменения размера блока между снимками или подмножествами или группами снимков, а также для разбиения каждого снимка на соответствующие блоки. Embodiments of video encoder 20 may include a picture splitter module (not shown in FIG. 2) configured to split picture 17 into multiple (typically non-overlapping) picture 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 shot splitter block may be configured to use the same block size for all shots of a video sequence and a corresponding grid defining the block size, or to vary the block size between shots or subsets or groups of shots, and to split each shot into appropriate blocks.

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

Подобно снимку 17, блок 203 снимка снова является или может рассматриваться как двумерный массив или матрица дискретных отсчетов со значениями интенсивности (значениями дискретных отсчетов), хотя и меньшего размера, чем снимок 17. Другими словами, блок 203 может содержать, например, один массив дискретных отсчетов (например, массив яркости в случае монохромного снимка 17 или массив яркости или цветности цветного снимка) или три массива дискретных отсчетов (например, массив яркости и два массива цветности в случае цветного снимка 17) или любое другое количество и/или вид массивов в зависимости от применяемого цветового формата. Количество дискретных отсчетов в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив дискретных отсчетов MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.Similar to snapshot 17, snapshot 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 snapshot 17. In other words, block 203 may contain, for example, one array of samples samples (for example, a brightness array in the case of a monochrome photograph 17 or an array of brightness or chrominance for a color photograph) or three arrays of discrete samples (for example, a brightness array and two chrominance arrays in the case of a color photograph 17) or any other number and/or type of arrays depending depending on the color format used. 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 array of samples (M-column by N-row) or an MxN array of transform coefficients.

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

Варианты осуществления видеокодера 20, как показано на Фиг.2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования снимка с использованием сегментов (также называемых видеосегментами), при этом снимок может быть разделен или кодировано с использованием одного или более сегментов (обычно без перекрытия), и каждый сегмент может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, клеток (tile) (H.265/HEVC и VVC) или фрагментов (brick) (VVC)).Embodiments of video encoder 20, as shown in FIG. 2, may further be configured to split and/or encode a picture using segments (also referred to as video segments), wherein the picture may be divided or encoded using one or more segments (usually without overlap), and each segment may contain one or more blocks (eg, CTUs) or one or more groups of blocks (eg, tiles (H.265/HEVC and VVC) or bricks (VVC)).

Варианты осуществления видеокодера 20, как показано на фиг.2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования снимка с использованием групп сегментов/клеток (также называемых группами клеток) и/или клеток (также называемых видеоклетками), в котором снимок может быть разделено или кодировано с использованием одной или более групп сегментов/клеток (обычно не перекрывающихся), и каждая группа сегментов/клеток может содержать, например, один или более блоков (например, CTU) или одну или более клеток, при этом каждая клетка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.Embodiments of video encoder 20, as shown in FIG. 2, may be further configured to partition and/or encode a picture using groups of segments/cells (also called groups of cells) and/or cells (also called video cells), in which the picture may be divided or encoded using one or more groups of segments/cells (usually not overlapping), and each group of segments/cells may contain, for example, one or more blocks (for example, CTU) or one or more cells, with each cell, for example, may be rectangular in shape and may contain one or more blocks (eg, CTUs), such as full or fractional blocks.

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

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

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

Модуль 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям дискретных отсчетов остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.The 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 module 206 may be configured to apply DCT/DST integer approximations such as those specified for H.265/HEVC. Compared to the orthogonal DCT transform, such integer approximations are usually scaled by a certain factor. To preserve the norm of the residual block that is processed by the forward and inverse transformations, additional scaling factors are applied during the transformation process. Scaling factors are typically chosen based on certain constraints, such as scaling factors that are powers of two for shift operations, the bit depth of the transform coefficients, the tradeoff between accuracy and implementation cost, etc. Specific scaling factors, for example, are set for the inverse transform, for example, by the inverse transform processing unit 212 (and the corresponding inverse transform, for example, by the inverse transform processing unit 312 in the video encoder 30), and corresponding scaling factors for the forward transform, for example, by the processing unit 206 transformations in the encoder 20 can be determined accordingly.

Варианты осуществления видеокодера 20 (соответственно модуль 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.Embodiments of video encoder 20 (respectively transform processing module 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 module 270, so that, for example, video decoder 30 can receive and use conversion parameters for decoding.

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

Модуль 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, посредством применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209. Quantization module 208 may be configured to quantize 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 predetermined 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, for example by inverse quantization module 210, may include multiplying by a quantization step size. Embodiments according to 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 to the equation involving division. Additional scaling factors can be introduced for quantization and dequantization to recover the residual block norm, which can be changed due to the scaling used in the fixed-point approximation of the 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 can be used and the encoder can pass them to the decoder, for example in a bitstream. Quantization is a lossy operation in which losses increase as the size of the quantization stages increases.

Варианты осуществления видеокодера 20 (соответственно модуль 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.Embodiments of video encoder 20 (respectively quantization module 208) may be configured to output quantization parameters (QPs), for example, directly or encoded through entropy encoding module 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 module 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 the inverse quantization scheme applied by the quantization block 208 based on or using the same quantization step size as the quantization module 208 . The dequantized coefficients 211 may also be referred to as the dequantized residual coefficients 211 and correspond to, although 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 the inverse 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 coefficients 213 dequantization) in the domain of discrete samples. The reconstructed residual block 213 may also be referred to as a transform block 213.

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

Модуль 214 восстановления (например, сумматор 214) выполнен с возможностью добавления блока 213 преобразования (то есть восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области дискретных отсчетов, например, посредством добавления (дискретный отсчет за дискретным отсчетом) значений дискретных отсчетов восстановленных остаточный блок 213 и значения дискретных отсчетов блока 265 предсказания.The reconstruction module 214 (e.g., the adder 214) is configured to add a transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 to obtain the reconstructed block 215 in the sample domain, for example, by adding (sample by sample) the values of the sampled samples recovered by the residual block 213 and the values of the sampled samples of the prediction block 265.

ФильтрацияFiltration

Модуль 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215 для получения фильтрованного блока 221 или, в общем, для фильтрации восстановленных дискретных отсчетов для получения отфильтрованных значений дискретных отсчетов. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Модуль 220 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением дискретных отсчетов (SAO) или один или более других фильтров, например адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любое их сочетание. В одном примере модуль 220 контурного фильтра может содержать фильтр устранения блочности, фильтр SAO и фильтр ALF. Порядок процесса фильтрации может быть фильтром удаления блочности, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивным внутриконтурным преобразователем). Этот процесс выполняется перед расформированием блоков. В другом примере процесс фильтрации расформирования блоков может также применяться к внутренним краям подблока, например краям аффинных подблоков, краям подблоков ATMVP, краям преобразования подблоков (SBT) и краям внутри подблока (ISP). Хотя модуль 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях модуль 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221.Loop filter module 220 (or “loop filter” 220 for short) is configured to filter the reconstructed block 215 to produce a filtered block 221 or, more generally, to filter the reconstructed samples to produce filtered sample values. The edge filter unit, for example, is configured to smooth pixel transitions or otherwise improve video quality. Loop filter module 220 may include one or more loop filters, such as a deblocking filter, an adaptive sample offset (SAO) filter, or one or more other filters, such as an adaptive loop filter (ALF), a noise reduction filter (NSF), or any their combination. In one example, loop filter module 220 may include a deblocking filter, an SAO filter, and an ALF filter. The order of the filtering process can be deblocking filter, SAO and ALF. Another example adds a process called luminance chroma scaling (LMCS) mapping (namely, adaptive in-loop converter). This process is performed before the blocks are disbanded. In another example, the deblock filtering process may also be applied to inner subblock edges, such as affine subblock edges, ATMVP subblock edges, subblock transform (SBT) edges, and intrasubblock (ISP) edges. Although loop filter module 220 is shown in FIG. 2 as a loop filter, in other configurations, loop filter module 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 encoder 20 (respectively, loop filter module 220) may be configured to output loop filter parameters (such as adaptive sample offset information), for example, directly or entropy encoded by entropy encoding block 270 or any other entropy encoding block, so that, for example, decoder 30 can receive and apply the same loop filter parameters for decoding.

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

Буфер 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 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 snapshot buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded snapshot buffer 230 may be further configured to store other previously filtered blocks, such as previously reconstructed and filtered blocks 221, the same current snapshot, or different snapshots, such as previously recovered snapshots, and can provide complete previously restored ones, i.e. decoded, snapshots (and associated reference blocks and samples) and/or partially reconstructed current snapshot (and associated reference blocks and samples), for example, for inter-prediction. The decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215, or generally unfiltered reconstructed samples, for example if the reconstructed block 215 is not filtered by the loop filter module 220, or any other further processed version of the reconstructed samples. blocks or discrete samples.

Выбор режима (Разбиение и Предсказание)Mode selection (Partition and Prediction)

Модуль 260 выбора режима содержит модуль 262 разбиения, модуль 244 интер-предсказания и модуль 254 интра-предсказания и выполнен с возможностью приема или получения данных исходного снимка, например исходного блока 203 (текущего блока 203 текущего снимка 17), и данных восстановленного снимка, например отфильтрованных и/или нефильтрованных восстановленных дискретных отсчетов или блоков того же самого (текущего) снимка и/или из одного или множества ранее декодированных снимков, например из буфера 230 декодированных снимков или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного снимка используются в качестве данных опорного снимка для предсказания, например интер-предсказания или интра-предсказания, чтобы получить блок 265 предсказания или предиктор 265.The mode selection module 260 includes a partitioning module 262, an inter-prediction module 244, and an intra-prediction module 254, and is configured to receive or obtain original snapshot data, such as the original block 203 (the current block 203 of the current snapshot 17), and reconstructed snapshot data, such as filtered and/or unfiltered reconstructed samples or blocks of the same (current) snapshot and/or from one or multiple previously decoded snapshots, for example from decoded snapshot buffer 230 or other buffers (for example, a line buffer, not shown). The reconstructed snapshot data is used as reference snapshot 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 selector 260 may be configured to determine or select a split for the current block prediction mode (including no split) and prediction mode (eg, intra or inter-prediction mode) and generate a corresponding prediction block 265 that is used to calculate the residual block 205 and to restore the recovered block 215.

Варианты осуществления модуля 260 выбора режима могут быть выполнены с возможностью выбора разбиения и режима предсказания (например, из тех, которые поддерживаются или доступны для модуля 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба. Модуль 260 выбора режима может быть выполнен с возможностью определения режима разбиения и предсказания на основе оптимизации искажения скорости (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимум», «оптимальный» и т.д. В этом контексте не обязательно относятся к общему «лучшему», «минимуму», «оптимальному» и т.д., Но также могут относиться к выполнению прекращения или критерий выбора, такой как значение, превышающее или падающее ниже порогового значения, или другие характеристик, потенциально ведущие к «неоптимальному выбору», но уменьшающие сложность и время обработки.Embodiments of mode selector 260 may be configured to select a partition and prediction mode (e.g., from those supported or available to mode selector 260) that provides the best match, or in other words, the minimum remainder (minimum remainder means better compression for transmission or storage), or minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which takes into account or balances both. The mode selection module 260 may be configured to determine a partitioning and prediction mode based on rate distortion optimization (RDO), that is, selecting a prediction mode that provides minimal rate distortion. Terms such as “best”, “minimum”, “optimal”, etc. In this context do not necessarily refer to a general "best", "minimum", "optimal", etc., but may also refer to the performance of a termination or selection criterion, such as a value exceeding or falling below a threshold, or other characteristics , potentially leading to “sub-optimal selection” but reducing complexity and processing time.

Другими словами, модуль 262 разбиения может быть выполнен с возможностью разбиения снимка из видеопоследовательности на последовательность единичных блоков дерева кодирования (CTU), а CTU 203 может быть дополнительно разделен на более мелкие блочные разделы или подблоки (которые снова образуют блоков), например, итеративно с использованием разбиения на квадранты (QT), двоичного разбиения (BT) или разбиения на троичное дерево (TT) или любого их сочетания, и для выполнения, например, предсказания для каждого из разбиений блока или подблоков, при этом выбор режима включает в себя выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разбиений или подблоков блока.In other words, partitioner 262 may be configured to partition a snapshot from a video sequence into a sequence of coding tree units (CTUs), and CTU 203 may be further partitioned into smaller block sections or sub-blocks (which form blocks again), for example, iteratively with using quadrant partitioning (QT), binary partitioning (BT), or ternary tree partitioning (TT), or any combination thereof, and to perform, for example, a prediction for each of the block or sub-block partitions, wherein selecting a mode includes selecting a tree structures of the divided block 203, and prediction modes are applied to each of the splits or subblocks of the block.

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

РазбиениеSplitting

Модуль 262 разбиения может быть выполнен с возможностью разбиения снимка из видеопоследовательности на последовательность единиц дерева кодирования (CTU), а модуль 262 разбиения может разбивать (или разделять) блок 203 дерева кодирования (CTU) на меньшие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Для снимка, который имеет три массива дискретных отсчетов, CTU состоит из блока N × N дискретных отсчетов яркости вместе с двумя соответствующими блоками дискретных отсчетов цветности. Максимально допустимый размер блока яркости в CTU определен равным 128 × 128 в развивающемся универсальном кодировании видео (VVC), но в будущем может быть указано значение, а не 128×128, например 256×256. CTU снимка могут быть кластеризованы/сгруппированы как сегменты/группы клеток, клетки или блоки. Клетка покрывает прямоугольную область снимка, и она может быть разделена на один или более фрагментов. Фрагмент состоит из некоторого количества рядов CTU внутри клетки. Клетку, не разделенную на несколько фрагментов, можно назвать фрагментом. Однако фрагмент - это истинное подмножество клетки и не называется клеткой. В VVC поддерживаются два режима групп клеток, а именно режим растрового сканирования сегмента/группы клеток и режим прямоугольного сегмента. В режиме растровым сканированием группы клеток группа клеток/сегмент содержит последовательность клеток при поклеточном растровом сканировании снимка. В режиме прямоугольного сегмента сегмент содержит несколько фрагментов снимка, которые вместе образуют прямоугольную область снимка. Фрагменты внутри прямоугольного сегмента находятся в порядке растрового сканирования сегмента. Эти меньшие блоки (которые также могут называться подблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также относится к разбиению дерева или иерархическому разбиению дерева, в котором корневой блок, например, на уровне корневого дерева 0 (уровень иерархии 0, глубина 0), может быть рекурсивно разделен, например разделен на два или более блока следующий более низкий уровень дерева, например узлы на уровне дерева 1 (уровень иерархии 1, глубина 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень дерева 2 (уровень иерархии 2, глубина 2) и т.д. До тех пор, пока разбиение не будет завершено, например, потому что критерий завершения выполняется, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются концевыми блоками или концевыми узлами дерева. Дерево, использующее разбиение на два разбиения, называется двоичным деревом (BT), дерево, использующее разбиение на три разбиения, называется тройным деревом (TT), а дерево, использующее разбиение на четыре разбиения, называется деревом квадрантов (QT).The partitioning module 262 may be configured to partition a snapshot from a video sequence into a sequence of coding tree units (CTUs), and the partitioning module 262 may partition (or partition) the coding tree unit (CTU) 203 into smaller sections, such as smaller blocks of square or rectangular size. . For a photograph that has three arrays of samples, the CTU consists of a block of N × N luminance samples along with two corresponding blocks of chroma samples. The maximum allowed luminance block size in a CTU is defined as 128×128 in the evolving Versatile Video Coding (VVC), but a value other than 128×128 may be specified in the future, such as 256×256. Snapshot CTUs can be clustered/grouped as cell segments/groups, cells or blocks. A cell covers a rectangular area of the photo, and it can be divided into one or more fragments. A fragment consists of a number of rows of CTUs within a cell. A cell that is not divided into several fragments can be called a fragment. However, a fragment is a true subset of a cell and is not called a cell. VVC supports two cell group modes, namely segment/cell group raster scanning mode and rectangular segment mode. In the cell group raster scanning mode, the cell group/segment contains a sequence of cells in a cell-by-cell raster scanning of the image. In rectangular segment mode, a segment contains several image fragments that together form a rectangular area of the image. The fragments within a rectangular segment are in raster scan order of the segment. These smaller blocks (which may also be called subblocks) can be further divided into even smaller sections. This also applies to tree splitting or hierarchical tree splitting, in which the root block, for example at root tree level 0 (hierarchy level 0, depth 0), can be recursively split, for example split into two or more blocks at the next lower tree level. for example nodes at tree level 1 (hierarchy level 1, depth 1), where these blocks can again be divided into two or more blocks of the next lower level, for example tree level 2 (hierarchy level 2, depth 2), etc. . Until the split is completed, for example because a completion criterion is met, such as the maximum tree depth or minimum block size being reached. Blocks that are not further divided are also called leaf blocks or leaf nodes of a tree. A tree that uses a two-partition is called a binary tree (BT), a tree that uses a three-partition is called a triple-tree (TT), and a tree that uses a four-partition is called a quadtree (QT).

Например, единичный блок дерева кодирования (CTU) может быть или содержать CTB дискретных отсчетов яркости, два соответствующих CTB дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или CTB дискретных отсчетов монохромного снимка или снимка, которое кодируется. с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов. Соответственно, блок дерева кодирования (CTB) может быть блоком NxN дискретных отсчетов для некоторого значения N, так что разбиение компонента на CTB является разбиением. Единичный блок кодирования (CU) может быть или содержать блок кодирования дискретных отсчетов яркости, два соответствующих блока кодирования дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или блок кодирования дискретных отсчетов монохромного снимка или снимка, который кодируется с использованием трех отдельных цветовых плоскости и синтаксические структуры, используемые для кодирования дискретных отсчетов. Соответственно, блок кодирования (CB) может быть блоком MxN дискретных отсчетов для некоторых значений M и N, так что разбиение CTB на блоки кодирования является разбиением.For example, a coding tree unit (CTU) may be either a CTB of luminance samples, two corresponding CTBs of chroma samples of a picture that has three arrays of samples, or a CTB of samples of a monochrome picture or picture that is being encoded. using three separate color planes and syntactic structures used to encode discrete samples. Accordingly, a coding tree block (CTB) may be a block of NxN samples for some value of N, such that a partition of a component into a CTB is a partition. A coding unit (CU) may be or comprise a luminance sample encoding unit, two corresponding chroma sample encoding units of a photograph that has three sample arrays, or a monochrome sample encoding unit or a photograph that is encoded using three separate color planes and syntactic structures used to encode discrete samples. Accordingly, a coding block (CB) may be a block of MxN samples for some values of M and N, so that partitioning the CTB into coding blocks is a partitioning.

В вариантах осуществления, например, согласно 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 divided into CUs using a quadtree structure, referred to as a coding tree. The decision of whether to encode a picture region using inter-picture (temporal) or intra-picture (spatial) prediction is made at the leaf CU level. Each leaf CU can be further divided into one, two or four PUs according to the PU partitioning type. Within a single PU, the same prediction process is applied and the corresponding information is passed to the PU-based decoder. After obtaining the residual block by applying a prediction process based on the partitioning type of the PU, the leaf CU can be divided into transform units (TUs) according to a different quadtree structure similar to the encoding tree for the CU.

В вариантах осуществления, например, в соответствии с последним разрабатываемым в настоящее время стандартом кодирования видео, который называется универсальным кодированием видео (VVC), объединенное дерево квадратов с вложенным множеством типов, использующее двоичное и троичное разбиение, структура сегментации, например, используемая для разбиения блок дерева кодирования. В структуре дерева кодирования внутри единицы дерева кодирования CU может иметь квадратную или прямоугольную форму. Например, единичный блок дерева кодирования (CTU) сначала разделяется четвертичным деревом. Затем концевые узлы дерева квадрантов могут быть дополнительно разделены с помощью многотипной древовидной структуры. Существует четыре типа разбиения в многотипной древовидной структуре: вертикальное двоичное разбиение (SPLIT_BT_VER), горизонтальное двоичное разбиение (SPLIT_BT_HOR), вертикальное троичное разбиение (SPLIT_TT_VER) и горизонтальное троичное разбиение (SPLIT_TT_HOR). Концевые узлы многотипного дерева называются единицами кодирования (CU), и, если CU не слишком велик для максимальной длины преобразования, эта сегментация используется для предсказания и обработки преобразования без какого-либо дальнейшего разбиения. Это означает, что в большинстве случаев CU, PU и TU имеют одинаковый размер блока в дереве квадрантов с вложенной структурой блока кодирования многотипного дерева. Исключение возникает, когда максимальная поддерживаемая длина преобразования меньше, чем ширина или высота цветового компонента CU. VVC разрабатывает уникальный механизм сигнализации информации о разбиении разделов в дереве квадрантов с вложенной древовидной структурой кодирования с множеством типов. В механизме сигнализации единица дерева кодирования (CTU) рассматривается как корень дерева квадрантов и сначала разделяется структурой дерева квадрантов. Каждый концевой узел дерева квадрантов (если он достаточно большой, чтобы его можно было использовать) затем разбивается на части с помощью многотипной древовидной структуры. В многотипной древовидной структуре первый флаг (mtt_split_cu_flag) сигнализируется, чтобы указать, разделен ли узел дальше; когда узел дополнительно разбивается на разделы, второй флаг (mtt_split_cu_vertical_flag) сигнализируется, чтобы указать направление разбиения, а затем сигнализируется третий флаг (mtt_split_cu_binary_flag), чтобы указать, является ли разбиение двоичным или троичным. На основе значений mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag, режим разрезания многотипного дерева (MttSplitMode) CU может быть получен декодером на основе предварительно заданного правила или таблицы. Следует отметить, что для определенного дизайна, например, для конвейерной обработки блока яркости 64 × 64 и конвейерной обработки цветности 32 × 32 в аппаратных декодерах VVC, разбиение TT запрещено, когда ширина или высота блока кодирования яркости больше 64, так как показано на фигуре 6. Разбиение TT также запрещено, если ширина или высота блока кодирования цветности больше 32. Конструкция конвейерной обработки делит снимок на блоки данных виртуального конвейера (VPDU), которые определены как неперекрывающиеся блоки в снимке. В аппаратных декодерах последовательные блоки VPDU обрабатываются несколькими этапами конвейера одновременно. Размер VPDU примерно пропорционален размеру буфера на большинстве этапов конвейера, поэтому важно, чтобы размер VPDU был небольшим. В большинстве аппаратных декодеров размер VPDU может быть установлен равным максимальному размеру блока преобразования (TB). Однако в VVC разбиение троичного дерева (TT) и двоичного дерева (BT) может привести к увеличению размера VPDU. Кроме того, следует отметить, что, когда часть блока узла дерева превышает нижнюю или правую границу снимка, блок узла дерева принудительно разделяется до тех пор, пока все дискретные отсчеты каждого кодированного CU не окажутся внутри границ снимка.In embodiments, for example, in accordance with a recent video coding standard currently under development called Versatile Video Coding (VVC), a nested multi-type concatenated square tree using a binary and ternary partitioning structure, for example, used for block partitioning coding tree. In a coding tree structure, within a coding tree unit, a CU can be square or rectangular in shape. For example, a coding tree unit (CTU) is first divided by a quaternary tree. The leaf nodes of the quadtree can then be further divided using a multi-type tree structure. There are four types of splits in a multi-type tree structure: vertical binary split (SPLIT_BT_VER), horizontal binary split (SPLIT_BT_HOR), vertical ternary split (SPLIT_TT_VER), and horizontal ternary split (SPLIT_TT_HOR). The leaf nodes of a multi-type tree are called coding units (CUs), and if the CU is not too large for the maximum length of the transformation, this segmentation is used to predict and process the transformation without any further partitioning. This means that in most cases, CU, PU and TU have the same block size in the quadtree with a nested multi-type tree encoding block structure. An exception occurs when the maximum supported transform length is less than the width or height of the CU color component. VVC develops a unique mechanism for signaling partitioning information in a quadtree with a nested multi-type encoding tree structure. In the signaling mechanism, a coding tree unit (CTU) is considered as the root of a quadtree and is first divided by the quadtree structure. Each leaf node of the quadtree (if it is large enough to be used) is then split into parts using a multi-type tree structure. In a multi-type tree structure, the first flag (mtt_split_cu_flag) is signaled to indicate whether the node is further split; when a node is further partitioned, a second flag (mtt_split_cu_vertical_flag) is signaled to indicate the direction of the split, and then a third flag (mtt_split_cu_binary_flag) is signaled to indicate whether the split is binary or ternary. Based on the values of mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, the multi-type tree splitting mode (MttSplitMode) of the CU can be obtained by the decoder based on a predefined rule or table. It should be noted that for a certain design, such as 64×64 luma block pipeline and 32×32 chroma pipeline in hardware VVC decoders, TT splitting is prohibited when the luma coding block width or height is greater than 64, as shown in Figure 6 TT splitting is also prohibited if the chrominance block width or height is greater than 32. The pipeline design divides the snapshot into virtual pipeline data units (VPDUs), which are defined as non-overlapping blocks in the snapshot. In hardware decoders, successive VPDUs are processed by multiple pipeline stages simultaneously. The size of the VPDU is roughly proportional to the buffer size in most stages of the pipeline, so it is important to keep the VPDU size small. In most hardware decoders, the VPDU size can be set to the maximum translation block (TB) size. However, in VVC, splitting the ternary tree (TT) and binary tree (BT) can lead to an increase in the size of the VPDU. Additionally, it should be noted that when a portion of a tree node block exceeds the bottom or right boundary of a snapshot, the tree node block is forced to be split until all samples of each encoded CU are within the snapshot boundaries.

В качестве примера инструмент интра-подразбиений (Intra Sub-Partitions (ISP)) может разделять блоки яркости с внутренним предсказанием по вертикали или горизонтали на 2 или 4 подразбиения в зависимости от размера блока.As an example, the Intra Sub-Partitions (ISP) tool can split intra-predicted luminance blocks vertically or horizontally into 2 or 4 sub-partitions depending on the block size.

В одном примере модуль 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разбиения, описанных в данном документе.In one example, the mode selection module 260 of the video encoder 20 may be configured to perform any combination of partitioning methods 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 (eg, predetermined) prediction modes. The set of prediction modes may comprise, for example, intra-prediction modes and/or inter-prediction modes.

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

Набор режимов интра-предсказания может содержать 35 различных режимов интра-предсказания, например ненаправленные режимы, такие как режим постоянного (или среднего) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов интра-предсказания, например, ненаправленные режимы, такие как режим постоянного тока (или среднего) и планарный режим, или направленные режимы, например, как определено для VVC. В качестве примера, несколько обычных режимов углового интра-предсказания адаптивно заменяются режимами широкоугольного интра-предсказания для неквадратных блоков, например, как определено в VVC. В качестве другого примера, чтобы избежать операций деления для предсказания DC, только длинная сторона используется для вычисления среднего для неквадратных блоков. И результаты интра-предсказания планарного режима могут быть дополнительно модифицированы с помощью способа объединения позиционно-зависимого интра-предсказания (PDPC).The set of intra-prediction modes may contain 35 different intra-prediction modes, such as non-directional modes such as constant (or average) mode and planar mode, or directional modes such as those defined in HEVC, or may contain 67 different intra-prediction modes , for example, non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined for VVC. As an example, several conventional angular intra-prediction modes are adaptively replaced by wide-angle intra-prediction modes for non-square blocks, for example, as defined in VVC. As another example, to avoid division operations for DC prediction, only the long side is used to calculate the average for non-square blocks. And the planar mode intra-prediction results can be further modified by a position-dependent intra-prediction fusion (PDPC) method.

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

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

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

Набор (или возможно) режимы интер-предсказания зависит от доступных опорных снимков (т.е. предыдущим, по меньшей мере, частично декодированных снимков, например, хранится в DBP 230) и других параметрах интер-предсказания, например, используется ли весь опорный снимок или только часть, например, область поиска окна вокруг области текущего блока, опорного снимка для поиска наилучшего соответствия опорного блока, и/или, например, применяются ли интерполяции пикселей, например, интерполяция половины/полу-пикселя, четверть пикселя и/или 1/16 пикселя или нет.The set (or possibly) of inter-prediction modes depends on the available reference pictures (i.e. previous, at least partially decoded pictures, e.g. stored in the DBP 230) and other inter-prediction parameters, for example whether the entire reference picture is used or just a portion, e.g., window search area around the area of the current block, reference snapshot to find the best reference block match, and/or, e.g., whether pixel interpolations are applied, e.g., half/half-pixel, quarter-pixel, and/or 1/ 16 pixels or not.

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

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

Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или различных снимков из множества других снимков и обеспечивает опорный снимок (или индекс опорного снимка) и/или смещение (пространственное смещение) между положением (координатами X, Y) опорного блока и положением текущего блока в качестве взаимосвязанных параметров предсказания в модуль оценки движения. Это смещение также называется вектором движения (MV).Encoder 20 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different pictures from a plurality of other pictures and provide a reference picture (or reference picture 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 interrelated prediction parameters in the motion estimation module. This displacement is also called motion vector (MV).

Модуль компенсации движения выполнен с возможностью получения, например, приема параметра интер-предсказания и выполнения интер-предсказания на основе или с использованием параметра интер-предсказания для получения блока 265 интер-предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя выборку или генерацию блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно выполнение интерполяции до субпиксельной точности. Интерполяционная фильтрация может генерировать дополнительные дискретные отсчеты пикселей из дискретных отсчетов известных пикселей, таким образом потенциально увеличивая количество блоков предсказания потенциально подходящих вариантов, которые могут использоваться для кодирования блока снимка. После приема вектора движения для PU текущего блока снимка модуль компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных снимков.The motion compensation module is configured to receive, for example, an inter-prediction parameter and perform inter-prediction based on or using the inter-prediction parameter to obtain an inter-prediction block 265. The motion compensation performed by the motion compensation block may include sampling or generating a prediction block based on a motion vector/block determined by motion estimation, possibly performing interpolation to 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 a snapshot block. After receiving the motion vector for the current shot block PU, the motion compensation module can find the prediction block pointed to by the motion vector in one of the reference shot lists.

Модуль компенсации движения также может генерировать синтаксические элементы, связанные с блоками и видеосегментами, для использования видеодекодером 30 при декодировании блоков снимка видеосегмента. В дополнение или в качестве альтернативы сегментам и соответствующим элементам синтаксиса могут генерироваться или использоваться группы клеток и/или клетки и соответствующие синтаксические элементы.The motion compensation module may also generate syntax elements associated with blocks and video segments for use by video decoder 30 when decoding the picture blocks of a video segment. In addition to or as an alternative to segments and corresponding syntax elements, groups of cells and/or cells and corresponding syntax elements may be generated or used.

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

Модуль 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разбиением интервала вероятности (PIPE) или другого способа или методики энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров интер-предсказания, параметров интра-предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения данных 21 кодированного снимка, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.The entropy encoding module 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 encoding (PIPE), or other entropy encoding method or technique) 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 picture data 21, which may be output via pin 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 unit 206. In another implementation, encoder 20 may have a quantization module 208 and an inverse quantization module 210 combined into a single unit.

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

На Фиг.3 показан пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема данных 21 кодированного снимка (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированный снимок 331. Данные кодированного снимка или кодированный битовый поток содержат информацию для декодирования данных кодированного снимка, например данных, которые представляют блоки снимка кодированного сегмента видео (и/или клеток или групп клеток) и связанные синтаксические элементы.Figure 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 coded picture data 21 (e.g., coded bitstream 21), such as encoded by encoder 20, to obtain a decoded picture 331. The coded picture data or coded bitstream contains information for decoding the coded picture data, such as data that represents snapshot blocks of an encoded video segment (and/or cells or groups of cells) and associated syntactic elements.

В примере на Фиг.3, декодер 30 содержит модуль 304 энтропийного декодирования, модуль 310 обратного квантования, модуль 312 обработки обратного преобразования, модуль 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных снимков, модуль 360 применения режима, модуль 344 интер-предсказания и модуль 354 интра-предсказания. Модуль 344 интер-предсказания может быть или включать в себя модуль компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.In the example of FIG. 3, decoder 30 includes an entropy decoding module 304, an inverse quantization module 310, an inverse transform processing module 312, a reconstruction module 314 (eg, adder 314), a loop filter 320, a decoded picture buffer (DPB) 330, a module 360 mode application, inter-prediction module 344 and intra-prediction module 354. Inter-prediction module 344 may be or include a motion compensation module. Video decoder 30 may, in some examples, perform a decoding step that is generally the reverse of the encoding step 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 reconstruction unit 214, the loop filter 220, the decoded snapshot buffer (DPB) 230, the inter-prediction unit 344, and the intra-prediction unit 354 are also related to the generation of " built-in 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 restoration unit 214, loop filter 320 may be identical in function to loop filter 220, and decoded snapshot buffer 330 may be identical in function to decoded snapshot 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 module 304 is configured to parse bit stream 21 (or generally encoded snapshot data 21) and perform, for example, entropy decoding on coded snapshot data 21 to obtain, for example, quantized coefficients 309 and/or decoded encoding parameters (not shown in FIG. 3), e.g., any or all of inter-prediction parameters (eg, reference shot index and motion vector), intra-prediction parameter (eg, index or intra-prediction mode), transform parameters, quantization parameters , loop filter parameters and/or other syntactic elements. Entropy decoding module 304 may be configured to employ decoding algorithms or schemes corresponding to encoding schemes as described with respect to entropy encoding module 270 of encoder 20. Entropy decoding module 304 may be further configured to provide inter-prediction parameters, an intra-prediction parameter and/or other syntax elements to module 360 for applying the mode and other parameters to other modules of decoder 30. Video decoder 30 may receive syntax elements at the video segment level and/or video block level. In addition to or as an alternative to segments and corresponding syntactic elements, groups of cells and/or cells and corresponding syntactic elements may be accepted and/or used.

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

Модуль 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из данных 21 кодированного снимка (например, посредством синтаксического анализа и/или декодирования, например, посредством модуля 304 энтропийного декодирования) и применять на основе параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеосегменте (или клетке или группе клеток), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.Inverse quantization module 310 may be configured to receive quantization parameters (QPs) (or, more generally, information related to inverse quantization) and quantized coefficients from encoded snapshot data 21 (e.g., by parsing and/or decoding, e.g., by entropy decoding module 304) and apply, based on the quantization parameters, inverse quantization to 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 a video segment (or cell or group of cells) to determine the degree of quantization and likewise the degree of inverse quantization to be applied.

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

Модуль 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и для применения преобразования к деквантованным коэффициентам 311, чтобы получить восстановленные остаточные блоки 213 в области дискретных отсчетов. Восстановленные остаточные блоки 213 также могут упоминаться как блоки 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным 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 sample domain residual blocks 213. The reconstructed residual blocks 213 may also be referred to as transform blocks 313. The conversion may be an inverse transform, such as an inverse DCT, an inverse DST, an inverse integer transform, or a fundamentally similar inverse transform process. The inverse transform processing module 312 may be further configured to receive transform parameters or corresponding information from the encoded snapshot data 21 (e.g., by parsing and/or decoding, e.g., by entropy decoder 304) to determine a transform to be applied to dequantized coefficients 311.

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

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

ФильтрацияFiltration

Модуль 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Модуль 320 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением дискретных отсчетов (SAO) или один или более других фильтров, например адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любое их сочетание. В одном примере модуль 220 контурного фильтра может содержать фильтр устранения блочности, фильтр SAO и фильтр ALF. Порядок процесса фильтрации может быть фильтром расформирования блоков, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивным внутриконтурным преобразователем). Этот процесс выполняется перед расформированием блоков. В другом примере процесс фильтрации расформирования блоков может также применяться к внутренним краям подблока, например краям аффинных подблоков, краям подблоков ATMVP, краям преобразования подблоков (SBT) и краям внутри подблока (ISP). Хотя модуль 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях модуль 320 контурного фильтра может быть реализован как постконтурный фильтр.A loop filter module 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 module 320 may include one or more loop filters, such as a deblocking filter, an adaptive sample offset (SAO) filter, or one or more other filters, such as an adaptive loop filter (ALF), a noise reduction filter (NSF), or any their combination. In one example, loop filter module 220 may include a deblocking filter, an SAO filter, and an ALF filter. The order of the filtering process can be block deblocking filter, SAO and ALF. Another example adds a process called luminance chroma scaling (LMCS) mapping (namely, adaptive in-loop converter). This process is performed before the blocks are disbanded. In another example, the deblock filtering process may also be applied to inner subblock edges, such as affine subblock edges, ATMVP subblock edges, subblock transform (SBT) edges, and intrasubblock (ISP) edges. Although loop filter module 320 is shown in FIG. 3 as a loop filter, in other configurations, loop filter module 320 may be implemented as a post-loop filter.

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

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

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

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

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

Когда видеосегмент кодируется как сегмент с интра-кодированием (I), модуль 354 интра-предсказания модуля 360 применения режима конфигурируется для генерации блока 365 предсказания для блока снимка текущего видеосегмента на основе сигнального режима интра-предсказания и данных из ранее декодированные блоки текущего снимка. Когда видеоиснимок кодируется с интер-кодированием (то есть B или P) сегмент, модуль 344 интер-предсказания (например, модуль компенсации движения) модуля 360 применения режима конфигурируется для создания блоков 365 предсказания для видеоблока текущего видео. сегмент на основе векторов движения и других элементов синтаксиса, полученных от модуля 304 энтропийного декодирования. Для интер-предсказания блоки предсказания могут быть созданы из одного из опорных снимков в одном из списков опорных снимков. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных снимков, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп клеток (например, групп видеоклеток) и/или клеток (например, видеоклеток) в дополнение или альтернативно к сегментам (например, видеосегментам), например, видео может быть кодировано с использованием групп I, P или B клеток и/или клеток.When a video segment is encoded as an intra-encoded segment (I), the intra-prediction module 354 of the mode applying module 360 is configured to generate a prediction block 365 for the snapshot block of the current video segment based on the intra-prediction signal mode and data from previously decoded current snapshot blocks. When a video is encoded with an inter-encoding (ie, B or P) segment, an inter-prediction module 344 (eg, a motion compensation module) of the mode applying module 360 is configured to create prediction blocks 365 for the video block of the current video. segment based on motion vectors and other syntax elements obtained from entropy decoding module 304. For inter-prediction, prediction blocks can be created from one of the reference pictures in one of the reference picture lists. Video decoder 30 may create reference frame lists, List 0 and List 1, using default construction techniques based on reference pictures stored in DPB 330. The same or similar may be used for or through embodiments using groups of cells (e.g., groups of video cells ) and/or cells (eg, video cells) in addition to or alternatively to segments (eg, video segments), for example, video may be encoded using groups of I, P or B cells and/or cells.

Модуль 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеосегмента посредством анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, модуль 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков видеосегмента, типа сегмента интер-предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информация о конструкции для одного или более списков опорных снимков для сегмента, векторы движения для каждого видеоблока с интер-кодированием сегмента, статус интер-предсказания для каждого видеоблока с интер-кодированием сегмента и другие информация для декодирования видеоблоков в текущем видеосегменте. То же самое или подобное может применяться для вариантов осуществления или посредством вариантов осуществления с использованием групп клеток (например, групп видеоклеток) и/или клеток (например, видеоклеток) в дополнение или альтернативно к сегментам (например, видеосегментам), например, видео может быть кодировано с использованием групп I, P или B клеток и/или клеток.The mode applying module 360 is configured to determine prediction information for a video block of the current video segment by analyzing motion vectors or related information and other syntax elements, and uses the prediction information to create prediction blocks for the current video block to be decoded. For example, mode application module 360 uses some of the received syntax elements to determine the prediction mode (eg, intra or inter prediction) used to encode video blocks of a video segment, type of inter-prediction segment (eg, B-segment, P-segment, or GPB segment ), design information for one or more reference picture lists for a segment, motion vectors for each segment inter-encoded video block, inter-prediction status for each segment inter-encoded video block, and other information for decoding video blocks in the current video segment. The same or similar may be used for or through embodiments using groups of cells (e.g., groups of video cells) and/or cells (e.g., video cells) in addition to or alternatively to segments (e.g., video segments), for example, video may be coded using groups I, P or B cells and/or cells.

Варианты осуществления видеодекодера 30, как показано на фиг.3, могут быть выполнены с возможностью разбиения и/или декодирования снимка с использованием сегментов (также называемых видео сегментами), при этом снимок может быть разделен на или декодировано с использованием одного или более сегментов (обычно без перекрытия), и каждый сегмент может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, клеток (tile) (H.265/HEVC и VVC) или фрагментов (brick) (VVC)).Embodiments of video decoder 30, as shown in FIG. 3, may be configured to split and/or decode a picture using segments (also called video segments), wherein the picture may be divided into or decoded using one or more segments (usually without overlap), and each segment may contain one or more blocks (eg, CTU) or one or more groups of blocks (eg, tiles (H.265/HEVC and VVC) or bricks (VVC)).

Варианты осуществления видеодекодера 30, как показано на фиг.3, могут быть выполнены с возможностью разбиения и/или декодирования снимка с использованием групп сегментов/клеток (также называемых группами клеток) и/или клеток (также называемых видеоклетками), при этом снимок может быть разделен на или декодировано с использованием одной или более групп сегментов/клеток (обычно не перекрывающихся), и каждая группа сегментов/клеток может содержать, например, один или более блоков (например, CTU) или одну или более клеток, при этом каждая клетка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.Embodiments of video decoder 30, as shown in FIG. 3, may be configured to partition and/or decode a picture using groups of segments/cells (also called groups of cells) and/or cells (also called video cells), wherein the picture may be divided into or decoded using one or more groups of segments/cells (usually not overlapping), and each group of segments/cells may contain, for example, one or more blocks (e.g., CTUs) or one or more cells, wherein each cell, for example, may be rectangular in shape and may contain one or more blocks (eg, CTUs), such as full or fractional blocks.

Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 кодированного снимка. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без модуля 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь модуль 310 обратного квантования и модуль 312 обработки обратного преобразования, объединенные в один модуль.Other embodiments of the video decoder 30 may be used to decode the encoded picture 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 module 312 for certain blocks or frames. In another implementation, video decoder 30 may have an inverse quantization module 310 and an inverse transform processing module 312 combined into one module.

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

Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения подблока в аффинном, планарном режимах, режиме ATMVP, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предварительно определенным диапазоном согласно его представляющему биту. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1)~2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth равна 16, то диапазон составляет -32768~32767; если bitDepth равна 18, то диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех подблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех подблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения согласно bitDepth.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 subblock motion vectors, planar mode motion vectors, ATMVP mode vectors, temporary motion vectors, and the like) . For example, the value of a motion vector is limited to a predetermined 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 16, then the range is -32768~32767; if bitDepth is 18, then the range is -131072~131071. For example, the value of the resulting motion vector (eg, the MV of four 4x4 subblocks in one 8x8 block) is limited such that the maximum difference between the entire portions of the MV of the four 4x4 subblocks is no more than N pixels, eg, no more than 1 pixel. Here are two ways to limit the motion vector according to bitDepth.

Фиг.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 disclosure. Video encoding apparatus 400 is suitable for implementing the disclosed embodiments as 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) modules 420 for receiving data; a processor, logical unit, or central processing unit (CPU) 430 for processing data; transmitter (Tx) modules 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-electrical (OE) components and electrical-optical (EO) components connected to input ports 410, receiver modules 420, transmitter modules 440, and output ports 450 to output or receive optical or electrical signals.

Процессор 430 реализован аппаратно и программно. Процессор 430 может быть реализован как одна или более микросхем ЦП, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, модулями 420 приемника, модулями 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Таким образом, разрешение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает преобразование устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.The 430 processor is implemented in hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (eg, as a multi-core processor), FPGA, ASIC, and DSP. Processor 430 communicates with input ports 410, receiver modules 420, transmitter modules 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. Thus, the resolution of the encoding unit 470 provides a significant improvement in the functionality of the video encoding apparatus 400 and allows the video encoding apparatus 400 to be converted to 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 program execution. Memory 460 may be, for example, volatile and/or non-volatile and may be read-only memory (ROM), random access memory (RAM), ternary content addressable 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 may be used as one or both of a source device 12 and a 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 currently existing or developed in the future. Although the disclosed implementations can be implemented with a single processor, as shown, for example, processor 502, speed and efficiency benefits can be achieved 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 a read-only memory (ROM) or random access memory (RAM) device in an implementation. The memory 504 may be any other suitable type of storage device. Memory 504 may include code and data 506 that is accessed by processor 502 using bus 512. Memory 504 may further include an operating system 508 and application programs 510, application programs 510 including at least one program that allows 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.

Ниже приведены некоторые связанные примеры, и отмечается, что в качестве справочного материала используется документ JVET-N1002, посвященный собранию JVET.The following are some related examples and note that the JVET meeting document JVET-N1002 is used as reference.

I. Предсказание со слиянием:I. Prediction with fusion:

Список потенциально подходящих вариантов на слияние строится посредством включения следующих пяти типов потенциально подходящих вариантов в следующем порядке:The list of potential merger candidates is constructed by including the following five types of potential candidates in the following order:

1) Пространственный MVP из пространственных соседних CU;1) Spatial MVP from spatial neighboring CUs;

2) Временной MVP из совмещенных CU;2) Temporary MVP from combined CUs;

3) MVP на основе истории из таблицы FIFO;3) MVP based on history from the FIFO table;

4) Попарный средний MVP;4) Pairwise average MVP;

5) Нулевые MV.5) Zero MVs.

Размер списка слияния указывается в заголовке фрагмента, а максимально допустимый размер списка слияния - это целое число, например число может быть 6. Для каждого кода CU в режиме слияния кодируется индекс лучшего потенциально подходящего варианта на слияние. В этом сеансе представлен процесс генерации каждой категории потенциально подходящих вариантов на слияние.The size of the merge list is specified in the fragment header, and the maximum allowed size of the merge list is an integer, for example the number could be 6. For each CU code in merge mode, the index of the best potential merge candidate is encoded. This session presents the process for generating each category of potential merge candidate.

(1) Выведение пространственных потенциально подходящих вариантов(1) Derivation of spatial potential candidates

Например, среди потенциально подходящих вариантов, расположенных в положениях, изображенных на фигуре 6, выбираются максимум четыре потенциально подходящего варианта на слияние. Порядок вывода: A0, B0, B1, A1 и B2. Положение B2 рассматривается только тогда, когда какой-либо CU положения A0, B0, B1, A1 недоступно (например, потому что оно принадлежит другому сегменту или клетке) или интра-кодировано. После добавления потенциально подходящего варианта в положение A1 добавление оставшихся потенциально подходящих вариантов подвергается проверке на избыточность, которая гарантирует, что потенциально подходящие варианты с одинаковой информацией о движении будут исключены из списка. В возможном варианте реализации рассматриваются только пары, соединенные стрелкой на фигуре 7, и потенциально подходящий вариант добавляется в список только в случае, при котором соответствующий потенциально подходящий вариант, используемый для проверки избыточности, не имеет той же самой информации о движении.For example, from among the potential candidates located at the positions depicted in Figure 6, a maximum of four potential candidates are selected for fusion. Output order: A0, B0, B1, A1 and B2. Position B2 is considered only when any CU of position A0, B0, B1, A1 is not available (for example, because it belongs to another segment or cell) or is intra-coded. After adding a potential candidate to position A1, the addition of the remaining potential candidates is subjected to a redundancy check, which ensures that potential candidates with the same motion information are eliminated from the list. In an exemplary embodiment, only the pairs connected by the arrow in Figure 7 are considered and a candidate is added to the list only if the corresponding candidate used for redundancy testing does not have the same motion information.

(2) Выведение временных потенциально подходящих вариантов(2) Derivation of temporary potential suitable options

Например, в список добавляется только один потенциально подходящий вариант. В частности, при выведении этого временного потенциально подходящего варианта на слияние масштабированный вектор движения выводится на основе совмещенного CU, принадлежащего совмещенному опорному снимку. Список опорных снимков, который должен использоваться для выведения совмещенного CU, явно указывается в заголовке сегмента. Масштабированный вектор движения для временного потенциально подходящего варианта на слияние получается, как показано пунктирной линией на фигуре 8, который масштабируется от вектора движения совмещенного CU с использованием расстояний POC, tb и td, где tb определяется как разность POC между опорным снимком текущего снимка и текущим снимком и td определяется как разность POC между опорным снимком совмещенного снимка и совмещенным снимком. Индекс опорного снимка временного потенциально подходящего варианта на слияние устанавливается равным нулю.For example, only one potentially suitable option is added to the list. Specifically, when inferring this temporary candidate candidate for fusion, a scaled motion vector is inferred based on the fused CU belonging to the fused reference image. The list of reference snapshots that should be used to derive the co-located CU is explicitly specified in the segment header. The scaled motion vector for the temporary potential fusion candidate is obtained as shown by the dashed line in Figure 8, which is scaled from the motion vector of the merged CU using the POC distances, tb and td, where tb is defined as the difference in POC between the reference snapshot of the current snapshot and the current snapshot and td is defined as the POC difference between the reference image of the fused image and the fused image. The reference snapshot index of the temporary merge candidate is set to zero.

Следует отметить, что POC (порядковый номер снимка) означает переменную, которая связана с каждым снимком, однозначно идентифицирует связанный снимок среди всех снимков в CVS (кодированной видеопоследовательности), и, когда связанный снимок должен быть выведен из буфера декодированных снимков, указывает положение связанного снимка в порядке вывода относительно положений порядка вывода других снимков в том же CVS, которые должны быть выведены из буфера декодированных снимков.It should be noted that POC (Photo Sequence Number) refers to a variable that is associated with each shot, uniquely identifies the associated shot among all the shots in the CVS (coded video sequence), and, when the related shot is to be removed from the decoded snapshot buffer, indicates the position of the associated shot in output order relative to the output order positions of other snapshots in the same CVS that are to be output from the decoded snapshot buffer.

(3) Выведение потенциально подходящих вариантов на слияние на основе истории(3) Identification of potentially suitable merger options based on history

Потенциально подходящие варианты на слияние MVP на основе истории (HMVP) добавляются в список слияния после пространственных MVP и TMVP. Информация о движении ранее кодированного блока сохраняется в таблице и используется как MVP для текущего CU. Таблица с множеством потенциально подходящих вариантов HMVP поддерживается в процессе кодирования/декодирования. Таблица сбрасывается при обнаружении новой строки CTU. Всякий раз, когда имеется CU с интер-кодированием, не относящийся к подблоку, соответствующая информация о движении добавляется к последней записи таблицы в качестве нового потенциально подходящего варианта HMVP. Последние несколько потенциально подходящих вариантов HMVP в таблице проверяются по порядку и вставляются в список потенциально подходящих вариантов после потенциально подходящего варианта TMVP. Проверка избыточности применяется к потенциально подходящим вариантам HMVP к пространственному или временному потенциально подходящему варианту на слияние.History-based MVP (HMVP) merge candidates are added to the merge list after spatial MVPs and TMVPs. The movement information of the previously encoded block is stored in a table and used as MVP for the current CU. A table of many potential HMVP candidates is maintained during the encoding/decoding process. The table is reset when a new CTU row is encountered. Whenever there is an inter-encoded CU not belonging to a sub-block, the corresponding motion information is added to the last table entry as a new potential candidate HMVP. The last few HMVP candidates in the table are checked in order and inserted into the list of potential candidates after the TMVP candidate. A redundancy check is applied to HMVP candidates for spatial or temporal merger candidates.

(4) Выведение попарных средних потенциально подходящих вариантов на слияние(4) Derivation of pairwise averages of potentially suitable options for merging

Попарные средние потенциально подходящие варианты генерируются посредством усреднения предварительно заданных пар потенциально подходящих вариантов в существующем списке потенциально подходящих вариантов на слияние, и предварительно заданные пары задаются как {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}, где числа обозначают индексы слияния в списке потенциально подходящих вариантов на слияние. Усредненные векторы движения рассчитываются отдельно для каждого опорного списка. Если оба вектора движения доступны в одном списке, эти два вектора движения усредняются, даже если они указывают на разные опорные снимки; если доступен только один вектор движения, то используют его напрямую; если вектор движения недоступен, оставляют этот список недействительным. Pairwise averages of potential candidates are generated by averaging the predefined pairs of potential candidates in the existing list of potential merge candidates, and the predefined pairs are specified as {(0, 1), (0, 2), (1, 2), (0 , 3), (1, 3), (2, 3)}, where the numbers indicate the merge indices in the list of potentially suitable merge options. Averaged motion vectors are calculated separately for each reference list. If both motion vectors are available in the same list, the two motion vectors are averaged, even if they point to different reference shots; if only one motion vector is available, then use it directly; if the motion vector is not available, leave this list invalid.

(5) Когда список слияния не заполнен после добавления попарных средних потенциально подходящих вариантов на слияние, нулевые MVP вставляются в конец до тех пор, пока не встретится максимальное количество потенциально подходящих вариантов на слияние.(5) When the merge list is not full after adding pairwise averages of potential merge candidates, zero MVPs are inserted at the end until the maximum number of potential merge candidates is encountered.

II. Би-предсказаниеII. Bi-prediction

Интер-предсказание использует временную корреляцию между снимками, чтобы получить предсказание с компенсацией движения (MCP) для блока дискретных отсчетов изображения. Для каждого блока может быть найден соответствующий блок в ранее декодированном снимке, который служит предиктором. Положение блока в ранее декодированном снимке указывается вектором движения (Δx, Δy), где Δx задает горизонтальное, а Δy задает вертикальное смещение относительно положения текущего блока. Векторы движения (Δx, Δy) могут иметь дробную точность дискретного отсчета для более точного захвата движения нижележащего объекта. Интерполяция применяется к опорным снимкам для выведения сигнала предсказания, когда соответствующий вектор движения имеет дробную точность дискретного отсчета. Ранее декодированный снимок упоминается как опорный снимок и обозначается индексом Δt опорного снимка в списке опорных снимков.Inter-prediction uses the temporal correlation between snapshots to produce a motion-compensated prediction (MCP) for a block of sampled images. For each block, a corresponding block in a previously decoded snapshot can be found, which serves as a predictor. The position of a block in a previously decoded snapshot is indicated by a motion vector (Δx, Δy), where Δx specifies the horizontal and Δy specifies the vertical offset relative to the position of the current block. Motion vectors (Δx, Δy) can have fractional sampling precision to more accurately capture the motion of the underlying object. Interpolation is applied to reference images to output a prediction signal when the corresponding motion vector has fractional sample precision. The previously decoded picture is referred to as a reference picture and is designated by the reference picture index Δt in the reference picture list.

В случае би-предсказания (по сравнению с уни-предсказанием, которое использует один набор данных о движении) два набора данных о движении (Δx0, Δy0, Δt0 и Δx1, Δy1, Δt1) используются для генерации двух MCP (могут быть из разных снимков или одного и того же снимка), которые затем объединяются для получения окончательного MCP. Как правило, это выводится посредством усреднения. В случае взвешенного предсказания к каждому MCP могут быть применены разные весовые коэффициенты. Опорные снимки, которые можно использовать в би-предсказании, хранятся в двух отдельных списках, а именно в списке 0 и списке 1.In the case of bi-prediction (versus uni-prediction, which uses one set of motion data), two sets of motion data (Δx0, Δy0, Δt0 and Δx1, Δy1, Δt1) are used to generate two MCPs (may be from different snapshots or the same snapshot), which are then combined to produce the final MCP. Typically this is derived by averaging. In the case of weighted prediction, different weights can be applied to each MCP. The reference snapshots that can be used in bi-prediction are stored in two separate lists, namely list 0 and list 1.

III. Хранение информации о движенииIII. Storing traffic information

После выполнения компенсации движения информация о движении (уни-предсказания или би-предсказания), связанная с блоком предсказания, сохраняется в памяти. Сохраненная информация о движении используется в качестве опорной информации для будущего блока (CU/PU), например, посредством пространственного или временного предсказания вектора движения.After motion compensation is performed, motion information (uni-prediction or bi-prediction) associated with the prediction block is stored in memory. The stored motion information is used as reference information for a future unit (CU/PU), for example, through spatial or temporal motion vector prediction.

В некоторых примерах хранение информации о движении выполняется с использованием двумерного массива подблоков информации о движении или модулей хранения информации о движении. Пространственное разрешение двумерного массива может отличаться от пространственного разрешения подлежащего кодированию снимка. В одном примере более низкое разрешение модуля хранения информации о движении используется для экономии места в памяти. Например, 16×16 дискретных отсчетов яркости соответствуют одному модулю хранения информации о движении, что означает, что каждый дискретный отсчет в 16×16 дискретных отсчетах яркости содержит одинаковую информацию о движении, и одна и та же информация о движении хранится в одном блоке хранения информации о движении, который соответствует этим 16×16 дискретным отсчетам яркости. Другими словами, модуль хранения информации о движении содержит информацию интер-предсказания соответствующего блока предсказания, который состоит из 16×16 дискретных отсчетов яркости.In some examples, motion information storage is performed using a two-dimensional array of motion information subblocks or motion information storage modules. The spatial resolution of the two-dimensional array may differ from the spatial resolution of the image to be encoded. In one example, the lower resolution of the motion storage module is used to save memory space. For example, 16×16 luminance samples correspond to one motion information storage unit, which means that each sample in 16×16 luminance samples contains the same motion information, and the same motion information is stored in one information storage unit about motion, which corresponds to these 16x16 discrete brightness samples. In other words, the motion information storage module contains inter-prediction information of the corresponding prediction block, which consists of 16×16 luminance samples.

Также следует отметить, что 16×16 дискретных отсчетов яркости означают набор дискретных отсчетов яркости, который является массивом двумерных дискретных отсчетов, а ширина и высота массива двумерных дискретных отсчетов равны 16. Один модуль хранения информации о движении может также соответствовать 8×8 дискретным отсчетам яркости, 4×4 дискретным отсчетам яркости или другим NxM дискретным отсчетам яркости или дискретным отсчетам цветности, N и M являются положительными целыми числами. И понятно, что меньший размер модуля хранения информации о движении позволяет лучше предсказывать вектор движения, но требует больше места в памяти. Хранение вектора движения для блока предсказания размером в 8×8 дискретных отсчетов яркости показано на фигуре 9. Информация о движении блока предсказания, обозначенная как Mv0, хранится в каждом модуле хранения вектора движения 2×2.It should also be noted that 16x16 luminance samples means a set of luminance samples, which is an array of two-dimensional samples, and the width and height of the two-dimensional sample array is 16. One motion information storage module can also correspond to 8x8 luminance samples , 4x4 luminance samples or other NxM luminance samples or chrominance samples, N and M are positive integers. And it is clear that the smaller size of the motion information storage module makes it possible to better predict the motion vector, but requires more memory space. Motion vector storage for a prediction block of size 8x8 luminance samples is shown in FIG. 9. Motion information of the prediction block, denoted as Mv0, is stored in each 2x2 motion vector storage unit.

III. Треугольное разбиение для интер-предсказанияIII. Triangular partitioning for inter-prediction

Например, режим треугольного разбиения применяется только к CU размером 8×8 или больше, закодированным в режиме пропуска или слияния. Сигнализируется флаг уровня ACU, чтобы указать, применяется ли режим треугольного разбиения или нет.For example, triangular split mode only applies to CUs of size 8x8 or larger encoded in skip or merge mode. The ACU level flag is signaled to indicate whether the triangular split mode is applied or not.

CU в режиме треугольного разбиения равномерно разделяется на два треугольных разбиения, используя либо диагональное разделение, либо антидиагональное разделение (Фиг. 10). Каждое треугольное разбиение в CU интер-предсказано с использованием собственного движении; для каждого разбиения разрешено только уни-предсказание, то есть каждое разбиение имеет один вектор движения и один опорный индекс. Ограничение движения с уни-предсказанием применяется для того, чтобы гарантировать, что, как и при обычном би-предсказании, для каждого CU требуются только два предсказания с компенсацией движения. Движение с уни-предсказанием для каждого разбиения получается непосредственно из списка потенциально подходящих вариантов на слияние, созданного для предсказания со слиянием, упомянутого выше, и выбор движения с уни-предсказанием из заданного потенциально подходящего варианта на слияние в списке осуществляется в соответствии с процедурой «построение списка потенциально подходящих вариантов с уни-предсказанием». После предсказания каждого из треугольных разбиений (разделов) значения дискретных отсчетов вдоль диагонального или антидиагонального края корректируются с использованием обработки смешивания с адаптивными весовыми коэффициентами. Наконец, сохраняется поле движения CU, предсказанное с использованием режима треугольного разбиения.The CU in triangular partitioning mode is evenly divided into two triangular partitions using either diagonal partitioning or anti-diagonal partitioning (Fig. 10). Each triangular partition in the CU is inter-predicted using its own motion; For each partition, only uni-prediction is allowed, that is, each partition has one motion vector and one reference index. Uni-prediction motion constraint is applied to ensure that, like conventional bi-prediction, only two motion-compensated predictions are required for each CU. The uni-prediction motion for each split is obtained directly from the list of potential fusion candidates created for the fusion prediction mentioned above, and the selection of the uni-prediction motion from the given potential fusion candidate in the list is carried out in accordance with the "build" procedure list of potentially suitable options with uni-prediction.” After each of the triangular partitions is predicted, the sample values along the diagonal or anti-diagonal edge are adjusted using blending processing with adaptive weights. Finally, the CU motion field predicted using the triangular partitioning mode is preserved.

(1) Построение списка потенциально подходящих вариантов с уни-предсказанием(1) Constructing a list of potentially suitable options with uni-prediction

Учитывая индекс потенциально подходящего варианта на слияние, вектор движения с уни-предсказанием выводится из списка потенциально подходящих вариантов на слияние, построенного для предсказания со слиянием, упомянутого выше, в качестве примера на фигуре 11. Для потенциально подходящего варианта в списке его вектор движения LX с X, равным четности значения индекса потенциально подходящего варианта на слияние, используется в качестве вектора движения с уни-предсказанием для режима треугольного разбиения. Эти векторы движения отмечены знаком «x» на фигуре 11. В случае, при котором соответствующий вектор движения LX не существует, вектор движения L(1-X) того же потенциально подходящего варианта в списке потенциально подходящих вариантов предсказания со слиянием используется в качестве вектора движения с уни-предсказанием для режима треугольного разбиения.Given the index of a potential merge candidate, the uni-prediction motion vector is derived from the list of potential merge candidates constructed for the merge prediction mentioned above as an example in Figure 11. For a potential candidate in the list, its motion vector LX with X, equal to the parity of the index value of the potential fusion candidate, is used as the uni-prediction motion vector for the triangular partitioning mode. These motion vectors are marked with "x" in Figure 11. In the case where a corresponding motion vector LX does not exist, the motion vector L(1-X) of the same candidate candidate in the fusion prediction candidate candidate list is used as the motion vector with uni-prediction for the triangular partitioning mode.

(2) Смешивание вдоль края треугольного разбиения(2) Blending along the edge of the triangular partition

После предсказания каждого треугольного разбиения с использованием его собственного движения к двум сигналам предсказания применяется смешивание для выведения дискретных отсчетов вокруг диагонального или антидиагонального края. В процессе смешивания используются следующие весовые коэффициенты: {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} для яркости и {6/8, 4/8 , 2/8} для цветности, как показано на фигуре 12.After each triangular partition is predicted using its own motion, mixing is applied to the two prediction signals to derive discrete samples around the diagonal or antidiagonal edge. The following weighting factors are used during the blending process: {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} for brightness and {6/8, 4/8, 2 /8} for chroma, as shown in Figure 12.

(3) Хранение поля движения(3) Motion field storage

Например, векторы движения CU, закодированные в режиме треугольного разбиения, хранятся в модулях 4×4. В зависимости от положения каждого модуля 4×4 сохраняются векторы движения с уни- предсказанием или би-предсказанием. Обозначим Mv1 и Mv2 как векторы движения с уни-предсказанием для разбиения 1 и разбиения 2, соответственно. Если модуль 4×4 расположен в не взвешенной области, показанной в примере на фигуре 12, для этого модуля 4×4 сохраняется либо Mv1, либо Mv2. В противном случае (если модуль 4×4 находится во взвешенной области) сохраняется вектор движения би-предсказания. Вектор движения би-предсказания выводится из Mv1 и Mv2 в соответствии со следующим процессом:For example, CU motion vectors encoded in triangular partitioning mode are stored in 4x4 units. Depending on the position of each 4x4 module, motion vectors are stored with uni-prediction or bi-prediction. Let us denote Mv1 and Mv2 as the uni-prediction motion vectors for partition 1 and partition 2, respectively. If a 4x4 module is located in the unweighted region shown in the example of Figure 12, either Mv1 or Mv2 is stored for that 4x4 module. Otherwise (if the 4x4 module is in the weighted region), the bi-prediction motion vector is preserved. The bi-prediction motion vector is derived from Mv1 and Mv2 according to the following process:

1) Если Mv1 и Mv2 взяты из разных списков опорных снимков (один из L0, а другой из L1), то Mv1 и Mv2 просто объединяются для формирования вектора движения с би-предсказанием;1) If Mv1 and Mv2 are taken from different reference snapshot lists (one from L0 and the other from L1), then Mv1 and Mv2 are simply combined to form a bi-predictive motion vector;

2) В противном случае, если Mv1 и Mv2 принадлежат одному и тому же списку, и без ограничения общности считают, что они оба из L0. 2) Otherwise, if Mv1 and Mv2 belong to the same list, and without loss of generality consider that they are both from L0.

В таком случае:In this case:

Если опорный снимок Mv2 (или Mv1) появляется в L1, то этот Mv2 (или Mv1) преобразуется в вектор движения L1 с использованием этого опорного снимка в L1. Затем два вектора движения объединяются для формирования вектора движения с би-предсказанием.If a reference shot Mv2 (or Mv1) appears in L1, then that Mv2 (or Mv1) is converted to a motion vector of L1 using that reference shot in L1. The two motion vectors are then combined to form a bi-predictive motion vector.

В противном случае вместо движении с би-предсказанием сохраняется только движение Mv1 с уни-предсказанием.Otherwise, instead of the bi-prediction motion, only the Mv1 uni-prediction motion is stored.

В качестве другого примера хранение вектора движения для режима треугольного разбиения показано на фигуре 13.As another example, motion vector storage for triangular mode is shown in Figure 13.

IV. Геометрическое разбиение на промежуточные блоки IV. Geometric partition into intermediate blocks

В режиме треугольного разбиения два подблока разделены отделительной линией, а направление отделительной линии составляет 45 градусов или 135 градусов. Также возможны другие углы разбиения и пропорции разбиения, которые называются режимом GEO (геометрического разбиения) в настоящей заявке, например, как показано на фигуре 14.In triangular split mode, two sub-blocks are separated by a separating line, and the direction of the dividing line is 45 degrees or 135 degrees. Other splitting angles and splitting proportions are also possible, which are referred to as GEO (geometric splitting) mode in this application, for example, as shown in Figure 14.

Например, общее количество GEO-разбиений может быть 140. Это число оказалось оптимальным из-за баланса между гибкостью и битовой стоимостью. Дополнительная сигнализация для GEO требует сигнализации угла α и смещения отделительной линии относительно центра блока ρ. α представляет собой квантованный угол от 0 до 360 градусов с отделением в 11,25 градусов, а ρ представляет собой расстояние с 5 различными значениями. Значение α и ρ показано на фигуре 15.For example, the total number of GEO partitions could be 140. This number was found to be optimal due to the balance between flexibility and bit cost. Additional signaling for GEO requires signaling the angle α and the offset line relative to the block center ρ. α is a quantized angle from 0 to 360 degrees with a separation of 11.25 degrees, and ρ is a distance with 5 different values. The value of α and ρ is shown in Figure 15.

Понятно, что в области техники кодирования видео, как правило, процесс предсказания, выполняемый на стороне кодера и на стороне декодера, аналогичен, за исключением того, что дополнительная информация выделяется посредством анализа из битового потока на стороне декодера, и дополнительная информация определяется предварительно установленным правилом, таким как способ оптимизации скорости к искажению (RDO). Например, для получения дискретных отсчетов предсказания в режиме GEO на стороне декодера применяются следующие этапы:It is understood that in the field of video encoding technology, generally, the prediction process performed at the encoder side and at the decoder side is similar, except that additional information is extracted by analysis from the bit stream at the decoder side, and the additional information is determined by a preset rule , such as the Rate Distortion Optimization (RDO) method. For example, to obtain discrete prediction samples in GEO mode, the following steps are applied at the decoder side:

S101: Определение пропорции разбиения для текущего блока.S101: Determine the splitting proportion for the current block.

Синтаксис элемента geo_partition_idx выделяется посредством анализа из битового потока, который используется в качестве индекса для таблицы поиска, в которой хранятся пары α и ρ. В примере α и ρ представлены индексом угла и индексом расстояния, соответственно.The syntax of the geo_partition_idx element is extracted by parsing from the bitstream, which is used as an index to the lookup table that stores the α and ρ pairs. In the example, α and ρ are represented by an angle index and a distance index, respectively.

S102: Получение первого режима предсказания для первого подблока и второй режим предсказания для второго подблока.S102: Obtaining a first prediction mode for the first sub-block and a second prediction mode for the second sub-block.

Как правило, для выведения векторов движения каждого разбиения (подблока) GEO-блока используется тот же процесс выведения списка слияния, который используется для режима треугольного разбиения. Каждое разбиение предсказывается только посредством уни-предсказания. Синтаксис двух элементов geo_merge_idx0 и geo_merge_idx1 выделяется посредством анализа из битового потока, чтобы указать режимы предсказания двух подблоков, соответственно.Typically, the same merge list derivation process that is used for the triangular partition mode is used to derive the motion vectors of each partition (subblock) of a GEO block. Each partition is predicted only by uni-prediction. The syntax of the two elements geo_merge_idx0 and geo_merge_idx1 is extracted by parsing from the bitstream to indicate the prediction modes of the two sub-blocks, respectively.

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

S103: Генерирование первого значения предсказания для первого подблока и второго значения предсказания для второго подблока, используя первый режим предсказания и второй режим предсказания, соответственно.S103: Generating a first prediction value for the first sub-block and a second prediction value for the second sub-block using the first prediction mode and the second prediction mode, respectively.

S104: Получение объединенных значений дискретных отсчетов предсказания в соответствии с объединением первого значения предсказания и второго значения предсказания в соответствии с делением, которое раскрыто на этапе S101.S104: Obtaining combined prediction sample values according to combining the first prediction value and the second prediction value according to the division disclosed in step S101.

Например, более конкретно, этап S104 включает в себя:For example, more specifically, step S104 includes:

S104-1: Для дискретного отсчета яркости в текущем блоке вычисляется расстояние дискретного отсчета (sample_dist), расстояние дискретного отсчета представляет собой расстояние от дискретного отсчета яркости до отделительной линии текущего блока, как определено на этапе S101.S104-1: For the luminance sample in the current block, a sample distance (sample_dist) is calculated, the sample distance is the distance from the luminance sample to the dividing line of the current block as determined in step S101.

В одном примере расстояние дискретного отсчета sample_dist вычисляется согласно формуле:In one example, the sample distance sample_dist is calculated according to 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).

angleIdx1 и angleIdx2 получают из битового потока или выводят на основе другой информации, полученной из битового потока, например, выводят на основе синтаксиса элемента geo_partition_idx в качестве индекса угла на этапе S101; angleIdx1 и angleIdx2 представляют собой квантованные тригонометрические параметры отделительной линии.angleIdx1 and angleIdx2 are obtained from the bitstream or output based on other information obtained from the bitstream, for example, output based on the syntax of the geo_partition_idx element as the angle index in step S101; angleIdx1 and angleIdx2 represent the quantized trigonometric parameters of the dividing line.

x и y - горизонтальное и вертикальное расстояния дискретного отсчета относительно верхнего левого дискретного отсчета текущего блока.x and y are the horizontal and vertical distances of the discrete sample relative to the top left discrete sample of the current block.

offset(distanceIdx) является функцией значения индекса (distanceIdx), значение индекса получается из битового потока или выводится на основе другой информации, полученной из битового потока, например, выводится на основе синтаксиса элемента geo_partition_idx, как индекс расстояния на этапе S101.offset(distanceIdx) is a function of the index value (distanceIdx), the index value is obtained from the bitstream or is output based on other information obtained from the bitstream, for example, is output based on the syntax of the geo_partition_idx element, such as the distance index in step S101.

Dis[] - это предварительно заданная таблица поиска.Dis[] is a predefined lookup table.

В другом примере sample_dist и sampleWeight1 могут быть получены согласно следующим уравнениям:In another example, sample_dist and sampleWeight1 can be obtained according to the following equations:

nCbR=(W>H)?(W/H):(H/W)nCbR=(W>H)?(W/H):(H/W)

sample_dist=(W>H)?(Clip3(0, 8, (x/nCbR-y)+4)):(Clip3(0, 8, (x-y/nCbR)+4)),sample_dist=(W>H)?(Clip3(0, 8, (x/nCbR-y)+4)):(Clip3(0, 8, (x-y/nCbR)+4)),

или or

sample_dist=(W>H)?(Clip3(0, 8, (H-1-x/nCbR-y)+4)):(Clip3(0, 8, (W-1-x-y/nCbR)+4)),sample_dist=(W>H)?(Clip3(0, 8, (H-1-x/nCbR-y)+4)):(Clip3(0, 8, (W-1-x-y/nCbR)+4) ),

где W - ширина текущего блока, H - высота текущего блока.where W is the width of the current block, H is the height of the current block.

Следует отметить, что приведенные выше 2 примера показывают два способа вычисления согласно целочисленной арифметике. Варианты осуществления изобретения не ограничены этими примерами вычисления sample_dist.It should be noted that the above 2 examples show two ways of calculation according to integer arithmetic. Embodiments of the invention are not limited to these examples of calculating sample_dist.

В примерах sample_dist может быть расстоянием по перпендикулярной линии между дискретным отсчетом, расположенным на (x, y), и отделительной линией. В другом примере проводят горизонтальную линию или вертикальную линию через дискретный отсчет, расположенный в (x, y). Горизонтальная линия или вертикальная линия будут иметь точку пересечения с отделительной линией. sample_dist может быть расстоянием между дискретным отсчетом, расположенным на (x, y), и точкой пересечения.In examples, sample_dist can be the perpendicular distance between the sample located at (x, y) and the dividing line. In another example, a horizontal line or a vertical line is drawn through a sample located at (x, y). The horizontal line or vertical line will have an intersection point with the separating line. sample_dist can be the distance between the sample located at (x, y) and the intersection point.

S104-2: Операция смешивания реализована как функция с sample_dist в качестве входных данных и sampleWeight1 или sampleWeight2 в качестве выходных данных.S104-2: The blending operation is implemented as a function with sample_dist as input and sampleWeight1 or sampleWeight2 as output.

Sample_dist используется для вычисления весовых коэффициентов, весовые коэффициенты используются для значения предсказания с объединением, которое выводится посредством объединения первого значения предсказания и второго значения предсказания, соответствующих первому подблоку и второму подблоку, соответственно. В примере весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2, ссылаясь на значения весовых коэффициентов, соответствующих первому значению предсказания и второму значению предсказания, соответственно. В одном примере sampleWeight1 вычисляется согласно sample_dist, sampleWeight2 вычисляется по формуле sampleWeight2=T-sampleWeight1, где T - предварительно заданная константа. В одном примере предварительно заданная константа T равняется 8, что означает, что sampleWeight1 и sampleWeight2 могут иметь значения в диапазоне значений от 0 до 8 (включая 0 и 8). В другом примере предварительно заданная константа T равняется 16.Sample_dist is used to calculate the weights, the weights are used for the concatenated prediction value, which is output by concatenating the first prediction value and the second prediction value corresponding to the first sub-block and the second sub-block, respectively. In the example, the weights are denoted as sampleWeight1 and sampleWeight2, referring to the values of the weights corresponding to the first prediction value and the second prediction value, respectively. In one example, sampleWeight1 is calculated according to sample_dist, sampleWeight2 is calculated according to the formula sampleWeight2=T-sampleWeight1, where T is a predefined constant. In one example, the predefined constant T is 8, which means that sampleWeight1 and sampleWeight2 can have values ranging from 0 to 8 (including 0 and 8). In another example, the preset constant T is 16.

Согласно одному примеру первый весовой коэффициент sampleWeight1 получается в соответствии с sample_dist и таблицей поиска. В одном примере таблица поиска используется для хранения коэффициентов фильтра. Другими словами, операция смешивания реализуется в соответствии с интерполяционной таблицей. В таком примере функция sample_dist может быть использовано в качестве индексного значения для таблицы поиска. Упомянутая функция может быть операцией деления или умножения с постоянным числом, операцией сдвига вправо на постоянную величину, операцией усечения или взятия абсолютного значения, или их сочетанием.According to one example, the first weight sampleWeight1 is obtained according to sample_dist and the lookup table. In one example, a lookup table is used to store filter coefficients. In other words, the mixing operation is implemented according to a lookup table. In such an example, the sample_dist function can be used as an index value for the lookup table. Said function may be a division or multiplication operation with a constant number, a right shift operation by a constant amount, a truncate or absolute value operation, or a combination thereof.

Операция смешивания применяется к дискретному отсчету в соответствии со значением указания в битовом потоке или к дискретному отсчету в соответствии со значением указания в битовом потоке. The mixing operation is applied to a sample according to the indication value in the bitstream or to a sample according to the indication value in the bitstream.

Например, sampleWeight1=Clip3(0, 8, f(sample_dist)). Функция f() может быть делением/сложением/умножением с операцией постоянного числа, сдвигом вправо с операцией постоянной величины, операцией получения абсолютного значения или операцией отсечения или их сочетанием.For example, sampleWeight1=Clip3(0, 8, f(sample_dist)). The function f() can be a divide/add/multiply with a constant number operation, a right shift with a constant value operation, an absolute value operation, or a truncate operation, or a combination of these.

Например, sampleWeight1 (или sampleWeight2)=Clip3(0, 8, sample_dist),For example, sampleWeight1 (or sampleWeight2)=Clip3(0, 8, sample_dist),

Например, sampleWeight1 (или sampleWeight2)=Clip3(0, 8, sample_dist+4);For example, sampleWeight1 (or sampleWeight2)=Clip3(0, 8, sample_dist+4);

Например, sampleWeight1 (или sampleWeight2)=sample_dist==4 ? 4 : sample_dist < 4 ? 0 : 8;For example, sampleWeight1 (or sampleWeight2)=sample_dist==4 ? 4: sample_dist < 4? 0 : 8;

Например, sampleWeight1 (или sampleWeight2)=Clip3(0, 8, (sample_dist - 4)*K+sample_dist);For example, sampleWeight1 (or sampleWeight2)=Clip3(0, 8, (sample_dist - 4)*K+sample_dist);

Например, sampleWeight1 (или sampleWeight2)=sample_dist == 0 ? 4 : sample_dist < 0 ? 0 : 8;For example, sampleWeight1 (or sampleWeight2)=sample_dist == 0 ? 4: sample_dist < 0? 0 : 8;

Например, sampleWeight1 (или sampleWeight2)=Clip3(0, 8, sample_dist*K+Clip3(0, 8, sample_dist+4)), K - целое число со значением больше 0. Следует отметить, что операция смешивания становится короче (следовательно, более резкой) с увеличением K. Например, когда K=4, то вторая операция смешивания становится идентичной следующему "sampleWeight=sample_dist == 0 ? 4 : sample_dist < 0 ? 0 : 8", пример которого показан на фигуре 16. Согласно одному примеру значение указателя в битовом потоке указывает значение K.For example, sampleWeight1 (or sampleWeight2)=Clip3(0, 8, sample_dist*K+Clip3(0, 8, sample_dist+4)), K is an integer with a value greater than 0. Note that the blending operation becomes shorter (hence sharper) as K increases. For example, when K=4, then the second mixing operation becomes identical to the following "sampleWeight=sample_dist == 0 ? 4 : sample_dist < 0 ? 0 : 8", an example of which is shown in Figure 16. According to one example the pointer value in the bitstream indicates the value of K.

В одном примере операция смешивания может быть реализована в виде таблицы поиска, такой как таблицы, проиллюстрированные на фигуре 17. Например, sampleWeight можно получить как geoFilter[idx], где idx получается как функция от sampleDist, а geoFilter - это одномерный линейный массив весовых коэффициентов фильтров. Например, idx=min((abs(sample_dist) + 8) >> 4, maxIdx), где maxIdx - это максимальное значение, которое может принять idx.In one example, the blending operation may be implemented as a lookup table, such as the tables illustrated in Figure 17. For example, sampleWeight may be obtained as geoFilter[idx], where idx is obtained as a function of sampleDist and geoFilter is a one-dimensional linear array of weights filters. For example, idx=min((abs(sample_dist) + 8) >> 4, maxIdx), where maxIdx is the maximum value that idx can take.

S105: сохранение информации о режиме предсказания (например, информации о движении, содержащей векторы движения или информации интра-предсказания) текущего блока в соответствии с разделением, которое раскрывается на этапе S101, и в соответствии со способом объединения, который раскрывается на этапе 104.S105: storing prediction mode information (for example, motion information containing motion vectors or intra-prediction information) of the current block in accordance with the division that is disclosed in step S101 and in accordance with the combining method that is disclosed in step 104.

В частности, в первом варианте осуществления процесса декодирования для режима GEO-предсказания:Specifically, in the first embodiment of the decoding process for the GEO prediction mode:

Этот процесс вызывается при декодировании единичного блока кодирования с MergeTriangleFlag[xCb][yCb], равным 1, или с geo_flag[xCb][yCb], равным 1.This process is called when decoding a single encoding block with MergeTriangleFlag[xCb][yCb] equal to 1 or geo_flag[xCb][yCb] equal to 1.

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

местоположение яркости (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета яркости текущего снимка,luminance location (xCb, yCb) indicating the upper left sample of the current encoding block relative to the upper left luminance sample of the current picture,

переменная cbWidth, указывающая ширину текущего блока кодирования в дискретных отсчетах яркости,variable cbWidth, indicating the width of the current encoding block in discrete brightness samples,

переменная cbHeight, указывающая высоту текущего блока кодирования в дискретных отсчетах яркости,variable cbHeight indicating the height of the current encoding block in discrete brightness samples,

векторы движения яркости в mvA и mvB с точностью до 1/16 дробного дискретного отсчета,brightness motion vectors in mvA and mvB with an accuracy of 1/16 fractional discrete count,

векторы движения цветности mvCA и mvCB,chromaticity motion vectors mvCA and mvCB,

опорные индексы refIdxA и refIdxB,reference indices refIdxA and refIdxB,

флаги predListFlagA и predListFlagB списка предсказания.flags predListFlagA and predListFlagB of the prediction list.

Результатами этого процесса являются:The results of this process are:

массив (cbWidth)x(cbHeight) predSamplesL дискретных отсчетов предсказания яркости,array (cbWidth)x(cbHeight) predSamplesL discrete samples brightness predictions,

массив (cbWidth/2)x(cbHeight/2) predSamplesCb дискретных отсчетов предсказания цветности для компонента Cb, array (cbWidth/2)x(cbHeight/2) predSamplesCb discrete samples color prediction for the Cb component,

массив (cbWidth/2)x(cbHeight/2) predSamplesCr дискретных отсчетов предсказания цветности для компонента Cr.array (cbWidth/2)x(cbHeight/2) predSamplesCr discrete samples color prediction for the Cr component.

Пусть predSamplesLAL и predSamplesLBL будут (cbWidth)x(cbHeight) массивами предсказываемых значений дискретных отсчетов яркости, а predSamplesLACb, predSamplesLBCb, predSamplesLACr и predSamplesLBCr будут (cbWidth/2)x(cbHeight/2) массивами предсказываемых значений дискретных отсчетов цветности.Let predSamplesLA L and predSamplesLB L be (cbWidth)x(cbHeight) arrays of predicted luminance sample values, and let predSamplesLA Cb , predSamplesLB Cb , predSamplesLA Cr and predSamplesLB Cr be ( cbWidth / 2)x ( cbHeight / 2) arrays of predicted brightness sample values chromaticity.

predSamplesL, predSamplesCb и predSamplesCr получаются с помощью следующих упорядоченных этапов:preSamplesL, preSamplesCband preSamplesCrare obtained with using the following ordered steps:

1. Для N, являющегося каждым из A и B, применяется следующее:1. For N being each of A and B, the following applies:

Опорный снимок, состоящий из упорядоченного двумерного массива refPicLNL дискретных отсчетов яркости и двух упорядоченных двумерных массивов refPicLNCb и refPicLNCr дискретных отсчетов цветности, выводится b с X, установленным равным predListFlagN, и refIdxX, установленным равным refIdxN, в качестве входных данных.A reference image consisting of an ordered two-dimensional array refPicLNL discrete brightness samples and two ordered two-dimensional arrays refPicLNCb and refPicLNCr of discrete chromaticity samples are output b with X, set to predListFlagN, and refIdxX set to refIdxN as input.

Массив predSamplesLNL выводится с расположением яркости(xCb, yCb), шириной sbWidth блока кодирования яркости, установленной равной cbWidth, высотой sbHeight блока кодирования яркости, установленной равной cbHeight, смещением mvOffset вектора движения, установленным равным (0, 0), вектором mvLX движения, установленным равным mvN, и опорным массивом refPicLXL, установленным равным refPicLNL, переменной bdofFlag, установленной в FALSE, и переменной cIdx, установленной равной 0 в качестве входных данных.Array predSamplesLNL is displayed from luminance location(xCb, yCb), luminance coding block width sbWidth set to cbWidth, luminance coding block height sbHeight set to cbHeight, motion vector offset mvOffset set to (0, 0), motion vector mvLX set to mvN, and reference array refPicLXL, set equal to refPicLNL, bdofFlag variable set to FALSE, and cIdx variable set to 0 as input.

Массив predSamplesLNCb выводится с расположением яркости (xCb, yCb), шириной sbWidth блока кодирования, установленной равной cbWidth/2, высотой sbHeight блока кодирования, установленной равной cbHeight/2, смещением mvOffset вектора движения, установленным равным (0, 0), вектором mvLX движения, установленным равным mvCN, и опорным массивом refPicLXCb, установленным равным refPicLNCb, переменная bdofFlag, установленной в FALSE, и переменной cIdx, установленной равной 1 в качестве входных данных.Array predSamplesLNCb is output from luminance location (xCb, yCb), encoding block width sbWidth set to cbWidth/2, encoding block height sbHeight set to cbHeight/2, motion vector offset mvOffset set to (0, 0), motion vector mvLX set to mvCN , and the reference array refPicLXCb, set equal to refPicLNCb, variable bdofFlag set to FALSE, and variable cIdx set to 1 as input.

Массив predSamplesLNCr выводится с расположением яркости (xCb, yCb), шириной sbWidth блока кодирования, установленной равной cbWidth/2, высотой sbHeight блока кодирования, установленной равной cbHeight/2, смещением mvOffset вектора движения, установленным равным (0, 0), вектором mvLX движения, установленным равным mvCN, и опорным массивом refPicLXCr, установленным равным refPicLNCr, переменной bdofFlag, установленной в FALSE (ЛОЖЬ), и переменной cIdx, установленной равной 2, в качестве входных данных.Array predSamplesLNCr displayed with location brightness (xCb, yCb), encoding block width sbWidth set to cbWidth/2, encoding block height sbHeight set to cbHeight/2, motion vector offset mvOffset set to (0, 0), motion vector mvLX set to mvCN, and reference array refPicLXCr, set equal to refPicLNCr, bdofFlag variable set to FALSE, and cIdx variable set to 2 as input.

2. Если geo_flag[xCb][yCb] равно 1, переменные angleIdx и DistanceIdx, связанные с геометрическим разбиением, устанавливаются в соответствии со значением geo_partitioning_idx[xCb][yCb], как указано в таблице 1.2. If geo_flag[xCb][yCb] is equal to 1, the angleIdx and DistanceIdx variables associated with the geometric partitioning are set according to the value of geo_partitioning_idx[xCb][yCb] as specified in Table 1.

a. Запускается процесс выведения весового коэффициента дискретного отсчета для режима слияния геометрического разбиения. Входными данными для процесса являются три упорядоченных массива sampleWeightL, sampleWeightC и motionWeight размером (cbWidth)x(cbHeight), (cbWidth/2)x(cbHeight/2) и (cbWidth/4)x(cbHeight/4), соответственно, а также переменные angleIdx, DistanceIdx, cbWidth и cbHeight.a. The process of deriving the discrete sample weight coefficient for the geometric partition merging mode starts. The input to the process is three ordered arrays sampleWeight L , sampleWeightC and motionWeight of size (cbWidth)x(cbHeight), (cbWidth/2)x(cbHeight/2) and (cbWidth/4)x(cbHeight/4), respectively, and also the variables angleIdx, distanceIdx, cbWidth and cbHeight.

b. Дискретные отсчеты предсказания внутри текущего блока кодирования яркости, predSamplesL[xL][yL] с xL=0…cbWidth - 1 и yL=0…cbHeight - 1, выводятся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима слияния с геометрическим разбиением с шириной nCbW блока кодирования , установленной равной cbWidth, высотой nCbH блока кодирования, установленной равной cbHeight, массивами дискретных отсчетов predSamplesLAL, predSamplesLBL, predWeightL и cIdx равными 0, в качестве входных данных.b. The prediction samples within the current luminance encoding block, predSamplesL[xL][yL] with xL=0...cbWidth - 1 and yL=0...cbHeight - 1, are output by calling the weighted sample prediction process for the geometric partition merging mode with width nCbW encoding block set equal to cbWidth, encoding block height nCbH set equal to cbHeight, sample arrays predSamplesLAL, predSamplesLBL, predWeightL and cIdx equal to 0, as input data.

c. Дискретные отсчеты предсказания внутри текущего блока кодирования компонента цветности Cb, predSamplesCb[xC][yC] с xC=0…cbWidth/2 - 1 и yC=0…cbHeight/2 - 1, выводятся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима слияния геометрического разбиения с шириной nCbW блока кодирования , установленной равной cbWidth/2, высотой nCbH блока кодирования, установленной равной cbHeight/2, массивами дискретных отсчетов predSamplesLACb, predSamplesLBCb, predWeightC и cIdx равными 1, в качестве входных данных.c. The prediction samples within the current Cb chroma component encoding block, predSamplesCb[xC][yC] with xC=0...cbWidth/2 - 1 and yC=0...cbHeight/2 - 1, are output by calling the weighted sample prediction process for the merge mode geometric partition with coding block width nCbW set to cbWidth/2, coding block height nCbH set to cbHeight/2, sample arrays predSamplesLACb, predSamplesLBCb, predWeightC and cIdx equal to 1, as input data.

d. Дискретные отсчеты предсказания внутри текущего блока кодирования компонента цветности Cr, predSamplesCr[xC][yC] с xC=0…cbWidth/2 - 1 и yC=0…cbHeight/2 - 1, выводятся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима слияния геометрического разбиения с шириной nCbW блока кодирования , установленной равной cbWidth/2, высотой nCbH блока кодирования, установленной равной cbHeight/2, массивами дискретных отсчетов predSamplesLACr, predSamplesLBCr, predWeightC и cIdx равными 2, в качестве входных данных.d. The prediction samples within the current Cr chrominance component encoding block, predSamplesCr[xC][yC] with xC=0…cbWidth/2 - 1 and yC=0…cbHeight/2 - 1, are output by calling the weighted sample prediction process for the merge mode geometric partition with coding block width nCbW set to cbWidth/2, coding block height nCbH set to cbHeight/2, sample arrays predSamplesLACr, predSamplesLBCr, predWeightC and cIdx equal to 2, as input data.

e. Процесс хранения вектора движения для режима геометрического слияния вызывается с расположением блока кодирования яркости (xCb, yCb), шириной cbWidth блока кодирования яркости, высотой cbHeight блока кодирования яркости, массивом motionWeight дискретных отсчетов, векторами mvA и mvB движения яркости, опорными индексами refIdxA и refIdxB и флагами predListFlagA и predListFlagB списка предсказания в качестве входных данных.e. The motion vector storage process for the geometric fusion mode is called with the luminance coding block location (xCb, yCb), luminance coding block width cbWidth, luminance coding block height cbHeight, sample motionWeight array, luminance motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and with the prediction list flags predListFlagA and predListFlagB as input.

Процесс сопоставления опорного снимка для режима треугольного слиянияReference image matching process for triangular fusion mode

Входными данными в этот процесс является следующее:The input data to this process is the following:

переменная X, представляющая список ссылок, равна 0 или 1,the variable X representing the list of links is 0 or 1,

опорный индекс refIdxN.reference index refIdxN.

Результат этого процесса:The result of this process:

опорный индекс refIdxTemp.reference index refIdxTemp.

Переменная refPicPoc выводится следующим образом:The refPicPoc variable is output as follows:

refPicPoc=(X== 0) ? RefPicList[0][refIdxN] : RefPicList[1][refIdxN] (8-878)refPicPoc=(X== 0) ? RefPicList[0][refIdxN] : RefPicList[1][refIdxN] (8-878)

Список опорных снимков refPicListTemp выводится следующим образом:The list of reference pictures refPicListTemp is displayed as follows:

refPicListTemp=(X==0)?RefPicList[1]:RefPicList[0] (8-879)refPicListTemp=(X==0)?RefPicList[1]:RefPicList[0] (8-879)

Переменная refIdxTemp получается следующим образом:The refIdxTemp variable is obtained as follows:

Переменная mapStop устанавливается равной FALSE.The mapStop variable is set to FALSE.

Для переменной refIdxm с m=0…NumRefIdxActive[1] - 1 применяется следующее, пока mapStop не будет равен FALSE:For the refIdx variablem With m=0…NumRefIdxActive[1] - 1 the following applies until mapStop is FALSE:

refIdxTemp=(refPicListTemp[refIdxm]== refPicPoc) ? refIdxm : -1 (8-880)refIdxTemp=(refPicListTemp[refIdxm]== refPicPoc) ? refIdxm : -1 (8-880)

mapStop=(refIdxTemp!= -1)? TRUE : FALSE (8-881)mapStop=(refIdxTemp!= -1)? TRUE : FALSE (8-881)

Процесс выведения весового коэффициента дискретного отсчета для режима слияния геометрического разбиенияThe process of deriving the weighting coefficient of a discrete sample for the merging mode of a geometric partition

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,two variables nCbW and nCbH, defining the width and height of the current encoding block,

две переменные angleIdx и DistanceIdx, которые определяют значения поиска угла и расстояния для текущего режима геометрического разбиения,two variables angleIdx and DistanceIdx, which define the angle and distance search values for the current geometric partitioning mode,

(nCbW)x(nCbH) массив sampleWeightL,(nCbW)x(nCbH) array sampleWeight L ,

(nCbW/2)x(nCbH/2) массив sampleWeightC,(nCbW/2)x(nCbH/2) sampleWeightC array,

(nCbW/4)x(nCbH/4) массив motionWeight.(nCbW/4)x(nCbH/4) motionWeight array.

Результатом этого процесса являются те же три массива sampleWeightL, sampleWeightC и motionWeight со значениями весовые коэффициенты для дискретного отсчета, имеющими диапазон от 0 … 8.The result of this process is the same three sampleWeight arraysL,sampleWeightC And motionWeight with values of weighting coefficients for a discrete sample, having a range from 0 ... 8.

1. Весовые коэффициенты смешивания яркости, сохраненные в sampleWeightL для текущего режима геометрического разбиения, выводятся следующим образом:1. The luminance blending weights stored in sampleWeight L for the current geometric partitioning mode are output as follows:

Устанавливаются значения следующих переменных:The following variables are set:

wIdx установлен в log2 (nCbW) - 3,wIdx is set to log2 (nCbW) - 3,

hIdx устанавливается равным log2(nCbH) - 3,hIdx is set equal to log2(nCbH) - 3,

stepOffset установлен в 64,stepOffset is set to 64,

следующие переменные устанавливаются в соответствии со сравнением (wIdx >= hIdx):the following variables are set according to the comparison (wIdx >= hIdx):

whRratio=(wIdx >= hIdx) ? wIdx - hIdx : hIdx - wIdx (8-882)whRratio=(wIdx >= hIdx) ? wIdx - hIdx : hIdx - wIdx (8-882)

wIsLargerH=(wIdx >= hIdx)? true : false (8-883)wIsLargerH=(wIdx >= hIdx)? true : false (8-883)

scaleStep=(wIdx >= hIdx)? (1 << hIdx) : (1 << wIdx) (8-884)scaleStep=(wIdx >= hIdx)? (1 << hIdx) : (1 << wIdx) (8-884)

displacementX установлено в angularIdxdisplacementX is set to angularIdx

displacementY установлено в (displacementX+8)% 32displacementY set to (displacementX+8)% 32

angleN устанавливается равным:angleN is set to:

angleN=angleIdx, если angleIdx >= 0 && angleIdx <=8,angleN=angleIdx, if angleIdx >= 0 && angleIdx <=8,

angleN=16 - angleIdx, если angleIdx > 8 && angleIdx<= 16,angleN=16 - angleIdx, if angleIdx > 8 && angleIdx<= 16,

angleN=angleIdx - 16, если angleIdx > 16 && angleIdx <=24,angleN=angleIdx - 16 if angleIdx > 16 && angleIdx <=24,

angleN=32 - angleIdx в противном случае,angleN=32 - angleIdx otherwise,

далее angleN устанавливается в следующее значение, зависящее от wIsLargerH:then angleN is set to the following value, depending on wIsLargerH:

angleN=(wIsLargerH) ? 8 - angleN : angleNangleN=(wIsLargerH) ? 8 - angleN : angleN

stepDis устанавливается в соответствии со значениями whRatio и angleN, как указано в таблице 2 и далее,stepDis is set according to the whRatio and angleN values as specified in Table 2ff.

stepSize=stepDis+stepOffsetstepSize=stepDis+stepOffset

rho устанавливается в следующее значение с использованием таблицы поиска, обозначенной как Dis, указанной в таблице 3:rho is set to the following value using the lookup table, designated Dis, listed in Table 3:

rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis[displacementX] + nCbH*Dis[displacementY] . (8-885)rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis[displacementX] + nCbH*Dis[displacementY] . (8-885)

Для каждого положения дискретного отсчета x=0… nCbW - 1 и y=0… nCbH - 1 значение sampleWeightL[x][y] выводится следующим образом:For each sample position x=0… nCbW - 1 and y=0… nCbH - 1 sampleWeight valueL[x][y] is output as follows way:

расстояние distFromLine вычисляется с использованием таблицы поиска, обозначенной как Dis, указанной в таблице 3 следующим образом:The distance distFromLine is calculated using a lookup table denoted Dis, listed in Table 3 as follows:

distFromLine=((x<<1) + 1)*Dis[displacementX] + ((y<<1) + 1))*Dis[displacementY] - rho. (8-886)distFromLine=((x<<1) + 1)*Dis[displacementX] + ((y<<1) + 1))*Dis[displacementY] - rho. (8-886)

Масштабированное расстояние distScaled получается следующим образом:The scaled distance distScaled is obtained as follows:

distScaled=min((abs(distFromLine) + 8) >> 4, 14). (8-887)distScaled=min((abs(distFromLine) + 8) >> 4, 14). (8-887)

Значение sampleWeightL[x][y] устанавливается в соответствии с таблицей поиска весовых коэффициентов фильтра, обозначенной как GeoFilter, указанной вsampleWeight valueL[x][y] is set according to the filter weight lookup table, designated GeoFilter, specified in

Таблице 4 как:Table 4 as:

sampleWeightL[x][y]=GeoFilter[distScaled], если distFromLine <= 0sampleWeight L [x][y]=GeoFilter[distScaled] if distFromLine <= 0

sampleWeightL[x][y]=8 - GeoFilter [distScaled], если distFromLine > 0sampleWeight L [x][y]=8 - GeoFilter [distScaled] if distFromLine > 0

2. Весовые коэффициенты цветности, хранящиеся в sampleWeightC для текущего режима геометрического разбиения, выводятся следующим образом:2. The chroma weights stored in sampleWeight C for the current geometric partitioning mode are output as follows:

Для каждого положения дискретного отсчета x=0… (nCbW/2) - 1 и y=0… (nCbH/2) - 1 значение sampleWeightC[x][y] выводится следующим образом:For each sample position x=0… (nCbW/2) - 1 and y=0… (nCbH/2) - 1 the sampleWeight C [x][y] value is output as follows:

sampleWeightC[x][y]=sampleWeightL[(x<<1)][(y<<1)]sampleWeight C [x][y]=sampleWeight L [(x<<1)][(y<<1)]

3. Весовые коэффициенты движения, хранящиеся в массиве motionWeight для текущего режима геометрического разбиения, выводятся следующим образом:3. The motion weights stored in the motionWeight array for the current geometric partitioning mode are output as follows:

Устанавливаются следующие переменные:The following variables are set:

threshScaler=((log2(nCbW) + log2(nCbH)) >> 1) - 1threshScaler=((log2(nCbW) + log2(nCbH)) >> 1) - 1

threshLower=32 >> threshScalerthreshLower=32 >> threshScaler

threshUpper=32 - threshLowerthreshUpper=32 - threshLower

Для каждого положения дискретного отсчета x=0… (nCbW/4) - 1 и y=0… (nCbH/4) - 1 значение motionWeight[x][y] выводится следующим образом:For each sample position x=0… (nCbW/4) - 1 and y=0… (nCbH/4) - 1 the motionWeight[x][y] value is output as follows:

Cnt=sampleWeightL[(x<<2)][(y<<2)] Cnt=sampleWeight L [(x<<2)][(y<<2)]

+ sampleWeightL[(x<<2) + 3][(y<<2)] + sampleWeight L [(x<<2) + 3][(y<<2)]

+ sampleWeightL[(x<<2)][(y<<2) + 3] + sampleWeight L [(x<<2)][(y<<2) + 3]

+ sampleWeightL[(x<<2) + 3][(y<<2) + 3] + sampleWeight L [(x<<2) + 3][(y<<2) + 3]

Значение motionWeight[x][y] равно:The motionWeight[x][y] value is:

motionWeight[x][y]=0, если Cnt <= threshLower motionWeight[x][y]=0 if Cnt <= threshLower

motionWeight[x][y]=1 , если Cnt >= threshUpper motionWeight[x][y]=1 if Cnt >= threshUpper

motionWeight[x][y]=2 , иначе motionWeight[x][y]=2 , otherwise

Процесс предсказания взвешенного дискретного отсчета для режима слияния с геометрическим разбиениемWeighted sample prediction process for fusion mode with geometric partitioning

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,two variables nCbW and nCbH, defining the width and height of the current encoding block,

два массива (nCbW)x(nCbH) predSamplesLA и predSamplesLB,two arrays (nCbW)x(nCbH) predSamplesLA and predSamplesLB,

Массив (nCbW)x(nCbH) sampleWeight,Array (nCbW)x(nCbH) sampleWeight,

переменная cIdx, указывающая индекс компонента цвета.cIdx variable indicating the index of the color component.

Результатом этого процесса является массив (nCbW)x(nCbH) pbSamples значений дискретных отсчетов предсказания.The result of this process is an array (nCbW)x(nCbH) pbSamples of prediction sample values.

Переменная bitDepth выводится следующим образом:The bitDepth variable is output as follows:

- Если cIdx равен 0, bitDepth устанавливается равной BitDepthY.- If cIdx is 0, bitDepth is set to BitDepthY.

- В противном случае bitDepth устанавливается равной BitDepthC.- Otherwise, bitDepth is set equal to BitDepthC.

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

- Переменная shift1 устанавливается равной Max(5, 17 - bitDepth).- The shift1 variable is set to Max(5, 17 - bitDepth).

- Переменная offset1 устанавливается равной 1 << (shift1 - 1).- The offset1 variable is set to 1 << (shift1 - 1).

Значения дискретных отсчетов предсказания выводятся следующим образом:The prediction sample values are output as follows:

pbSamples[х][у] =pbSamples[x][y] =

Clip3(0, (1 << bitDepth) - 1,Clip3(0, (1 << bitDepth) - 1,

(predSamplesLA[x][y] * sampleWeight[x][y](predSamplesLA[x][y] * sampleWeight[x][y]

+ predSamplesLB[x][y] * (8 - sampleWeight [x][y]) + offset1) >> shift1)+ predSamplesLB[x][y] * (8 - sampleWeight [x][y]) + offset1) >> shift1)

Хранение векторов движения для режима слияния геометрического разбиенияStoring motion vectors for geometric mesh merging mode

Этот процесс вызывается при декодировании единичного блока кодирования с geo_flag[xCb][yCb] равным 1.This process is called when decoding a single encoding block with geo_flag[xCb][yCb] equal to 1.

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

местоположение яркости (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета яркости текущего снимка,luminance location (xCb, yCb) indicating the upper left sample of the current encoding block relative to the upper left luminance sample of the current picture,

переменная cbWidth, указывающая ширину текущего блока кодирования в дискретных отсчетах яркости,variable cbWidth, indicating the width of the current encoding block in discrete brightness samples,

переменная cbHeight, указывающая высоту текущего блока кодирования в дискретных отсчетах яркости,variable cbHeight indicating the height of the current encoding block in discrete brightness samples,

массив motionWeight размером (cbWidth/4)x(cbHeight/4), содержащий индексы назначения движения,motionWeight array of size (cbWidth/4)x(cbHeight/4) containing motion destination indices,

векторы движения яркости в mvA и mvB с точностью до 1/16 дробного дискретного отсчета,brightness motion vectors in mvA and mvB with an accuracy of 1/16 fractional discrete count,

опорные индексы refIdxA и refIdxB,reference indices refIdxA and refIdxB,

флаги predListFlagA и predListFlagB списка предсказания.flags predListFlagA and predListFlagB of the prediction list.

Переменные numSbX и numSbY, определяющие количество блоков 4×4 в текущем блоке кодирования по горизонтали и вертикали, устанавливаются равными numSbX=cbWidth >> 2 и numSbY=cbHeight >> 2.The variables numSbX and numSbY, which determine the number of 4x4 blocks in the current encoding block horizontally and vertically, are set to numSbX=cbWidth >> 2 and numSbY=cbHeight >> 2.

Переменная minSb устанавливается равной min(numSbX, numSbY).The variable minSb is set equal to min(numSbX, numSbY).

Переменная refIdxTempA выводится посредством вызова процесса соотнесения опорного снимка для режима треугольного слияния с X, установленным равным predListFlagA, и refIdxN, установленным равным refIdxA, в качестве входных данных.The variable refIdxTempA is output by calling the reference snapshot mapping process for the triangular merge mode with X set to predListFlagA and refIdxN set to refIdxA as input.

Переменная refIdxTempB выводится посредством вызова процесса соотнесения опорного снимка для режима треугольного слияния с X, установленным равным predListFlagB, и refIdxN, установленным равным refIdxB, в качестве входных данных.The variable refIdxTempB is output by calling the reference snapshot mapping process for the triangular merge mode with X set to predListFlagB and refIdxN set to refIdxB as input.

Для каждого подблока 4×4 с индексом подблока (xSbIdx, ySbIdx) с xSbIdx=0…numSbX - 1 и ySbIdx=0…numSbY - 1 применяется следующее:For each 4x4 sub-block with a sub-block index (xSbIdx, ySbIdx) with xSbIdx=0…numSbX - 1 and ySbIdx=0…numSbY - 1 the following applies:

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

predFlagL0=(predListFlagA== 0) ? 1 : 0 (8-888)predFlagL0=(predListFlagA== 0) ? 1 : 0 (8-888)

predFlagL1=(predListFlagA== 0) ? 0 : 1 (8-889)predFlagL1=(predListFlagA== 0) ? 0 : 1 (8-889)

refIdxL0=(predListFlagA== 0) ? refIdxA : -1 (8-890)refIdxL0=(predListFlagA== 0) ? refIdxA : -1 (8-890)

refIdxL1=(predListFlagA== 0) ? -1 : refIdxA (8-891)refIdxL1=(predListFlagA== 0) ? -1 : refIdxA (8-891)

mvL0 [0]=(predListFlagA== 0) ? mvA[0] : 0 (8-892)mvL0 [0]=(predListFlagA== 0) ? mvA[0] : 0 (8-892)

mvL0[1]=(predListFlagA== 0) ? mvA[1]: 0 (8-893)mvL0[1]=(predListFlagA== 0) ? mvA[1]: 0 (8-893)

mvL1 [0]=(predListFlagA== 0) ? 0 : mvA[0] (8-894)mvL1 [0]=(predListFlagA== 0) ? 0 : mvA[0] (8-894)

mvL1[1]=(predListFlagA== 0) ? 0 : mvA[1] (8-895)mvL1[1]=(predListFlagA== 0) ? 0 : mvA[1] (8-895)

В противном случае, если motionWeight[xSbIdx][ySbIdx] равен 1, применяется следующее:Otherwise, if motionWeight[xSbIdx][ySbIdx] is 1, the following applies:

predFlagL0=(predListFlagB== 0) ? 1 : 0 (8-896)predFlagL0=(predListFlagB== 0) ? 1 : 0 (8-896)

predFlagL1=(predListFlagB== 0) ? 0 : 1 (8-897)predFlagL1=(predListFlagB== 0) ? 0 : 1 (8-897)

refIdxL0=(predListFlagB== 0) ? refIdxB : -1 (8-898)refIdxL0=(predListFlagB== 0) ? refIdxB : -1 (8-898)

refIdxL1=(predListFlagB== 0) ? -1 : refIdxB (8-899)refIdxL1=(predListFlagB== 0) ? -1 : refIdxB (8-899)

mvL0 [0]=(predListFlagB== 0) ? mvB[0] : 0 (8-900)mvL0 [0]=(predListFlagB== 0) ? mvB[0] : 0 (8-900)

mvL0[1]=(predListFlagB== 0) ? mvB[1]: 0 (8-901)mvL0[1]=(predListFlagB== 0) ? mvB[1]: 0 (8-901)

mvL1 [0]=(predListFlagB== 0) ? 0 : mvB[0] (8-902)mvL1 [0]=(predListFlagB== 0) ? 0 : mvB[0] (8-902)

mvL1[1]=(predListFlagB== 0) ? 0 : mvB[1] (8-903)mvL1[1]=(predListFlagB== 0) ? 0 : mvB[1] (8-903)

В противном случае (motionWeight[xSbIdx][ySbIdx] равно 2) применяется следующее:Otherwise (motionWeight[xSbIdx][ySbIdx] is 2) the following applies:

Если predListFlagA+predListFlagB равен 1,If predListFlagA+predListFlagB is 1,

predFlagL0=1 (8-904)predFlagL0=1 (8-904)

predFlagL1=1 (8-905)predFlagL1=1 (8-905)

refIdxL0=(predListFlagA== 0) ? refIdxA : refIdxB (8-906)refIdxL0=(predListFlagA== 0) ? refIdxA : refIdxB (8-906)

refIdxL1=(predListFlagA== 0) ? refIdxB : refIdxA (8-907)refIdxL1=(predListFlagA== 0) ? refIdxB : refIdxA (8-907)

mvL0 [0]=(predListFlagA== 0) ? mvA[0] : mvB[0] (8-908)mvL0 [0]=(predListFlagA== 0) ? mvA[0] : mvB[0] (8-908)

mvL0[1]=(predListFlagA== 0) ? mvA[1] : mvB[1] (8-909)mvL0[1]=(predListFlagA== 0) ? mvA[1] : mvB[1] (8-909)

mvL1 [0]=(predListFlagA== 0) ? mvB[0] : mvA[0] (8-910)mvL1 [0]=(predListFlagA== 0) ? mvB[0] : mvA[0] (8-910)

mvL1[1]=(predListFlagA== 0) ? mvB[1] : mvA[1] (8-911)mvL1[1]=(predListFlagA== 0) ? mvB[1] : mvA[1] (8-911)

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

predFlagL0=1 (8-912)predFlagL0=1 (8-912)

predFlagL1=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-913)predFlagL1=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-913)

refIdxL0=(refIdxTempB != -1) ? refIdxA : (8 914) ((refIdxTempA != -1) ? refIdxB : refIdxA)refIdxL0=(refIdxTempB != -1) ? refIdxA : (8 914) ((refIdxTempA != -1) ? refIdxB : refIdxA)

refIdxL1=(refIdxTempB != -1) ? refIdxTempB : (8 915) ((refIdxTempA != -1) ? refIdxTempA : -1)refIdxL1=(refIdxTempB != -1) ? refIdxTempB : (8 915) ((refIdxTempA != -1) ? refIdxTempA : -1)

mvL0[0] = (refIdxTempB != -1) ? mvA[0] : (8-916) ((refIdxTempA != -1) ? mvB[0] : mvA[0])mvL0[0] = (refIdxTempB != -1) ? mvA[0] : (8-916) ((refIdxTempA != -1) ? mvB[0] : mvA[0])

mvL0[1] = (refIdxTempB != -1) ? mvA[1]: (8-917) ((refIdxTempA != -1) ? mvB[1] : mvA[1])mvL0[1] = (refIdxTempB != -1) ? mvA[1]: (8-917) ((refIdxTempA != -1) ? mvB[1] : mvA[1])

mvL1[0] = (refIdxTempB != -1) ? mvB[0] : (8-918) ((refIdxTempA != -1) ? mvA[0] : 0)mvL1[0] = (refIdxTempB != -1) ? mvB[0] : (8-918) ((refIdxTempA != -1) ? mvA[0] : 0)

mvL1[1] = (refIdxTempB != -1) ? mvB[1]: (8-919) ((refIdxTempA != -1) ? mvA[1] : 0)mvL1[1] = (refIdxTempB != -1) ? mvB[1]: (8-919) ((refIdxTempA != -1) ? mvA[1] : 0)

Если значение predListFlagA+predListFlagB равно 2, применяется следующее:If the value of predListFlagA+predListFlagB is 2, the following applies:

predFlagL0=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-920)predFlagL0=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-920)

predFlagL1=1 (8-921)predFlagL1=1 (8-921)

refIdxL0=(refIdxTempB != -1) ? refIdxTempB : (8-922) ((refIdxTempA != -1) ? refIdxTempA : -1) refIdxL0=(refIdxTempB != -1) ? refIdxTempB : (8-922) ((refIdxTempA != -1) ? refIdxTempA : -1)

refIdxL1=(refIdxTempB != -1) ? refIdxA : (8-923) ((refIdxTempA != -1) ? refIdxB : refIdxA) refIdxL1=(refIdxTempB != -1) ? refIdxA : (8-923) ((refIdxTempA != -1) ? refIdxB : refIdxA)

mvL0[0] = (refIdxTempB != -1) ? mvB[0] : (8-924) ((refIdxTempA != -1) ? mvA[0] : 0)mvL0[0] = (refIdxTempB != -1) ? mvB[0] : (8-924) ((refIdxTempA != -1) ? mvA[0] : 0)

mvL0[1] = (refIdxTempB != -1) ? mvB[1]: (8-925) ((refIdxTempA != -1) ? mvA[1] : 0)mvL0[1] = (refIdxTempB != -1) ? mvB[1]: (8-925) ((refIdxTempA != -1) ? mvA[1] : 0)

mvL1[0] = (refIdxTempB != -1) ? mvA[0] : (8-926) ((refIdxTempA != -1) ? mvB[0] : mvA[0]) mvL1[0] = (refIdxTempB != -1) ? mvA[0] : (8-926) ((refIdxTempA != -1) ? mvB[0] : mvA[0])

mvL1[1] = (refIdxTempB != -1) ? mvA[1]: (8-927) ((refIdxTempA != -1) ? mvB[1] : mvA[1]) mvL1[1] = (refIdxTempB != -1) ? mvA[1]: (8-927) ((refIdxTempA != -1) ? mvB[1] : mvA[1])

Для x=0..3 и y=0..3 сделаны следующие назначения:For x=0..3 and y=0..3 the following assignments are made:

MvL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL0 (8-928)MvL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL0 (8-928)

MvL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL1 (8-929)MvL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL1 (8-929)

RefIdxL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL0 (8-930)RefIdxL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL0 (8-930)

RedIdxL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL1 (8-931)RedIdxL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL1 (8-931)

PredFlagL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL0 (8-932)PredFlagL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL0 (8-932)

PredFlagL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL1 (8-933)PredFlagL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL1 (8-933)

Таблица 1. Задание значений angleIdx и DistanceIdx на основе значения geo_partition_idxTable 1. Setting angleIdx and distanceIdx values based on geo_partition_idx value 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

Таблица 2. Задание расстояния stepDis шага в зависимости от значений whRatio и angleNTable 2. Setting the step distance stepDis depending on the values of whRatio and angleN whRatiowhRatio angleN angleN stepDis stepDis 00 00 00 00 11 1818 00 22 3131 00 33 4040 00 44 4242 00 55 4040 00 66 3131 00 77 1818 00 88 00 11 00 00 11 11 3838 11 22 7171 11 33 9797 11 44 115115 11 55 125125 11 66 126126 11 77 118118 11 88 102102 22 00 00 22 11 7878 22 22 149149 22 33 210210 22 44 260260 22 55 295295 22 66 315315 22 77 319319 22 88 307307 33 00 00 33 11 158158 33 22 306306 33 33 438438 33 44 549549 33 55 636636 33 66 694694 33 77 721721 33 88 717717 44 00 00 44 11 318318 44 22 619619 44 33 893893 44 44 11291129 44 55 13171317 44 66 14501450 44 77 15241524 44 88 15361536

Таблица 3. Таблица поиска Dis для выведения расстояния геометрического разбиенияTable 3. Lookup table Dis for deriving geometric partition distance idxidx 00 11 22 33 44 55 66 77 88 99 1010 11eleven 1212 1313 1414 1515 Dis[idx]Dis[idx] 6464 6363 5959 5353 4545 3636 2424 1212 00 -12-12 -24-24 -36-36 -45-45 -53-53 -59-59 -63-63 idxidx 1616 1717 1818 1919 2020 2121 2222 2323 2424 2525 2626 2727 2828 2929 30thirty 3131 Dis[idx]Dis[idx] -64-64 -63-63 -59-59 -53-53 -45-45 -36-36 -24-24 -12-12 00 1212 2424 3636 4545 5353 5959 6363

Таблица 4. Таблица поиска весовых коэффициентов фильтров GeoFilter для выведения весовых коэффициентов фильтров геометрического разбиенияTable 4. GeoFilter filter weights lookup table for deriving geometric partition filter weights idxidx 00 11 22 33 44 55 66 77 88 99 1010 11eleven 1212 1313 1414 GeoFilter [idx]GeoFilter [idx] 44 44 55 55 55 55 66 66 66 66 77 77 77 77 88

Во втором варианте осуществления процесса декодирования для режима GEO-предсказания процесс хранения информации о движении следующий:In the second embodiment of the decoding process for the GEO prediction mode, the motion information storage process is as follows:

Разделяют блок кодирования на K модулей хранения движения, размер блока кодирования составляет MxN дискретных отсчетов яркости, например, каждый модуль хранения движения имеет одинаковый размер (M/K)x(N/K) дискретных отсчетов яркости. В одном примере значение K равно 4, значение M равно 16 и значение N равно 16. В этом примере каждый модуль хранения движения связан с подблоком яркости размером 4×4. Верхнее левое положение яркости (x, y) блока кодирования связано с верхним левым положением (x/K, y/K) блока хранения движения.The coding block is divided into K motion storage modules, the size of the coding block is MxN brightness samples, for example, each motion storage module has the same size (M/K)x(N/K) brightness samples. In one example, the K value is 4, the M value is 16, and the N value is 16. In this example, each motion storage module is associated with a 4x4 luminance subblock. The top left brightness position (x, y) of the encoding block is related to the top left position (x/K, y/K) of the motion storage block.

Для модуля хранения движения решают, сохранена ли первая информация о движении с уни-предсказанием, вторая информация о движении с уни-предсказанием или информация о движении с би-предсказанием, в соответствии с первым весовым коэффициентом дискретного отсчета или вторым весовым коэффициентом дискретного отсчета. В одном примере решение принимается в соответствии с расстоянием от дискретного отсчета в модуле хранения движения до разделительной границы. Дискретный отсчет может быть целочисленным или дробным. Отделительная линия определяется как разделительная линия режима геометрического разбиения. В соответствии с одним примером K равно 4 (ширина и высота модуля хранения движения с точки зрения дискретных отсчетов яркости). Пример деления блока кодирования на модуля хранения движения показан на фигуре 13.For the motion storage unit, it is decided whether the first uni-prediction motion information, the second uni-prediction motion information, or the bi-prediction motion information is stored in accordance with the first sample weight or the second sample weight. In one example, the decision is made in accordance with the distance from the sample in the motion storage module to the dividing boundary. The discrete count can be integer or fractional. The dividing line is defined as the dividing line of the geometric partition mode. According to one example, K is equal to 4 (the width and height of the motion storage module in terms of discrete luminance samples). An example of dividing a coding block into a motion storage module is shown in Figure 13.

Согласно одному примеру расстояние между дискретным отсчетом и разделительной границей можно рассчитать следующим образом: Для дискретного отсчета яркости в блоке вычисляется расстояние дискретного отсчета (sample_dist), расстояние дискретного отсчета представляет собой расстояние от дискретного отсчета яркости до отделительной линии блока.According to one example, the distance between the sample and the dividing line can be calculated as follows: For a luminance sample in a block, the sample distance (sample_dist) is calculated, the sample distance being the distance from the luminance sample to the block's dividing line.

В одном примере расстояние дискретного отсчета sample_dist вычисляется согласно формуле:In one example, the sample distance sample_dist is calculated according to 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).

Значение angleIdx1 и значение angleIdx2 получаются из битового потока или выводятся/вычисляются на основе другой информации, полученной из битового потока, angleIdx1 и angleIdx2 представляют собой квантованные тригонометрические параметры отделительной линии, первый из которых имеет тип косинуса, а второй - типа синуса.The value of angleIdx1 and the value of angleIdx2 are obtained from the bitstream or derived/calculated based on other information obtained from the bitstream, angleIdx1 and angleIdx2 are quantized trigonometric dividing line parameters, the first of which is of cosine type and the second of sine type.

x и y представляют собой координаты -x и -y дискретного отсчета относительно левой верхней дискретного отсчета блока кодирования.x and y represent the -x and -y coordinates of the sample sample relative to the upper left sample sample of the encoding block.

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

Dis[] является таблицей поиска. Dis[angleIdx1] описывает изменение расстояния дискретного отсчета (sample_dist) относительно единичного увеличения (увеличение на значение 1) в координате -x указанного дискретного отсчета. Dis[angleIdx2] описывает изменение расстояния дискретного отсчета (sample_dist) по отношению к единичному увеличению (увеличению на значение 1) координаты -y указанного дискретного отсчета.Dis[] is a lookup table. Dis[angleIdx1] describes the change in sample distance (sample_dist) relative to a unit increment (increase by value 1) at the -x coordinate of the specified sample. Dis[angleIdx2] describes the change in sample distance (sample_dist) with respect to a unit increase (increase by value 1) in the -y coordinate of the specified sample.

Следует отметить, что координатор в приведенном выше примере находится в соответствии с верхним левым положением текущего блока кодирования, а не в соответствии с верхнем левым положением.It should be noted that the coordinator in the above example is located according to the top left position of the current encoding block, and not according to the top left position.

Следует отметить, что в приведенном выше примере показан способ вычисления в соответствии с целочисленной арифметикой. Варианты осуществления изобретения не ограничены этими примерами вычисления sample_dist.It should be noted that the above example shows the calculation method according to integer arithmetic. Embodiments of the invention are not limited to these examples of calculating sample_dist.

Следует отметить, что в соответствии с приведенным выше примером координатор дискретного отсчета сдвигается влево на один бит ((x<<1), (y<<1)). В этом примере расчет расстояния может быть выполнен с точностью до 1/2 дискретного отсчета для целочисленной арифметики, например, может быть рассчитано положение дискретного отсчета в (0,5, 0,5).It should be noted that according to the example above, the sample coordinator is shifted to the left by one bit ((x<<1), (y<<1)). In this example, the distance calculation can be done to within 1/2 a sample for integer arithmetic, for example the position of the sample at (0.5, 0.5) can be calculated.

На Фиг. 18 показан пример хранения движения 4×4 с целочисленным положением и положением в половину пикселя (дробное положение, разделительная граница и расстояние между дискретным отсчетом и разделительной границей (sample_dist).In FIG. Figure 18 shows an example of 4x4 motion storage with an integer position and a half-pixel position (fractional position, dividing boundary, and distance between sample and dividing boundary (sample_dist).

В одном примере решение относится к тому, хранить ли первую информацию о движении с уни-предсказанием, помеченную как Mv0, вторую информацию о движении с уни-предсказанием, помеченную как Mv1, или объединенную информацию о движении, такую как информация о движении с би-предсказанием, помеченную как Mv2, осуществляется в соответствии со следующими этапами. В примере одном решение выполняется для модуля хранения движения; в другом примере решение выполняется по меньшей мере для двух (или всех) модулей хранения движения, содержащихся в блоке кодирования. Верхняя левая координата модуля хранения движения устанавливается в качестве (x/K, y/K), а ширина и высота модуля хранения движения задаются как K в дискретных отсчетах яркости.In one example, the decision relates to whether to store first uni-prediction motion information labeled Mv0, second uni-prediction motion information labeled Mv1, or combined motion information such as bi-prediction motion information. prediction, labeled Mv2, is carried out according to the following steps. In example one, the solution is performed for the motion storage module; in another example, the decision is performed on at least two (or all) motion storage units contained in the encoding block. The top left coordinate of the motion storage module is set to (x/K, y/K), and the width and height of the motion storage module are set to K in luminance samples.

Если вычисленное расстояние sample_dist меньше и/или равно пороговой величине, объединенная информация о движении (Mv2) сохраняется для модуля хранения движения. Пороговая величина может быть фиксированным числом, которое может быть выедено адаптивно на основе угла отделительной линии, соотношения сторон текущего блока кодирования или других параметров; в противном случае (если расстояние sample_dist больше или/и равно пороговой величине), проверяется знак sample_dist:If the calculated distance sample_dist is less than and/or equal to the threshold, the combined motion information (Mv2) is stored for the motion storage module. The threshold value may be a fixed number, which may be adaptively determined based on the angle of the dividing line, the aspect ratio of the current encoding block, or other parameters; otherwise (if the distance sample_dist is greater than or/and equal to the threshold), the sign of sample_dist is checked:

Если sample_dist является отрицательным (или положительным), MV0 (или MV1) сохраняются для текущего модуля хранения движения,If sample_dist is negative (or positive), MV0 (or MV1) is stored for the current motion storage module,

В противном случае (sample_dist положительно (или отрицательно)) MV1 (или MV0) сохраняются для текущего модуля хранения движения.Otherwise (sample_dist positive (or negative)) MV1 (or MV0) are stored for the current motion storage module.

На Фиг. 19 показан один из примеров хранения движения на основе упомянутого способа.In FIG. 19 shows one example of motion storage based on the above method.

По сравнению с другим способом хранения движения, этот способ требует вычисления только одного расстояния дискретного отсчета для каждого модуля хранения движения, что снижает сложность вычислений.Compared with other motion storage method, this method only requires computing one sample distance for each motion storage module, which reduces the computational complexity.

В третьем варианте осуществления процесс декодирования для режима GEO-предсказания, как показано на Фиг.20, выглядит следующим образом:In the third embodiment, the decoding process for the GEO prediction mode, as shown in FIG. 20, is as follows:

Для методики кодирования видео, которая допускает би-предсказание, используются два списка опорных кадров, например, List0 и List1, или список прямых опорных кадров и список обратных опорных кадров. Например, информация о движении включает в себя:For a video coding technique that allows bi-prediction, two lists of reference frames are used, for example, List0 and List1, or a list of forward reference frames and a list of backward reference frames. For example, traffic information includes:

(1) Флаг предсказания L0 (PFL0) и флаг предсказания L1 (PFL1), где, когда флаг предсказания L0 имеет значение «истина» (true), List0 будет использоваться в интер-предсказании, в противном случае (флаг предсказания L0 является ложным (false)) List0 не будет использоваться. Флаг предсказания L1 аналогичен.(1) Prediction Flag L0 (PFL0) and Prediction Flag L1 (PFL1), where when Prediction Flag L0 is true, List0 will be used in inter-prediction, otherwise (Prediction Flag L0 is false ( false)) List0 will not be used. The L1 prediction flag is similar.

(2) Опорный индекс L0 (RIL0) и Опорный индекс L1 (RIL1), Опорный индекс L0 используется для указания того, какой опорный кадр (потенциально подходящий вариант) из List0 используется в качестве текущего опорного кадра. Опорный индекс L1 аналогичен. И в возможном варианте реализации Опорный Индекс L0 равен -1, что означает, что опорный кадр из списка List0 не используется.(2) Reference Index L0 (RIL0) and Reference Index L1 (RIL1), Reference Index L0 is used to indicate which reference frame (potential candidate) from List0 is used as the current reference frame. The L1 reference index is similar. And in a possible implementation, the Reference Index L0 is -1, which means that the reference frame from List0 is not used.

(3) Вектор движения L0 (MVL0) и вектор движения L1 (MVL1) соответствуют List0 и List1 соответственно, и оба они имеют горизонтальную составляющую и вертикальную составляющую.(3) Motion vector L0 (MVL0) and motion vector L1 (MVL1) correspond to List0 and List1 respectively, and both have a horizontal component and a vertical component.

После того, как информация о движении определена для текущего блока, в возможном варианте реализации информация о движении может быть сохранена и использована в качестве опорной информации для процесса предсказания будущих блоков кодирования, например, как информация о движении для предсказания соседнего блока в пространственном предсказании или временном предсказании.Once the motion information is determined for the current block, in an exemplary embodiment, the motion information may be stored and used as reference information for the prediction process of future encoding blocks, for example, as motion information for predicting a neighboring block in spatial prediction or temporal prediction.

Информация о движении хранится в памяти, более конкретно, хранится в модулях хранения информации о движении в этом варианте осуществления.The motion information is stored in the memory, more specifically, stored in the motion information storage units in this embodiment.

Текущий блок может быть разделен на множество наборов дискретных отсчетов, при этом каждый из множества наборов дискретных отсчетов имеет тот же размер, что и набор дискретных отсчетов; или установка текущего блока в качестве набора дискретных отсчетов. Например, набор дискретных отсчетов может быть массивом дискретных отсчетов 4×4. Размер набора дискретных отсчетов также может быть 8×8, 16×16, 8×16 и т. д., что не ограничено. Каждый из множества наборов дискретных отсчетов соответствует каждому модулю хранения информации о движении, поэтому информация о движении из набора дискретных отсчетов будет храниться в соответствующем модуле хранения информации о движении. Отмечается, что существует два случая «информации о движении набора дискретных отсчетов». Случай 1: информация о движении используется для определения значения предсказания набора дискретных отсчетов; Случай 2: информация о движении назначается набору дискретных отсчетов для хранения. The current block may be divided into a plurality of sample sets, each of the plurality of sample sets having the same size as the sample set; or setting the current block as a set of discrete samples. For example, the sample set may be a 4x4 sample array. The size of the sample set can also be 8x8, 16x16, 8x16, etc., which is not limited. Each of the plurality of sample sets corresponds to each motion information storage module, so motion information from the sample set will be stored in a corresponding motion information storage module. It is noted that there are two cases of “information about the movement of a set of discrete samples.” Case 1: Motion information is used to determine the prediction value of a set of discrete samples; Case 2: Motion information is assigned to a set of discrete samples for storage.

Кроме того, в текущем варианте осуществления набор дискретных отсчетов является набором дискретных отсчетов яркости, а в другом варианте осуществления набор дискретных отсчетов может быть набором дискретных отсчетов цветности.Moreover, in the current embodiment, the set of samples is a set of luminance samples, and in another embodiment, the set of samples may be a set of chrominance samples.

Режим GEO-предсказания представлен в предыдущем разделе. Как правило, при GEO-предсказании текущий блок состоит из первого подблока и второго подблока, первый подблок и второй подблок отделены общей границей, первый подблок соответствует первой информации о движении, а второй подблок соответствует второй информации о движении. Первый подблок и второй подблок могут быть треугольным разбиением, трапециевидным разбиением или асимметричным прямоугольным разбиением и т.д., что не ограничивается. И понятно, что, например, в треугольном разбиении каждый подблок является треугольным блоком.The GEO prediction mode is presented in the previous section. Generally, in GEO prediction, the current block consists of a first sub-block and a second sub-block, the first sub-block and the second sub-block are separated by a common boundary, the first sub-block corresponds to the first motion information, and the second sub-block corresponds to the second motion information. The first sub-block and the second sub-block may be a triangular mesh, a trapezoidal mesh, or an asymmetric rectangular mesh, etc., but is not limited to. And it is clear that, for example, in a triangular partition, each subblock is a triangular block.

Например, в текущем варианте осуществления как первая информация о движении, так и вторая информация о движении исходят из уни-предсказания. Первая информация о движении может включать в себя только RIL0, MVL0, что означает PFL0=1, PFL1=0; или может включать в себя только RIL1, MVL1, что означает PFL0=0, PFL1 =1; аналогично, вторая информация о движении может включать в себя только RIL0, MVL0, что означает PFL0=1, PFL1=0; или может включать в себя только RIL1, MVL1, что означает PFL0=0, PFL1 =1.For example, in the current embodiment, both the first motion information and the second motion information come from the uni-prediction. The first motion information may only include RIL0, MVL0, which means PFL0=1, PFL1=0; or may include only RIL1, MVL1, which means PFL0=0, PFL1=1; similarly, the second motion information may only include RIL0, MVL0, which means PFL0=1, PFL1=0; or may include only RIL1, MVL1, which means PFL0=0, PFL1=1.

S201: определение углового параметра и параметра расстояния.S201: Determination of angular parameter and distance parameter.

Общая граница определяется посредством углового параметра и параметра расстояния.The common boundary is determined by an angular parameter and a distance parameter.

(1) В декодере:(1) In decoder:

В возможном варианте реализации выделение посредством анализа углового параметра и параметра расстояния непосредственно из битового потока.In a possible implementation, extracting by analyzing an angular parameter and a distance parameter directly from the bit stream.

В другом возможном варианте реализации выделение посредством анализа указателя из битового потока и получение углового параметра и параметра расстояния на основе указателя. Указатель может быть индексом, угловой параметр и параметр расстояния могут быть определены посредством проверки таблицы поиска с таким индексом. Или угловой параметр и параметр расстояния могут быть рассчитаны посредством функции, а указатель является входными данными для функции.In another possible implementation, extracting by parsing a pointer from the bitstream and deriving an angular parameter and a distance parameter based on the pointer. The pointer may be an index, the angle parameter and the distance parameter may be determined by checking a lookup table with such an index. Or the angle parameter and the distance parameter can be calculated by a function, and the pointer is the input to the function.

В другом возможном варианте реализации выделение посредством анализа двух указателей из битового потока и получение углового параметра из одного из двух указателей и параметра расстояния из другого из двух указателей.In another possible implementation, extracting by parsing two pointers from the bitstream and obtaining an angular parameter from one of the two pointers and a distance parameter from the other of the two pointers.

В текущем варианте осуществления синтаксический элемент «geo_partition_idx» выделяется посредством анализа из битового потока. Угловой параметр «angleIdx» и параметр расстояния «distanceIdx» получаются посредством поиска в таблице поиска, которая определяет соотношение между «geo_partition_idx» и парой «angleIdx» и «distanceIdx». Таблица поиска, например, может быть таблицей 1.In the current embodiment, the syntax element "geo_partition_idx" is extracted by parsing from the bitstream. The angle parameter "angleIdx" and the distance parameter "distanceIdx" are obtained by looking up a lookup table that defines the relationship between "geo_partition_idx" and the pair "angleIdx" and "distanceIdx". The lookup table, for example, could be table 1.

S202: определение первого вычислительного параметра на основе углового параметра; вычисление временного углового параметра на основе углового параметра; определение второго вычислительного параметра на основе временного углового параметра; и вычисление третьего вычислительного параметра на основе углового параметра и параметра расстояния.S202: determining the first calculation parameter based on the angular parameter; calculating a temporary angular parameter based on the angular parameter; determining a second computational parameter based on the time angular parameter; and calculating a third calculation parameter based on the angular parameter and the distance parameter.

Первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно угловому параметру, а второй вычислительный параметр определяется посредством проверки упомянутой таблицы поиска согласно временному угловому параметру, причем первый вычислительный параметр и второй вычислительный параметр представляют собой значение косинуса и значение синуса одного и того же угла, соответственно. Понятно, что вычисления косинуса и синуса можно смоделировать и заменить способом интерполяционной таблицы, при этом сложность вычислений снижается.The first calculation parameter is determined by checking a preset lookup table according to an angular parameter, and the second calculation parameter is determined by checking said lookup table according to a temporary angular parameter, the first calculation parameter and the second calculation parameter being a cosine value and a sine value of the same angle, respectively. It is clear that the calculations of cosine and sine can be simulated and replaced by a lookup table method, while the complexity of the calculations is reduced.

В текущем варианте осуществления,In the current embodiment,

В возможном варианте реализации: Первый вычислительный параметр имеет значение Dis[angleIdx], Dis[] - это таблица поиска, например, это может быть Таблица 3.In a possible implementation: The first calculation parameter has the value Dis[angleIdx], Dis[] is a lookup table, for example it could be Table 3.

Для временного углового параметра установлено значение (angleIdx+8)%32, предполагается, что это TempIdx.The temporary angle parameter is set to (angleIdx+8)%32, assumed to be TempIdx.

Второй вычислительный параметр имеет значение Dis[TempIdx].The second computational parameter has the value Dis[TempIdx].

Отмечается, что теоретически Dis[angleIdx] и Dis[TempIdx] являются приблизительными значениями косинуса и синуса одного и того же угла, а угол представляет собой геометрическое соотношение между общей границей и текущим блоком.It is noted that theoretically, Dis[angleIdx] and Dis[TempIdx] are approximate values of the cosine and sine of the same angle, and the angle represents the geometric relationship between the common boundary and the current block.

В другом возможном варианте реализации: Первый вычислительный параметр имеет значение Dis1[angleIdx], Dis1[] - это таблица поиска, например, это может быть Таблица 3.In another possible implementation: The first calculation parameter has the value Dis1[angleIdx], Dis1[] is a lookup table, for example it could be Table 3.

Второй вычислительный параметр установлен в Dis2[angleIdx], Dis2[] - это другая таблица поиска.The second computational parameter is set to Dis2[angleIdx], Dis2[] is another lookup table.

Следует отметить, что Dis1[angleIdx] и Dis2[angleIdx] являются приблизительными значениями косинуса и синуса одного и того же угла, а угол представляет собой геометрическое соотношение между общей границей и текущим блоком.It should be noted that Dis1[angleIdx] and Dis2[angleIdx] are approximate values of the cosine and sine of the same angle, and the angle represents the geometric relationship between the common boundary and the current block.

Третий вычислительный параметр получается следующим образом:The third computational parameter is obtained as follows:

wIdx устанавливается равным log2(nCbW) - 3, nCbW - ширина текущего блока;wIdx is set equal to log2(nCbW) - 3, nCbW is the width of the current block;

hIdx устанавливается равным log2(nCbH) - 3, nCbH - высота текущего блока;hIdx is set equal to log2(nCbH) - 3, nCbH - the height of the current block;

stepOffset устанавливается равным положительному целому числу, например, равному 64.stepOffset is set to a positive integer, such as 64.

Сравнение wIdx и hIdx:Comparison of wIdx and hIdx:

whRratio=(wIdx >= hIdx) ? wIdx - hIdx : hIdx - wIdxwhRratio=(wIdx >= hIdx) ? wIdx - hIdx : hIdx - wIdx

wIsLargerH=(wIdx >= hIdx)? true : falsewIsLargerH=(wIdx >= hIdx)? true : false

scaleStep=(wIdx >= hIdx)? (1 << hIdx) : (1 << wIdx)scaleStep=(wIdx >= hIdx)? (1 << hIdx) : (1 << wIdx)

Понятно, что в другом возможном варианте реализации:It is clear that in another possible implementation:

whRratio=(wIdx > hIdx)? wIdx - hIdx : hIdx - wIdxwhRratio=(wIdx > hIdx)? wIdx - hIdx : hIdx - wIdx

wIsLargerH=(wIdx > hIdx)? true : falsewIsLargerH=(wIdx > hIdx)? true : false

ScaleStep=(wIdx > hIdx)? (1 << hIdx) : (1 << wIdx)ScaleStep=(wIdx > hIdx)? (1 << hIdx) : (1 << wIdx)

angleN устанавливается равным:angleN is set to:

angleN=angleIdx, если angleIdx >= 0 && angleIdx <=8,angleN=angleIdx, if angleIdx >= 0 && angleIdx <=8,

angleN=16 - angleIdx, если angleIdx > 8 && angleIdx<= 16,angleN=16 - angleIdx, if angleIdx > 8 && angleIdx<= 16,

angleN=angleIdx - 16, если angleIdx > 16 && angleIdx <=24,angleN=angleIdx - 16 if angleIdx > 16 && angleIdx <=24,

angleN=32 - angleIdx в противном случае,angleN=32 - angleIdx otherwise,

Следует отметить, что в разных вариантах реализации конечные точки angleIdx 0, 8, 16, 24 могут принадлежать разным подразделам, например:It should be noted that in different implementations the endpoints angleIdx 0, 8, 16, 24 may belong to different subpartitions, for example:

В другом возможном варианте реализации для угла N установлено значение:In another possible implementation, the angle N is set to:

angleN=angleIdx, если angleIdx > 0 && angleIdx <8,angleN=angleIdx, if angleIdx > 0 && angleIdx <8,

angleN=16 - angleIdx, если angleIdx >= 8 && angleIdx< 16,angleN=16 - angleIdx, if angleIdx >= 8 && angleIdx< 16,

angleN=angleIdx - 16, если angleIdx > =16 && angleIdx <24,angleN=angleIdx - 16, if angleIdx > =16 && angleIdx <24,

angleN=32 - angleIdx в противном случае,angleN=32 - angleIdx otherwise,

Кроме того, angleN устанавливается в следующее значение:Additionally, angleN is set to the following value:

angleN=(wIsLargerH) ? 8 - angleN : angleNangleN=(wIsLargerH) ? 8 - angleN : angleN

stepDis устанавливается в соответствии со значениями whRatio и angleN, указанными в таблице поиска, например, в Таблице 2.stepDis is set according to the whRatio and angleN values specified in the lookup table, such as Table 2.

stepSize=stepDis+stepOffsetstepSize=stepDis+stepOffset

Третий вычислительный параметр rho устанавливается в следующее значение с использованием таблицы поиска, обозначенной как Dis, например, Таблица 3.The third computational parameter rho is set to the following value using a lookup table designated Dis, e.g. Table 3.

rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis[angleIdx] + nCbH*Dis[TempIdx].rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis[angleIdx] + nCbH*Dis[TempIdx].

И, соответственно, в другом возможном варианте реализации третий вычислительный параметр rho может быть установлен как:And accordingly, in another possible implementation, the third computational parameter rho can be set as:

rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis1 [angleIdx] + nCbH*Dis2 [angleIdx].rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis1 [angleIdx] + nCbH*Dis2 [angleIdx].

Отмечено, что поскольку после наличия углового параметра и параметра расстояния, можно определить первый, второй и третий вычислительный параметр. В возможном варианте реализации первый, второй и третий вычислительный параметр будут вычисляться только один раз как параметры для всех дискретных отсчетов в текущем блоке. И этапы S201 и S202 могут быть пропущены для процесса сохранения информации о движении, если первый, второй и третий вычислительный параметр текущего блока уже определены.It is noted that since after the presence of the angular parameter and the distance parameter, the first, second and third computational parameter can be determined. In an exemplary embodiment, the first, second, and third computational parameters would be calculated only once as parameters for all samples in the current block. And steps S201 and S202 can be skipped for the motion information storing process if the first, second and third calculation parameters of the current block have already been determined.

S203: определение расстояния между набором дискретных отсчетов в текущем блоке и общей границей.S203: determining the distance between a set of discrete samples in the current block and a common boundary.

расстояние вычисляется следующим образом:The distance is calculated as follows:

distFromLine=(x+K)*P1+(y+K)*P2-P3,distFromLine=(x+K)*P1+(y+K)*P2-P3,

где P1, P2 и P3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром, соответственно, distFromLine представляет расстояние, K является неотрицательным целым числом, x представляет горизонтальную координату целевого положения в наборе дискретных отсчетов, y представляет вертикальную координату целевого положения в прямоугольной системе координат, где положение верхнего левого дискретного отсчета текущего блока устанавливается в качестве начала координат, направление вправо устанавливается в качестве положительного горизонтального направления, а направление вниз устанавливается в качестве положительного вертикального направления.where P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter, respectively, distFromLine represents the distance, K is a non-negative integer, x represents the horizontal coordinate of the target position in the sample set, y represents the vertical coordinate of the target position in the rectangular a coordinate system where the position of the top left sampled reference of the current block is set as the origin, the right direction is set as the positive horizontal direction, and the down direction is set as the positive vertical direction.

В возможном варианте реализации K равно 1.In a possible implementation, K is equal to 1.

distFromLine=(x+1)*P1+(y+1)*P2-P3.distFromLine=(x+1)*P1+(y+1)*P2-P3.

Отмечается, что расстояние между набором дискретных отсчетов в текущем блоке и общей границей, как правило, является расстоянием между целевым положением в наборе дискретных отсчетов и общей границей.It is noted that the distance between the sample set in the current block and the common boundary is generally the distance between the target position in the sample set and the common boundary.

Целевое положение в наборе дискретных отсчетов является предварительно определенным. Например, предварительно определенное положение может быть верхним левым положением набора дискретных отсчетов, или центральным положением набора дискретных отсчетов, или другим положением набора дискретных отсчетов.The target position in the sample set is predetermined. For example, the predetermined position may be the top left position of the sample set, or the center position of the sample set, or another position of the sample set.

Следует отметить, что целевое положение может быть положением целочисленного дискретного отсчета в наборе дискретных отсчетов, и целевое положение также может быть положением дробного дискретного отсчета. Например, целевое положение может быть положением центра тяжести текущего блока. Более конкретно, в случае, при котором текущий блок является массивом дискретных отсчетов 4×4, целевое положение может быть положением с координатами (1,5, 1,5) в прямоугольной системе координат текущего варианта осуществления.It should be noted that the target position may be an integer sample position in a sample set, and the target position may also be a fractional sample position. For example, the target position may be the position of the current block's center of gravity. More specifically, in the case where the current block is a 4x4 sample array, the target position may be a position at coordinates (1.5, 1.5) in the rectangular coordinate system of the current embodiment.

В возможном варианте реализации точность дискретного отсчета расстояния выше целочисленного дискретного отсчета. Соответственно, расстояние вычисляется следующим образом:In a possible embodiment, the accuracy of the discrete distance reading is higher than the integer discrete reading. Accordingly, the distance is calculated as follows:

distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,

где 2N представляет обратную величину точности дискретного отсчета расстояния, например, когда точность дискретного отсчета расстояния составляет половину пикселя, N равно 1, когда точность дискретного отсчета расстояния составляет 1/4 пикселя, N равно 2.where 2 N represents the reciprocal of the distance sample precision, for example, when the distance sample accuracy is half a pixel, N is 1, when the distance sample accuracy is 1/4 pixel, N is 2.

Например, расстояние вычисляется следующим образом:For example, distance is calculated as follows:

distFromLine=((x<<1)+1)*Dis[angleIdx]+((y<<1)+1)*Dis[TempIdx]-rhodistFromLine=((x<<1)+1)*Dis[angleIdx]+((y<<1)+1)*Dis[TempIdx]-rho

S204: сравнение расстояния с пороговой величиной для определения того, что третья информация о движении сохранена для набора дискретных отсчетов.S204: Comparing the distance with a threshold to determine that the third motion information is stored for the sample set.

Третья информация о движении выводится из первой информации о движении и второй информации. В возможном варианте реализации третья информация о движении представляет собой объединение первой информации о движении и второй информации о движении, подобно информации о движении для би-предсказания. Более конкретно, в случае, при котором первая информация о движении включает в себя RILX_first, MVLX_first, вторая информация о движении включает в себя RILY_second, MVLY_second, где X может быть 0 или 1, а Y может быть 0 или 1, третья информация о движении может включать в себя все RILX_first, MVLX_first , RILY_second, MVLY_second, что означает PFL0=1, PFL1=1.The third motion information is derived from the first motion information and the second information. In an exemplary embodiment, the third motion information is a combination of the first motion information and the second motion information, similar to the motion information for bi-prediction. More specifically, in the case where the first motion information includes RILX_first, MVLX_first, the second motion information includes RILY_second, MVLY_second, where X may be 0 or 1, and Y may be 0 or 1, the third motion information may include all RILX_first, MVLX_first , RILY_second, MVLY_second, which means PFL0=1, PFL1=1.

В другом возможном варианте реализации третья информация о движении может быть равна одной из первой информации о движении или второй информации о движении в случае, при котором и первая информация о движении, и вторая информация о движении соответствуют одному и тому же списку (List0 или List1). Например, если PFL0 равен 1, а PFL1 равен 0 как для первой, так и для второй информации о движении, третья информация о движении может быть установлена равной первой информации о движении (или второй информации о движении, в соответствии с другим вариантом реализацией). Аналогично, если PFL0 равен 0, а PFL1 равен 1 как для первой, так и для второй информации о движении, третья информация о движении может быть установлена равной первой информации о движении (или второй информации о движении, в соответствии с другим вариантом реализации).In another possible embodiment, the third motion information may be equal to one of the first motion information or the second motion information in a case where both the first motion information and the second motion information correspond to the same list (List0 or List1) . For example, if PFL0 is 1 and PFL1 is 0 for both the first and second motion information, the third motion information may be set equal to the first motion information (or the second motion information, according to another implementation). Likewise, if PFL0 is 0 and PFL1 is 1 for both the first and second motion information, the third motion information may be set equal to the first motion information (or the second motion information, according to another embodiment).

В возможном варианте реализации пороговая величина может быть предварительно определенным значением.In an exemplary embodiment, the threshold may be a predetermined value.

В другом возможном варианте реализации пороговая величина основана на геометрическом соотношении между общей границей и горизонтальным направлением или на геометрическом соотношении между общей границей и вертикальным направлением. Более конкретно, пороговая величина основана на угле между перпендикулярным направлением общей границы и горизонтальным направлением или вертикальным направлением. А в других вариантах реализации геометрическое соотношение может включать в себя соотношение длины между общей границей и границей блока текущего блока или подблока текущего блока. В текущем варианте осуществления пороговая величина может быть получена с помощью таблицы поиска, например таблицы 5, в соответствии с углом, рассчитанным выше.In another possible embodiment, the threshold is based on a geometric relationship between a common boundary and a horizontal direction or a geometric relationship between a common boundary and a vertical direction. More specifically, the threshold value is based on the angle between the perpendicular direction of the common boundary and the horizontal direction or vertical direction. And in other embodiments, the geometric relationship may include a length relationship between a common boundary and a block boundary of the current block or a subblock of the current block. In the current embodiment, the threshold value can be obtained using a lookup table such as Table 5 according to the angle calculated above.

Threshold=RhoMax[angleN].Threshold=RhoMax[angleN].

Следует отметить, что, поскольку угол N может быть определен до этапа S204, пороговая величина (Threshold) может быть определен до этапа S204 и для текущего блока.It should be noted that since the angle N can be determined before step S204, the threshold value (Threshold) can be determined before step S204 for the current block.

Пороговая величина может быть такжеThe threshold value can also be

threshLower=- RhoMax[angleN] threshLower=- RhoMax[angleN]

threshUpper=RhoMax[angleN].threshUpper=RhoMax[angleN].

Таблица 5 Таблица RhoMax для выведения весовых коэффициентов геометрического разбиения.Table 5 RhoMax table for deriving the weighting coefficients of the geometric partition. idxidx 00 11 22 33 44 55 66 77 88 RhoMax[idx]RhoMax[idx] 11 22 22 33 33 33 22 22 11

В другом возможном варианте реализации пороговая величина может быть такжеIn another possible implementation, the threshold value may also be

threshLower=- KthreshLower=- K

threshUpper=K, где K - предварительно определенное положительное число. Например, значение K может быть равно 1. В одном примере K может быть получено согласно указателю в битовом потоке.threshUpper=K, where K is a predefined positive number. For example, the value of K may be 1. In one example, K may be obtained according to a pointer in the bit stream.

В другом возможном варианте реализации пороговая величина основана на ширине и/или высоте текущего блока.In another possible implementation, the threshold is based on the width and/or height of the current block.

Следует отметить, что пороговая величина может также определяться двумя или более указанными выше условиями. Например, ширина и/или высота текущего блока может определять некоторое отношение (ratio), ratio=1<< abs(log2(width) - log2(height)), а затем это отношение используется для масштабирования пороговой величины, определяемой углом. И масштабированная пороговая величина устанавливается как окончательная пороговая величина.It should be noted that the threshold may also be determined by two or more of the above conditions. For example, the width and/or height of the current block can be defined by a ratio, ratio=1<< abs(log2(width) - log2(height)), and then this ratio is used to scale the threshold determined by the angle. And the scaled threshold is set as the final threshold.

Сравнения между пороговой величиной и расстоянием выполняются на следующих этапах:Comparisons between threshold and distance are made in the following steps:

S204-1: Определение, что третья информации о движении сохранена для набора дискретных отсчетов, в случае, при котором абсолютное значение расстояния меньше или равно пороговой величине;S204-1: Determining that the third motion information is stored for a set of discrete samples, in the case where the absolute value of the distance is less than or equal to the threshold value;

S204-2: в случае, при котором абсолютное значение расстояния больше пороговой величины:S204-2: in the case where the absolute value of the distance is greater than the threshold value:

определение, что первая информации о движении сохранена для набора дискретных отсчетов, в случае, при котором расстояние является положительным (или отрицательным); илиdetermining that the first motion information is stored for a set of discrete samples, in the case where the distance is positive (or negative); or

определение, что вторая информация о движении сохранена для набора дискретных отсчетов, в случае, при котором расстояние является отрицательным (или положительным, в соответствии с вышеприведенным ответвлением).determining that the second motion information is stored for a set of discrete samples, in the case where the distance is negative (or positive, in accordance with the above branch).

Понятно, что в соответствии с другим вариантом реализации условие на этапе S204-1 также может быть в том, что абсолютное значение расстояния меньше пороговой величины, соответственно, условием на этапе S204-2 может быть то, что абсолютное значение расстояния больше или равно пороговой величине.It is understood that, according to another embodiment, the condition in step S204-1 may also be that the absolute value of the distance is less than a threshold value, accordingly, the condition in step S204-2 may be that the absolute value of the distance is greater than or equal to the threshold value .

В другом возможном варианте реализации вычисление абсолютного значения заменяется большим количеством подразделов.In another possible implementation, the absolute value calculation is replaced by more subpartitions.

В текущем варианте осуществления то, что первая информация о движении сохранена для набора дискретных отсчетов, сохраняется в случае, при котором расстояние меньше, чем threshLower; То, что вторая информация о движении сохранена для набора дискретных отсчетов, сохраняется в случае, при котором расстояние больше, чем threshUpper; В противном случае сохраняется то, что третья информация о движении сохранена для набора дискретных отсчетов.In the current embodiment, that the first motion information is stored for the sample set is stored in the case where the distance is less than threshLower; That the second motion information is stored for a set of discrete samples is retained in the case where the distance is greater than threshUpper; Otherwise, it is maintained that the third motion information is stored for a set of discrete samples.

И понятно, что одна из первой информации о движении, второй информации о движении и третьей информации о движении хранится в модуле хранения информации о движении и соответствует набору дискретных отсчетов.And it is understood that one of the first motion information, the second motion information, and the third motion information is stored in the motion information storage unit and corresponds to a set of discrete samples.

Следует отметить, что когда текущий блок может быть разделен на множество наборов дискретных отсчетов, в возможном варианте реализации вышеописанные этапы в текущем варианте осуществления используются для всех наборов дискретных отсчетов. В другом возможном варианте реализации описанные выше этапы в текущем варианте осуществления используются только для одного набора дискретных отсчетов. В другом возможном варианте реализации описанные выше этапы в текущем варианте осуществления используются по меньшей мере для двух наборов дискретных отсчетов. Для наборов дискретных отсчетов, не реализованных с помощью вышеописанных этапов, в возможном варианте реализации будет храниться информация о движении по умолчанию или информация о движении, выведенная в соответствии с предварительно определенным условием.It should be noted that when the current block can be divided into multiple sets of samples, in an exemplary embodiment, the above steps in the current embodiment are used for all sets of samples. In another possible implementation, the steps described above in the current embodiment are used for only one set of discrete samples. In another possible implementation, the steps described above in the current embodiment are used for at least two sets of discrete samples. For sample sets not implemented by the steps above, a possible implementation would store default motion information or motion information output according to a predetermined condition.

Следует отметить, что только значение расстояния необходимо вычислить на основе предварительно определенного модуля (функции) GEO-разбиения, параметр модуля которого можно определить на уровне CU для определения хранения информации о движении для GEO-разбиения. Сложность вычислений ограничивается.It should be noted that only the distance value needs to be calculated based on the predefined module (function) of the GEO partition, the module parameter of which can be defined at the CU level to determine the storage of motion information for the GEO partition. Computational complexity is limited.

В четвертом варианте осуществления процесса декодирования для режима GEO-предсказания:In the fourth embodiment of the decoding process for the GEO prediction mode:

Этот процесс вызывается при декодировании единичного блока кодирования с MergeTriangleFlag[xCb][yCb], равным 1, или с geo_flag[xCb][yCb], равным 1.This process is called when decoding a single encoding block with MergeTriangleFlag[xCb][yCb] equal to 1 or geo_flag[xCb][yCb] equal to 1.

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

местоположение яркости (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета яркости текущего снимка,luminance location (xCb, yCb) indicating the upper left sample of the current encoding block relative to the upper left luminance sample of the current picture,

переменная cbWidth, указывающая ширину текущего блока кодирования в дискретных отсчетах яркости,variable cbWidth, indicating the width of the current encoding block in discrete brightness samples,

переменная cbHeight, указывающая высоту текущего блока кодирования в дискретных отсчетах яркости,variable cbHeight indicating the height of the current encoding block in discrete brightness samples,

векторы движения яркости в mvA и mvB с точностью до 1/16 дробного дискретного отсчета,brightness motion vectors in mvA and mvB with an accuracy of 1/16 fractional discrete count,

векторы mvCA и mvCB движения цветности,chrominance motion vectors mvCA and mvCB,

опорные индексы refIdxA и refIdxB,reference indices refIdxA and refIdxB,

флаги predListFlagA и predListFlagB списка предсказания.flags predListFlagA and predListFlagB of the prediction list.

Результатами этого процесса являются:The results of this process are:

массив (cbWidth)x(cbHeight) predSamplesL дискретных отсчетов предсказания яркости,array (cbWidth)x(cbHeight) predSamplesL discrete samples brightness predictions,

массив (cbWidth/2)x(cbHeight/2) predSamplesCb дискретных отсчетов предсказания цветности для компонента Cb,array (cbWidth/2)x(cbHeight/2) predSamplesCb discrete samples color prediction for the Cb component,

массив (cbWidth/2)x(cbHeight/2) predSamplesCr дискретных отсчетов предсказания цветности для компонента Cr.array (cbWidth/2)x(cbHeight/2) predSamplesCr discrete samples color prediction for the Cr component.

Пусть predSamplesLAL и predSamplesLBL будут массивами (cbWidth)x(cbHeight) предсказываемых значений дискретных отсчетов яркости, а predSamplesLACb, predSamplesLBCb, predSamplesLACr и predSamplesLBCr будут массивами (cbWidth/2)x(cbHeight/2) предсказываемых значений дискретных отсчетов цветности.Let predSamplesLA L and predSamplesLB L be (cbWidth)x(cbHeight) arrays of predicted brightness sample values, and let predSamplesLA Cb , predSamplesLB Cb , predSamplesLA Cr and predSamplesLB Cr be (cbWidth/2)x(cbHeight/2) arrays of predicted brightness sample values chromaticity.

predSamplesL, predSamplesCb и predSamplesCr выводятся с помощью следующих упорядоченных этапов:preSamplesL, preSamplesCband preSamplesCrare output from using the following ordered steps:

3. Для N, являющегося каждым из A и B, применяется следующее:3. For N being each of A and B, the following applies:

Опорный снимок, состоящий из упорядоченного двумерного массива refPicLNL дискретных отсчетов яркости и двух упорядоченных двумерных массивов refPicLNCb и refPicLNCr дискретных отсчетов цветности, выводится с X, установленным равным predListFlagN, и refIdxX, установленным равным refIdxN, в качестве входных данных.A reference image consisting of an ordered two-dimensional array refPicLNL discrete brightness samples and two ordered two-dimensional arrays refPicLNCb and refPicLNCr discrete color samples, output with X set equal to predListFlagN, and refIdxX set equal to refIdxN as input.

Массив predSamplesLNL выводится посредством вызова процесса интерполяции дробного дискретного отсчета с местоположением яркости (xCb, yCb), шириной sbWidth блока кодирования яркости, установленной равной cbWidth, высотой sbHeight блока кодирования яркости, установленной равной cbHeight, смещением mvOffset вектора движения, установленным равным (0, 0), вектором mvLX движения, установленным равным mvN, и опорным массивом refPicLXL, установленным равным refPicLNL, переменной bdofFlag, установленой в FALSE ("ЛОЖЬ"), и переменной cIdx, установленой равной 0, в качестве входных данных.Array predSamplesLNL is output via calling a fractional sample interpolation process with luminance location (xCb, yCb), luminance coding block width sbWidth set to cbWidth, luminance coding block height sbHeight set to cbHeight, motion vector offset mvOffset set to (0, 0), vector mvLX motion set to mvN, and reference array refPicLXL, set to refPicLNL, bdofFlag set to FALSE, and cIdx set to 0 as input.

Массив predSamplesLNCb выводится посредством вызова процесса интерполяции дробного дискретного отсчета с расположением яркости (xCb, yCb), шириной sbWidth блока кодирования, установленной равной cbWidth/2, высотой sbHeight блока кодирования, установленной равной cbHeight/2, смещением mvOffset вектора движения, установленным равным (0, 0), вектором mvLX движения, установленным равным mvCN, опорным массивом refPicLXCb, установленным равным refPicLNCb, переменной bdofFlag, установленной в FALSE, и переменная cIdx, установленной равной 1, в качестве входных данных.Array predSamplesLNCb is output via calling a fractional sample interpolation process with luminance location (xCb, yCb), coding block width sbWidth set to cbWidth/2, coding block height sbHeight set to cbHeight/2, motion vector offset mvOffset set to (0, 0), motion vector mvLX set equal to mvCN, reference array refPicLXCb, set equal to refPicLNCb,bdofFlag variable set to FALSE and cIdx variable set to 1 as input.

Массив predSamplesLNCr выводится посредством вызова процесса интерполяции дробного дискретного отсчета с положением яркости (xCb, yCb), шириной sbWidth блока кодирования, установленной равной cbWidth/2, высотой sbHeight блока кодирования, установленной равной cbHeight/2, смещением mvOffset вектора движения, установленным равным (0, 0), вектором mvLX движения, установленным равным mvCN, опорным массивом refPicLXCr, установленным равным refPicLNCr, переменной bdofFlag, установленной в FALSE, и переменной cIdx, установленной равной 2, в качестве входных данных.Array predSamplesLNCr is displayed by calling process of interpolating a fractional sample with brightness position (xCb, yCb), coding block width sbWidth set to cbWidth/2, coding block height sbHeight set to cbHeight/2, motion vector offset mvOffset set to (0, 0), vector motion mvLX set equal to mvCN, reference array refPicLXCr, set equal to refPicLNCr, bdofFlag variable set to FALSE, and cIdx variable set to 2 as input.

4. Если MergeTriangleFlag[xCb][yCb] равно 1, направление разбиения переменной triangleDir режима треугольного слияния устанавливается равной merge_triangle_split_dir[xCb][yCb].4. If MergeTriangleFlag[xCb][yCb] is 1, the split direction of the triangle merge mode variable triangleDir is set to merge_triangle_split_dir[xCb][yCb].

a. Дискретные отсчеты предсказания внутри текущего блока кодирования яркости, predSamplesL[xL][yL] с xL=0…cbWidth - 1 и yL=0…cbHeight - 1, выводятся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима треугольного слияния с шириной nCbW блока кодирования, устанавленной равной cbWidth, высотой nCbH блока кодирования, устанавленной равной cbHeight, массивами predSamplesLAL и predSamplesLBL дискретных отсчетов и переменными triangleDir и cIdx равными 0, в качестве входных данных.a. Prediction samples within the current luma coding block, predSamplesL[xL][yL] with xL=0…cbWidth - 1 and yL=0…cbHeight - 1 are output by calling the weighted sample prediction process for the triangular fusion mode with the coding block width nCbW set to cbWidth, the coding block height nCbH set to cbHeight, arrays predSamplesLAL and predSamplesLBL discrete samples and variables triangleDir and cIdx equal to 0 as input.

b. Дискретные отсчеты предсказания внутри текущего блока кодирования компонента цветности Cb, predSamplesCb[xC][yC] с xC=0…cbWidth/2 - 1 и yC=0…cbHeight/2 - 1, выводтся посредством вызова процесс предсказания взвешенного дискретного отсчета для режима треугольного слияния с шириной nCbW блока кодирования , установленной равной cbWidth/2, высотой nCbH блока кодирования, установленной равной cbHeight/2, массивами predSamplesLACb и predSamplesLBCb дискртеных отсчетов, и переменными triangleDir и cIdx равными 1, в качестве входных данных.b. The prediction samples within the current Cb chroma component encoding block, predSamples Cb [x C ][y C ] with xC=0...cbWidth/2 - 1 and yC=0...cbHeight/2 - 1, are output by calling the weighted sample prediction process for triangular merging mode with the encoding block width nCbW set to cbWidth/2, the encoding block height nCbH set to cbHeight/2, the predSamplesLA Cb and predSamplesLB Cb arrays of sampled samples, and the variables triangleDir and cIdx equal to 1, as input.

d. Дискретные отсчеты предсказания внутри текущего блока кодирования компонента цветности Cr, predSamplesCr[xC][yC] с xC=0…cbWidth/2 - 1 и yC=0…cbHeight/2 - 1, выводятся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима треугольного слияния с шириной nCbW блока кодирования , установленной равной cbWidth/2, высотой nCbH блока кодирования, установленной равной cbHeight/2, массивами predSamplesLACr и predSamplesLBCr дискртеных отсчетов, и переменными triangleDir и cIdx равными 2, в качестве входных данных.d. The prediction samples within the current Cr chrominance component encoding block, predSamples Cr [x C ][y C ] with xC=0...cbWidth/2 - 1 and yC=0...cbHeight/2 - 1, are output by calling the weighted sample prediction process for triangular merging mode with encoding block width nCbW set to cbWidth/2, coding block height nCbH set to cbHeight/2, arrays predSamplesLA Cr and predSamplesLB Cr of sampled samples, and variables triangleDir and cIdx equal to 2, as input.

d. Процесс сохранения вектора движения для режима треугольного слияния вызывается с местоположением блока кодирования яркости (xCb, yCb), шириной cbWidth блока кодирования яркости, высотой cbHeight блока кодирования яркости, направлением triangleDir разбиения, векторами mvA и mvB движения яркости, опорными индексами refIdxA и refIdxB и флагами predListFlagA и predListFlagB списка предсказания в качестве входных данных.d. The motion vector saving process for the triangular fusion mode is called with the luminance encoding block location (xCb, yCb), luminance encoding block width cbWidth, luminance encoding block height cbHeight, split direction triangleDir, luminance motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and flags predListFlagA and predListFlagB of the prediction list as input.

5. Если geo_flag[xCb][yCb] равно 1, переменные angleIdx и distanceIdx, связанные с геометрическим разбиением, устанавливаются в соответствии со значением geo_partitioning_idx[xCb][yCb], как указано в таблице 1.5. If geo_flag[xCb][yCb] is equal to 1, the angleIdx and distanceIdx variables associated with the geometric partitioning are set according to the value of geo_partitioning_idx[xCb][yCb] as specified in Table 1.

a. Запускается процесс выведения весового коэффициента дискретного отсчета для режима слияния геометрического разбиения. Входными данными для процесса являются три упорядоченных массива sampleWeightL, sampleWeightC и motionWeight с размером в (cbWidth)x(cbHeight), (cbWidth/2)x(cbHeight/2) и (cbWidth/4)x(cbHeight/4), соответственно, а также переменные angleIdx, DistanceIdx, cbWidth и cbHeight.a. The process of deriving the weighting coefficient of the discrete sample for the geometric partition merging mode starts. The input to the process is three ordered arrays sampleWeightL, sampleWeightC and motionWeight with sizes of (cbWidth)x(cbHeight), (cbWidth/2)x(cbHeight/2) and (cbWidth/4)x(cbHeight/4), respectively. as well as the variables angleIdx, DistanceIdx, cbWidth and cbHeight.

b. Дискретные отсчеты предсказания внутри текущего блока кодирования яркости, predSamplesL[xL][yL] с xL=0..cbWidth - 1 и yL=0..cbHeight - 1, выводятся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима слияния с геометрическим разбиением с шириной nCbW блока кодирования , установленной равной cbWidth, высотой nCbH блока кодирования, установленной равной cbHeight, массивами дискретных отсчетов predSamplesLAL, predSamplesLBL, predWeightL и cIdx равными 0, в качестве входных данных.b. The prediction samples within the current luminance encoding block, predSamplesL[xL][yL] with xL=0..cbWidth - 1 and yL=0..cbHeight - 1, are output by calling the weighted sample prediction process for the geometric split fusion mode with encoding block width nCbW set equal to cbWidth, encoding block height nCbH set equal to cbHeight, sample arrays predSamplesLAL, predSamplesLBL, predWeightL and cIdx equal to 0, as input data.

c. Дискретные отсчеты предсказания внутри текущего блока кодирования компонента цветности Cb, predSamplesCb[xC][yC] с xC=0..cbWidth/2 - 1 и yC=0..cbHeight/2 - 1, выводятся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима слияния геометрического разбиения с шириной nCbW блока кодирования , установленной равной cbWidth/2, высотой nCbH блока кодирования, установленной равной cbHeight/2, массивами дискретных отсчетов predSamplesLACb, predSamplesLBCb, predWeightC и cIdx равными 1, в качестве входных данных.c. The prediction samples within the current Cb chrominance component encoding block, predSamplesCb[xC][yC] with xC=0..cbWidth/2 - 1 and yC=0..cbHeight/2 - 1, are output by calling the weighted sample prediction process for geometric partition fusion mode with coding block width nCbW set to cbWidth/2, coding block height nCbH set to cbHeight/2, sample arrays predSamplesLACb, predSamplesLBCb, predWeightC and cIdx equal to 1, as input data.

d. Дискретные отсчеты предсказания внутри текущего блока кодирования компонента цветности Cr, predSamplesCr[xC][yC] с xC=0..cbWidth/2 - 1 и yC=0..cbHeight/2 - 1, выводтся посредством вызова процесса предсказания взвешенного дискретного отсчета для режима слияния геометрического разбиения, как указано в п. 8.5.8.3, с шириной nCbW блока кодирования , установленной равной cbWidth/2, высотой nCbH блока кодирования, установленной равной cbHeight/2, массивами predSamplesLACr, predSamplesLBCr дискретных отсчетов, predWeightC и cIdx равными 2, в качестве входов.d. The prediction samples within the current Cr chrominance component encoding block, predSamplesCr[xC][yC] with xC=0..cbWidth/2 - 1 and yC=0..cbHeight/2 - 1, are output by calling the weighted sample prediction process for geometric partition fusion mode, as specified in clause 8.5.8.3, with the width nCbW of the coding block set equal to cbWidth/2, the height nCbH of the coding block set to cbHeight/2, arrays predSamplesLACr, predSamplesLBCr of discrete samples, predWeightC and cIdx equal to 2, as inputs.

e. Процесс сохранения вектора движения для режима геометрического слияния вызывается с местоположением блока кодирования яркости (xCb, yCb), шириной cbWidth блока кодирования яркости, высотой cbHeight блока кодирования яркости, массивом motionWeight дискретных отсчетов, векторами mvA и mvB движения яркости, опорными индексами refIdxA и refIdxB и флагами predListFlagA и predListFlagB списка предсказания в качестве входных данных.e. The motion vector storing process for the geometric fusion mode is called with the luminance coding block location (xCb, yCb), luminance coding block width cbWidth, luminance coding block height cbHeight, motionWeight array of samples, luminance motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and with the prediction list flags predListFlagA and predListFlagB as input.

Процесс соотнесения опорного снимка для режима треугольного слиянияReference image matching process for triangular merge mode

Входными данными в этот процесс является следующее:The input data to this process is the following:

переменная X, представляющая список ссылок, равна 0 или 1,the variable X representing the list of links is 0 or 1,

опорный индекс refIdxN.reference index refIdxN.

Результат этого процесса:The result of this process:

опорный индекс refIdxTemp.reference index refIdxTemp.

Переменная refPicPoc выводится следующим образом:The refPicPoc variable is output as follows:

refPicPoc=(X== 0) ? RefPicList[0][refIdxN] : RefPicList[1][refIdxN] (8-878)refPicPoc=(X== 0) ? RefPicList[0][refIdxN] : RefPicList[1][refIdxN] (8-878)

Список опорных снимков refPicListTemp выводится следующим образом:The list of reference pictures refPicListTemp is displayed as follows:

refPicListTemp=(X== 0) ? RefPicList[1] : RefPicList[0] (8-879)refPicListTemp=(X== 0) ? RefPicList[1] : RefPicList[0] (8-879)

Переменная refIdxTemp получается следующим образом:The refIdxTemp variable is obtained as follows:

Переменная mapStop устанавливается равной FALSE.The mapStop variable is set to FALSE.

Для переменной refIdxm с m=0..NumRefIdxActive[1] - 1 применяется следующее, пока mapStop не будет равен FALSE:For variable refIdxm with m=0..NumRefIdxActive[1] - 1, the following applies until mapStop is FALSE:

refIdxTemp=(refPicListTemp[refIdxm]== refPicPoc) ? refIdxm : -1 (8-880)refIdxTemp=(refPicListTemp[refIdxm]== refPicPoc) ? refIdxm : -1 (8-880)

mapStop=(refIdxTemp!= -1)? TRUE : FALSE (8-881)mapStop=(refIdxTemp!= -1)? TRUE : FALSE (8-881)

Процесс выведения весового коэффициента дискретного отсчета для режима слияния геометрического разбиенияThe process of deriving the weighting coefficient of a discrete sample for the merging mode of a geometric partition

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,two variables nCbW and nCbH, defining the width and height of the current encoding block,

две переменные angleIdx и DistanceIdx, которые определяют значения поиска угла и расстояния для текущего режима геометрического разбиения,two variables angleIdx and DistanceIdx, which define the angle and distance search values for the current geometric partitioning mode,

(nCbW)x(nCbH) массив sampleWeightL,(nCbW)x(nCbH) array sampleWeight L ,

(nCbW/2)x(nCbH/2) массив sampleWeightC,(nCbW/2)x(nCbH/2) array sampleWeight C ,

(nCbW/4)x(nCbH/4) массив motionWeight.(nCbW/4)x(nCbH/4) motionWeight array.

Результатом этого процесса являются те же три массива sampleWeightL, sampleWeightC и motionWeight со значениями весовые коэффициенты для дискретного отсчета, имеющими диапазон от 0 … 8.The result of this process is the same three arrays sampleWeight L, sampleWeightC and motionWeight with weighting coefficients for the discrete sample having a range from 0 ... 8.

4. Весовые коэффициенты смешивания яркости, сохраненные в sampleWeightL для текущего режима геометрического разбиения, выводятся следующим образом:4. The luminance blending weights stored in sampleWeight L for the current geometric partitioning mode are output as follows:

Устанавливаются значения следующих переменных:The following variables are set:

wIdx установлен в log2 (nCbW) - 3,wIdx is set to log2 (nCbW) - 3,

hIdx устанавливается равным log2(nCbH) - 3,hIdx is set equal to log2(nCbH) - 3,

stepOffset установлен в 64,stepOffset is set to 64,

следующие переменные устанавливаются в соответствии со сравнением (wIdx >= hIdx):the following variables are set according to the comparison (wIdx >= hIdx):

whRratio=(wIdx >= hIdx) ? wIdx - hIdx : hIdx - wIdx (8-882)whRratio=(wIdx >= hIdx) ? wIdx - hIdx : hIdx - wIdx (8-882)

wIsLargerH=(wIdx >= hIdx)? true : false (8-883)wIsLargerH=(wIdx >= hIdx)? true : false (8-883)

scaleStep=(wIdx >= hIdx)? (1 << hIdx) : (1 << wIdx) (8-884)scaleStep=(wIdx >= hIdx)? (1 << hIdx) : (1 << wIdx) (8-884)

displacementX установлено в angularIdxdisplacementX is set to angularIdx

displacementY установлено в (displacementX+8)% 32displacementY set to (displacementX+8)% 32

angleN устанавливается равным:angleN is set to:

angleN=angleIdx, если angleIdx >= 0 && angleIdx <=8,angleN=angleIdx, if angleIdx >= 0 && angleIdx <=8,

angleN=16 - angleIdx, если angleIdx > 8 && angleIdx<= 16,angleN=16 - angleIdx, if angleIdx > 8 && angleIdx<= 16,

angleN=angleIdx - 16, если angleIdx > 16 && angleIdx <=24,angleN=angleIdx - 16 if angleIdx > 16 && angleIdx <=24,

angleN=32 - angleIdx в противном случае,angleN=32 - angleIdx otherwise,

далее angleN устанавливается в следующее значение, зависящее от wIsLargerH:then angleN is set to the following value, depending on wIsLargerH:

angleN=(wIsLargerH) ? 8 - angleN : angleN angleN=(wIsLargerH) ? 8 - angleN : angleN

stepDis устанавливается в соответствии со значениями whRatio и angleN, как указано в таблице 2 и далее,stepDis is set according to the whRatio and angleN values as specified in Table 2ff.

stepSize=stepDis+stepOffsetstepSize=stepDis+stepOffset

rho устанавливается в следующее значение с использованием таблицы поиска, обозначенной как Dis, указанной в таблице 3:rho is set to the following value using the lookup table, designated Dis, listed in Table 3:

rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis[displacementX] + nCbH*Dis[displacementY] . (8-885)rho=DistanceIdx*stepSize*scaleStep+nCbW*Dis[displacementX] + nCbH*Dis[displacementY] . (8-885)

Для каждого положения дискретного отсчета x=0… nCbW - 1 и y=0… nCbH - 1 значение sampleWeightL[x][y] выводится следующим образом:For each sample position x=0… nCbW - 1 and y=0… nCbH - 1 the sampleWeight L [x][y] value is output as follows:

расстояние distFromLine[x][y] вычисляется с использованием таблицы поиска, обозначенной как Dis, указанной в таблице 3 следующим образом:the distance distFromLine[x][y] is calculated using the lookup table denoted Dis, listed in Table 3 as follows:

distFromLine[x][y]=((x<<1) + 1)*Dis[displacementX] + ((y<<1) + 1))*Dis[displacementY] - rho (8-886)distFromLine[x][y]=((x<<1) + 1)*Dis[displacementX] + ((y<<1) + 1))*Dis[displacementY] - rho (8-886)

Масштабированное расстояние distScaled получается следующим образом:The scaled distance distScaled is obtained as follows:

distScaled=min((abs(distFromLine[x][y]) + 8) >> 4, 14). (8-887)distScaled=min((abs(distFromLine[x][y]) + 8) >> 4, 14). (8-887)

Значение sampleWeightL[x][y] устанавливается в соответствии с таблицей поиска весовых коэффициентов фильтра, обозначенной как GeoFilter, указанной в таблице 4, как:The value of sampleWeight L [x][y] is set according to the filter weight lookup table designated as GeoFilter listed in Table 4 as:

sampleWeightL[x][y]=GeoFilter[distScaled], если distFromLine <= 0sampleWeight L [x][y]=GeoFilter[distScaled] if distFromLine <= 0

sampleWeightL[x][y]=8 - GeoFilter [distScaled], если distFromLine > 0sampleWeight L [x][y]=8 - GeoFilter [distScaled] if distFromLine > 0

5. Весовые коэффициенты цветности, хранящиеся в sampleWeightC для текущего режима геометрического разбиения, выводятся следующим образом:5. The chroma weights stored in sampleWeight C for the current geometric partitioning mode are output as follows:

Для каждого положения дискретного отсчета x=0… (nCbW/2) - 1 и y=0… (nCbH/2) - 1 значение sampleWeightC[x][y] выводится следующим образом:For each sample position x=0… (nCbW/2) - 1 and y=0… (nCbH/2) - 1 the sampleWeight C [x][y] value is output as follows:

sampleWeightC[x][y]=sampleWeightL[(x<<1)][(y<<1)]sampleWeight C [x][y]=sampleWeight L [(x<<1)][(y<<1)]

6. Весовые коэффициенты движения, хранящиеся в массиве motionWeight для текущего режима геометрического разбиения, выводятся следующим образом:6. The motion weights stored in the motionWeight array for the current geometric partitioning mode are output as follows:

Следующие переменные устанавливаются в соответствии с таблицей 5:The following variables are set according to Table 5:

threshLower=- RhoMax[angleN] threshLower=- RhoMax[angleN]

threshUpper=RhoMax[angleN].threshUpper=RhoMax[angleN].

Для каждого положения дискретного отсчета x=0… (nCbW/4) - 1 и y=0… (nCbH/4) - 1 значение motionWeight[x][y] выводится следующим образом:For each sample position x=0… (nCbW/4) - 1 and y=0… (nCbH/4) - 1 the motionWeight[x][y] value is output as follows:

Cnt=distFromLine[x*4+1][y*4+1] Значение motionWeight[x][y] устанавливается равным:Cnt=distFromLine[x*4+1][y*4+1] The motionWeight[x][y] value is set to:

motionWeight[x][y]=0, если Cnt <= threshLowermotionWeight[x][y]=0 if Cnt <= threshLower

motionWeight[x][y]=1, если Cnt >= threshUppermotionWeight[x][y]=1 if Cnt >= threshUpper

motionWeight[x][y]=2 иначеmotionWeight[x][y]=2 otherwise

Процесс предсказания взвешенного дискретного отсчета для режима слияния с геометрическим разбиениемWeighted sample prediction process for fusion mode with geometric partitioning

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,two variables nCbW and nCbH, defining the width and height of the current encoding block,

два массива (nCbW)x(nCbH) predSamplesLA и predSamplesLB,two arrays (nCbW)x(nCbH) predSamplesLA and predSamplesLB,

Массив (nCbW)x(nCbH) sampleWeight,Array (nCbW)x(nCbH) sampleWeight,

переменная cIdx, указывающая индекс компонента цвета.cIdx variable indicating the index of the color component.

Результатом этого процесса является массив (nCbW)x(nCbH) pbSamples значений дискретных отсчетов предсказания.The result of this process is an array (nCbW)x(nCbH) pbSamples of prediction sample values.

Переменная bitDepth выводится следующим образом:The bitDepth variable is output as follows:

- Если cIdx равен 0, bitDepth устанавливается равной BitDepthY.- If cIdx is 0, bitDepth is set to BitDepthY.

- В противном случае bitDepth устанавливается равной BitDepthC.- Otherwise, bitDepth is set equal to BitDepthC.

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

- Переменная shift1 устанавливается равной Max(5, 17 - bitDepth).- The shift1 variable is set to Max(5, 17 - bitDepth).

- Переменная offset1 устанавливается равной 1 << (shift1 - 1).- The offset1 variable is set to 1 << (shift1 - 1).

Значения дискретных отсчетов предсказания выводятся следующим образом:The prediction sample values are output as follows:

pbSamples[х][у] =pbSamples[x][y] =

Clip3(0, (1 << bitDepth) - 1,Clip3(0, (1 << bitDepth) - 1,

(predSamplesLA[x][y] * sampleWeight[x][y](predSamplesLA[x][y] * sampleWeight[x][y]

+ predSamplesLB[x][y] * (8 - sampleWeight [x][y]) + offset1) >> shift1)+ predSamplesLB[x][y] * (8 - sampleWeight [x][y]) + offset1) >> shift1)

Сохранение векторов движения для режима слияния геометрического разбиенияSaving motion vectors for geometric mesh merging mode

Этот процесс вызывается при декодировании единичного блока кодирования с geo_flag[xCb][yCb] равным 1.This process is called when decoding a single encoding block with geo_flag[xCb][yCb] equal to 1.

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

местоположение яркости (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета яркости текущего снимка,luminance location (xCb, yCb) indicating the upper left sample of the current encoding block relative to the upper left luminance sample of the current picture,

переменная cbWidth, указывающая ширину текущего блока кодирования в дискретных отсчетах яркости,variable cbWidth, indicating the width of the current encoding block in discrete brightness samples,

переменная cbHeight, указывающая высоту текущего блока кодирования в дискретных отсчетах яркости,variable cbHeight indicating the height of the current encoding block in discrete brightness samples,

массив motionWeight размером (cbWidth/4)x(cbHeight/4), содержащий индексы назначения движения,motionWeight array of size (cbWidth/4)x(cbHeight/4) containing motion destination indices,

векторы движения яркости в mvA и mvB с точностью до 1/16 дробного дискретного отсчета,brightness motion vectors in mvA and mvB with an accuracy of 1/16 fractional discrete count,

опорные индексы refIdxA и refIdxB, Datareference indices refIdxA and refIdxB, Data

флаги predListFlagA и predListFlagB списка предсказания.flags predListFlagA and predListFlagB of the prediction list.

Переменные numSbX и numSbY, определяющие количество блоков 4×4 в текущем блоке кодирования по горизонтали и вертикали, устанавливаются равными numSbX=cbWidth >> 2 и numSbY=cbHeight >> 2.The variables numSbX and numSbY, which determine the number of 4x4 blocks in the current encoding block horizontally and vertically, are set to numSbX=cbWidth >> 2 and numSbY=cbHeight >> 2.

Переменная minSb устанавливается равной min(numSbX, numSbY).The variable minSb is set equal to min(numSbX, numSbY).

Переменная refIdxTempA выводится посредством вызова процесса соотнесения опорного снимка для режима треугольного слияния, указанного в пункте 8.5.7.4, с X, установленным равным predListFlagA, и refIdxN, установленным равным refIdxA, в качестве входных данных.The variable refIdxTempA is derived by calling the reference snapshot mapping process for the triangular merge mode specified in clause 8.5.7.4 with X set to predListFlagA and refIdxN set to refIdxA as input.

Переменная refIdxTempB выводится посредством запуска процесса соотнесения опорного снимка для режима треугольного слияния, указанного в пункте 8.5.7.4, с X, установленным равным predListFlagB, и refIdxN, установленным равным refIdxB, в качестве входных данных.The variable refIdxTempB is derived by running the reference snapshot matching process for the triangular merge mode specified in clause 8.5.7.4 with X set to predListFlagB and refIdxN set to refIdxB as input.

Для каждого подблока 4×4 с индексом подблока (xSbIdx, ySbIdx) с xSbIdx=0..numSbX - 1 и ySbIdx=0..numSbY - 1 применяется следующее:For each 4x4 subblock with a subblock index (xSbIdx, ySbIdx) with xSbIdx=0..numSbX - 1 and ySbIdx=0..numSbY - 1, the following applies:

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

predFlagL0=(predListFlagA== 0) ? 1 : 0 (8-888)predFlagL0=(predListFlagA== 0) ? 1 : 0 (8-888)

predFlagL1=(predListFlagA== 0) ? 0 : 1 (8-889)predFlagL1=(predListFlagA== 0) ? 0 : 1 (8-889)

refIdxL0=(predListFlagA== 0) ? refIdxA : -1 (8-890)refIdxL0=(predListFlagA== 0) ? refIdxA : -1 (8-890)

refIdxL1=(predListFlagA== 0) ? -1 : refIdxA (8-891)refIdxL1=(predListFlagA== 0) ? -1 : refIdxA (8-891)

mvL0 [0]=(predListFlagA== 0) ? mvA[0] : 0 (8-892)mvL0 [0]=(predListFlagA== 0) ? mvA[0] : 0 (8-892)

mvL0[1]=(predListFlagA== 0) ? mvA[1]: 0 (8-893)mvL0[1]=(predListFlagA== 0) ? mvA[1]: 0 (8-893)

mvL1 [0]=(predListFlagA== 0) ? 0 : mvA[0] (8-894)mvL1 [0]=(predListFlagA== 0) ? 0 : mvA[0] (8-894)

mvL1[1]=(predListFlagA== 0) ? 0 : mvA[1] (8-895)mvL1[1]=(predListFlagA== 0) ? 0 : mvA[1] (8-895)

В противном случае, если motionWeight[xSbIdx][ySbIdx] равен 1, применяется следующее:Otherwise, if motionWeight[xSbIdx][ySbIdx] is 1, the following applies:

predFlagL0=(predListFlagB== 0) ? 1 : 0 (8-896)predFlagL0=(predListFlagB== 0) ? 1 : 0 (8-896)

predFlagL1=(predListFlagB== 0) ? 0 : 1 (8-897)predFlagL1=(predListFlagB== 0) ? 0 : 1 (8-897)

refIdxL0=(predListFlagB== 0) ? refIdxB : -1 (8-898)refIdxL0=(predListFlagB== 0) ? refIdxB : -1 (8-898)

refIdxL1=(predListFlagB== 0) ? -1 : refIdxB (8-899)refIdxL1=(predListFlagB== 0) ? -1 : refIdxB (8-899)

mvL0 [0]=(predListFlagB== 0) ? mvB[0] : 0 (8-900)mvL0 [0]=(predListFlagB== 0) ? mvB[0] : 0 (8-900)

mvL0[1]=(predListFlagB== 0) ? mvB[1]: 0 (8-901)mvL0[1]=(predListFlagB== 0) ? mvB[1]: 0 (8-901)

mvL1 [0]=(predListFlagB== 0) ? 0 : mvB[0] (8-902)mvL1 [0]=(predListFlagB== 0) ? 0 : mvB[0] (8-902)

mvL1[1]=(predListFlagB== 0) ? 0 : mvB[1] (8-903)mvL1[1]=(predListFlagB== 0) ? 0 : mvB[1] (8-903)

В противном случае (motionWeight[xSbIdx][ySbIdx] равно 2) применяется следующее:Otherwise (motionWeight[xSbIdx][ySbIdx] is 2) the following applies:

Если predListFlagA+predListFlagB равен 1,If predListFlagA+predListFlagB is 1,

predFlagL0=1 (8-904)predFlagL0=1 (8-904)

predFlagL1=1 (8-905)predFlagL1=1 (8-905)

refIdxL0=(predListFlagA== 0) ? refIdxA : refIdxB (8-906)refIdxL0=(predListFlagA== 0) ? refIdxA : refIdxB (8-906)

refIdxL1=(predListFlagA== 0) ? refIdxB : refIdxA (8-907)refIdxL1=(predListFlagA== 0) ? refIdxB : refIdxA (8-907)

mvL0 [0]=(predListFlagA== 0) ? mvA[0] : mvB[0] (8-908)mvL0 [0]=(predListFlagA== 0) ? mvA[0] : mvB[0] (8-908)

mvL0[1]=(predListFlagA== 0) ? mvA[1] : mvB[1] (8-909)mvL0[1]=(predListFlagA== 0) ? mvA[1] : mvB[1] (8-909)

mvL1 [0]=(predListFlagA== 0) ? mvB[0] : mvA[0] (8-910)mvL1 [0]=(predListFlagA== 0) ? mvB[0] : mvA[0] (8-910)

mvL1[1]=(predListFlagA== 0) ? mvB[1] : mvA[1] (8-911)mvL1[1]=(predListFlagA== 0) ? mvB[1] : mvA[1] (8-911)

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

predFlagL0=1 (8-912)predFlagL0=1 (8-912)

predFlagL1=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-913)predFlagL1=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-913)

refIdxL0=(refIdxTempB != -1) ? refIdxA : (8-914) ((refIdxTempA != -1) ? refIdxB : refIdxA) refIdxL0=(refIdxTempB != -1) ? refIdxA : (8-914) ((refIdxTempA != -1) ? refIdxB : refIdxA)

refIdxL1=(refIdxTempB != -1) ? refIdxTempB : (8-915) ((refIdxTempA != -1) ? refIdxTempA : -1) refIdxL1=(refIdxTempB != -1) ? refIdxTempB : (8-915) ((refIdxTempA != -1) ? refIdxTempA : -1)

mvL0[0] = (refIdxTempB != -1) ? mvA[0] : (8-916) ((refIdxTempA != -1) ? mvB[0] : mvA[0]) mvL0[0] = (refIdxTempB != -1) ? mvA[0] : (8-916) ((refIdxTempA != -1) ? mvB[0] : mvA[0])

mvL0[1] = (refIdxTempB != -1) ? mvA[1]: (8-917) ((refIdxTempA != -1) ? mvB[1] : mvA[1]) mvL0[1] = (refIdxTempB != -1) ? mvA[1]: (8-917) ((refIdxTempA != -1) ? mvB[1] : mvA[1])

mvL1[0] = (refIdxTempB != -1) ? mvB[0] : (8-918) ((refIdxTempA != -1) ? mvA[0] : 0)mvL1[0] = (refIdxTempB != -1) ? mvB[0] : (8-918) ((refIdxTempA != -1) ? mvA[0] : 0)

mvL1[1] = (refIdxTempB != -1) ? mvB[1]: (8-919) ((refIdxTempA != -1) ? mvA[1] : 0)mvL1[1] = (refIdxTempB != -1) ? mvB[1]: (8-919) ((refIdxTempA != -1) ? mvA[1] : 0)

Если значение predListFlagA+predListFlagB равно 2, применяется следующее:If the value of predListFlagA+predListFlagB is 2, the following applies:

predFlagL0=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-920)predFlagL0=(refIdxTempA== -1 && refIdxTempB== -1) ? 0 : 1 (8-920)

predFlagL1=1 (8-921)predFlagL1=1 (8-921)

refIdxL0=(refIdxTempB != -1) ? refIdxTempB : (8-922) ((refIdxTempA != -1) ? refIdxTempA : -1) refIdxL0=(refIdxTempB != -1) ? refIdxTempB : (8-922) ((refIdxTempA != -1) ? refIdxTempA : -1)

refIdxL1=(refIdxTempB != -1) ? refIdxA : (8-923) ((refIdxTempA != -1) ? refIdxB : refIdxA) refIdxL1=(refIdxTempB != -1) ? refIdxA : (8-923) ((refIdxTempA != -1) ? refIdxB : refIdxA)

mvL0[0] = (refIdxTempB != -1) ? mvB[0] : (8-924) ((refIdxTempA != -1) ? mvA[0] : 0)mvL0[0] = (refIdxTempB != -1) ? mvB[0] : (8-924) ((refIdxTempA != -1) ? mvA[0] : 0)

mvL0[1] = (refIdxTempB != -1) ? mvB[1]: (8-925) ((refIdxTempA != -1) ? mvA[1] : 0)mvL0[1] = (refIdxTempB != -1) ? mvB[1]: (8-925) ((refIdxTempA != -1) ? mvA[1] : 0)

mvL1[0] = (refIdxTempB != -1) ? mvA[0] : (8-926) ((refIdxTempA != -1) ? mvB[0] : mvA[0]) mvL1[0] = (refIdxTempB != -1) ? mvA[0] : (8-926) ((refIdxTempA != -1) ? mvB[0] : mvA[0])

mvL1[1] = (refIdxTempB != -1) ? mvA[1]: (8-927) ((refIdxTempA != -1) ? mvB[1] : mvA[1]) mvL1[1] = (refIdxTempB != -1) ? mvA[1]: (8-927) ((refIdxTempA != -1) ? mvB[1] : mvA[1])

Для x=0..3 и y=0..3 сделаны следующие назначения:For x=0..3 and y=0..3 the following assignments are made:

MvL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL0 (8-928)MvL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL0 (8-928)

MvL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL1 (8-929)MvL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=mvL1 (8-929)

RefIdxL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL0 (8-930)RefIdxL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL0 (8-930)

RedIdxL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL1 (8-931)RedIdxL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=refIdxL1 (8-931)

PredFlagL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL0 (8-932)PredFlagL0[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL0 (8-932)

PredFlagL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL1 (8-933)PredFlagL1[(xSbIdx << 2) + x][(ySbIdx << 2) + y]=predFlagL1 (8-933)

В альтернативном варианте реализации этапа 6 «Процесс выведения весового коэффициента дискретного отсчета для режима слияния геометрического разбиения» может быть реализован следующим образом:In an alternative implementation of step 6 “The process of deriving the discrete sample weight coefficient for the geometric partition merging mode” can be implemented as follows:

6. Весовые коэффициенты движения, хранящиеся в массиве motionWeight для текущего режима геометрического разбиения, выводятся следующим образом:6. The motion weights stored in the motionWeight array for the current geometric partitioning mode are output as follows:

Следующие переменные устанавливаются в соответствии с таблицей 5:The following variables are set according to Table 5:

threshLower=- RhoMax[angleN]threshLower=- RhoMax[angleN]

threshUpper=RhoMax[angleN].threshUpper=RhoMax[angleN].

Для каждого положения дискретного отсчета x=0... (nCbW/4) - 1 и y=0… (nCbH/4) - 1 значение motionWeight[x][y] выводится следующим образом:For each sample position x=0... (nCbW/4) - 1 and y=0... (nCbH/4) - 1 the motionWeight[x][y] value is output as follows:

Cnt=((x<<4) + 3)*Dis[смещениеХ] + ((y<<4) + 3))*Dis[смещениеY] - rho<<1Cnt=((x<<4) + 3)*Dis[offsetX] + ((y<<4) + 3))*Dis[offsetY] - rho<<1

Значение motionWeight[x][y] равно:The motionWeight[x][y] value is:

motionWeight[x][y]=0, если Cnt <= threshLowermotionWeight[x][y]=0 if Cnt <= threshLower

motionWeight[x][y]=1, если Cnt >= threshUppermotionWeight[x][y]=1 if Cnt >= threshUpper

motionWeight[x][y]=2 иначеmotionWeight[x][y]=2 otherwise

В приведенной выше примерной реализации этапа 6 «Процесс выведения весового коэффициента дискретного отсчета для режима слияния геометрического разбиения» уравнение "Cnt=((x<<4) + 3)*Dis[displacementX] + ((y<&lt;4) + 3))*Dis[displacementY] - rho<<1” соответствует вычислению расстояния между центром тяжести набора дискретных отсчетов и линией. Набор дискретных отсчетов в этом примере состоит из 16 дискретных отсчетов со следующими координатами:In the above example implementation of step 6 "Process of discrete sample weight derivation for geometric partition merging mode", the equation "Cnt=((x<<4) + 3)*Dis[displacementX] + ((y<<4) + 3 ))*Dis[displacementY] - rho<<1" corresponds to calculating the distance between the center of gravity of the sample set and the line. The sample set in this example consists of 16 samples with the following coordinates:

(х*4,у*4), (х*4+1,у*4), (х*4+2,у*4), (х*4+3,у*4), (х*4,у*4+1), (х*4+1,у*4+1), (х*4+2,у*4+1), (х*4+3,у*4+1), (х*4,у*4+2), (х*4+1,у*4+2), (х*4+2,у*4+2), (х*4+3,у*4 +2), (х*4,у*4+3), (х*4+1,у*4+3), (х*4+2,у*4+3), (х*4+3,у*4+3).(x*4,y*4), (x*4+1,y*4), (x*4+2,y*4), (x*4+3,y*4), (x*4 ,y*4+1), (x*4+1,y*4+1), (x*4+2,y*4+1), (x*4+3,y*4+1), (x*4,y*4+2), (x*4+1,y*4+2), (x*4+2,y*4+2), (x*4+3,y*4 +2), (x*4,y*4+3), (x*4+1,y*4+3), (x*4+2,y*4+3), (x*4+3 ,у*4+3).

Координаты центра тяжести (x*4+1,5,y*4+1,5). В приведенном выше уравнении все аддитивные члены уравнения умножаются на 2, чтобы сделать смещения координат 1,5 целочисленными (следовательно, 3 в этом примере), поскольку целочисленная арифметика является желательной функцией реализации.Coordinates of the center of gravity (x*4+1.5,y*4+1.5). In the above equation, all additive terms in the equation are multiplied by 2 to make the coordinate offsets 1.5 integer (hence 3 in this example), since integer arithmetic is the desired implementation feature.

В пятом варианте осуществления устройство для хранения информации о движении, как показано на Фиг.21, выглядит следующим образом:In the fifth embodiment, the motion information storage device, as shown in FIG. 21, is as follows:

Устройство (3000) хранения информации о движении, при этом текущий блок состоит из первого подблока и второго подблока, первый подблок и второй подблок отделены общей границей, первый подблок соответствует первой информации о движении, и второй подблок соответствует второй информации о движении, при этом устройство (3000) содержит: модуль вычисления (3001), выполненный с возможностью определения расстояния между набором дискретных отсчетов в текущем блоке и общей границей; и модуль (3002) сравнения, выполненный с возможностью сравнения расстояния с пороговой величиной для определения того, что третья информация о движении сохранена для набора дискретных отсчетов, при этом третья информация о движении выводится из первой информации о движении и второй информации о движении.A motion information storage device (3000), wherein the current block is composed of a first sub-block and a second sub-block, the first sub-block and the second sub-block are separated by a common boundary, the first sub-block corresponds to the first motion information, and the second sub-block corresponds to the second motion information, wherein the device (3000) contains: a calculation module (3001) configured to determine the distance between a set of discrete samples in the current block and a common boundary; and a comparison unit (3002) configured to compare the distance with a threshold value to determine that third motion information is stored for a set of discrete samples, wherein the third motion information is derived from the first motion information and the second motion information.

В возможном варианте реализации, в котором модуль сравнения (3002) выполнен с возможностью:In a possible implementation in which the comparison module (3002) is configured to:

определять, что третья информация о движении сохранена для набора дискретных отсчетов, в случае, при котором абсолютное значение расстояния меньше или равно пороговой величине.determine that the third motion information is stored for a set of discrete samples, in a case in which the absolute value of the distance is less than or equal to the threshold value.

В возможном варианте реализации, в котором в случае, при котором абсолютное значение расстояния больше пороговой величины, модуль сравнения (3002) дополнительно выполнен с возможностью: определять, что первая информация о движении сохранена для набора дискретных отсчетов, в случае, при котором расстояние является положительным; или определить, что вторая информация о движении сохранена для набора дискретных отсчетов, в случае, при котором расстояние является отрицательным.In a possible implementation in which, in a case in which the absolute value of the distance is greater than a threshold value, the comparison module (3002) is further configured to: determine that the first motion information is stored for a set of discrete samples, in the case in which the distance is positive ; or determine that the second motion information is stored for a set of discrete samples, in the case where the distance is negative.

В возможном варианте реализации пороговая величина является предварительно определенной.In an exemplary embodiment, the threshold value is predetermined.

В возможном варианте реализации пороговая величина основана на геометрическом соотношении между общей границей и горизонтальным направлением или вертикальным направлением.In an exemplary embodiment, the threshold is based on a geometric relationship between the common boundary and the horizontal direction or vertical direction.

В возможном варианте реализации пороговая величина основана на угле между перпендикулярным направлением общей границы и горизонтальным направлением или вертикальным направлением.In an exemplary embodiment, the threshold is based on the angle between the perpendicular direction of the common boundary and the horizontal direction or vertical direction.

В возможном варианте реализации пороговая величина основана на ширине и/или высоте текущего блока.In an exemplary embodiment, the threshold is based on the width and/or height of the current block.

В возможном варианте реализации, в котором общая граница определяется посредством углового параметра и параметра расстояния, модуль вычисления (3001) дополнительно выполнен с возможностью: определения углового параметра и параметра расстояния.In a possible implementation in which the common boundary is determined by an angular parameter and a distance parameter, the calculation module (3001) is further configured to: determine the angular parameter and the distance parameter.

В возможном варианте реализации, в котором в декодере модуль вычисления (3001) дополнительно выполнен с возможностью: выделения посредством анализа углового параметра и параметра расстояния из битового потока; или выделения посредством анализа указателя из битового потока и получения углового параметра и параметра расстояния на основе указателя.In a possible implementation in which, in the decoder, the calculation module (3001) is further configured to: extract, by analyzing, an angular parameter and a distance parameter from the bit stream; or extracting by parsing a pointer from the bitstream and deriving an angular parameter and a distance parameter based on the pointer.

В возможном варианте реализации модуль (3001) вычисления дополнительно выполнен с возможностью: определения первого вычислительного параметра на основе углового параметра; вычисления временного углового параметра на основе углового параметра; определения второго вычислительного параметра на основе временного углового параметра; и вычисления третьего вычислительного параметра на основе углового параметра и параметра расстояния.In a possible embodiment, the calculation module (3001) is further configured to: determine the first calculation parameter based on the angular parameter; calculating a temporary angular parameter based on the angular parameter; determining a second computational parameter based on the time angular parameter; and calculating a third calculation parameter based on the angular parameter and the distance parameter.

В возможном варианте реализации, в котором первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно угловому параметру, а второй вычислительный параметр определяется посредством проверки упомянутой таблицы поиска согласно временному угловому параметру, и в котором первый вычислительный параметр и второй вычислительный параметр являются значением косинуса и значением синуса одного и того же угла, соответственно.In an exemplary embodiment, wherein a first computational parameter is determined by checking a preset lookup table according to an angular parameter, and a second computational parameter is determined by checking said lookup table according to a temporary angular parameter, and wherein the first computational parameter and the second computational parameter are a cosine value and the value of the sine of the same angle, respectively.

В возможном варианте реализации расстояние вычисляется следующим образом:In a possible implementation, the distance is calculated as follows:

distFromLine=(x+K)*P1+(y+K)*P2-P3,distFromLine=(x+K)*P1+(y+K)*P2-P3,

где P1, P2 и P3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром, соответственно, distFromLine представляет расстояние, K является неотрицательным целым числом, x представляет горизонтальную координату целевого положения в наборе дискретных отсчетов, y представляет вертикальную координату целевого положения в прямоугольной системе координат, где положение верхнего левого дискретного отсчета текущего блока устанавливается в качестве начала координат, направление вправо устанавливается в качестве положительного горизонтального направления, а направление вниз устанавливается в качестве положительного вертикального направления.where P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter, respectively, distFromLine represents the distance, K is a non-negative integer, x represents the horizontal coordinate of the target position in the sample set, y represents the vertical coordinate of the target position in the rectangular a coordinate system where the position of the top left sampled reference of the current block is set as the origin, the right direction is set as the positive horizontal direction, and the down direction is set as the positive vertical direction.

В возможном варианте реализации, где K равно 1.In a possible implementation where K is equal to 1.

В возможном варианте реализации, в котором целевое положение предварительно определено в наборе дискретных отсчетов.In a possible implementation in which the target position is predefined in a set of discrete samples.

В возможном варианте реализации, в котором предварительно определенное положение является верхним левым положением набора дискретных отсчетов или центральным положением набора дискретных отсчетов.In an exemplary embodiment, wherein the predetermined position is the top left position of the sample set or the center position of the sample set.

В возможном варианте реализации, в котором точность дискретного отсчета расстояния выше целочисленного дискретного отсчета;In a possible embodiment, in which the accuracy of the discrete distance reading is higher than the integer discrete reading;

соответственно, расстояние вычисляется следующим образом:Accordingly, the distance is calculated as follows:

distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,

где 2N представляет обратную величину точности дискретного отсчета расстояния.where 2 N represents the reciprocal of the discrete distance reading accuracy.

В возможном варианте реализации, где N равно 1.In a possible implementation where N is 1.

В возможном варианте реализации набор дискретных отсчетов является набором дискретных отсчетов яркости текущего блока.In an exemplary embodiment, the set of samples is a set of luminance samples of the current block.

В возможном варианте реализации, в котором устройство (3000) дополнительно содержит модуль (3003) разделения, выполненный с возможностью: разделения текущего блока на множество наборов дискретных отсчетов, при этом каждый из множества наборов дискретных отсчетов имеет тот же размер, что и набор дискретных отсчетов; или установки текущего блока в качестве набора дискретных отсчетов.In an exemplary embodiment in which the device (3000) further comprises a splitting module (3003) configured to: divide the current block into a plurality of sample sets, wherein each of the plurality of sample sets has the same size as the sample set ; or setting the current block as a set of discrete samples.

В возможном варианте реализации набор дискретных отсчетов является массивом дискретных отсчетов 4×4.In an exemplary embodiment, the sample set is a 4x4 sample array.

В возможном варианте реализации, в котором каждый из множества наборов дискретных отсчетов соответствует каждому модулю хранения информации о движении, модуль хранения информации о движении используется для хранения одной из первой информации о движении, второй информации о движении и третьей информации о движении.In an exemplary embodiment in which each of the plurality of sets of discrete samples corresponds to each motion information storage module, the motion information storage module is used to store one of the first motion information, the second motion information, and the third motion information.

В возможном варианте реализации первый подблок и второй подблок являются треугольным разбиением, трапециевидным разбиением или асимметричным прямоугольным разбиением.In an exemplary embodiment, the first subblock and the second subblock are a triangular mesh, a trapezoidal mesh, or an asymmetric rectangular mesh.

В возможном варианте реализации, в котором первая информация о движении содержит информацию о движении на основе первого списка опорных снимков, вторая информация о движении содержит информацию о движении на основе второго списка опорных снимков, и третья информация о движении содержит первую информацию о движении и вторую информация о движении.In an exemplary embodiment, in which the first motion information contains motion information based on the first reference picture list, the second motion information contains motion information based on the second reference picture list, and the third motion information contains the first motion information and the second information about movement.

В шестом варианте осуществления устройство для декодирования видеопотока включает в себя процессор и память, при этом в памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно любому варианту реализации третьего варианта осуществления.In a sixth embodiment, an apparatus for decoding a video stream includes a processor and a memory, wherein the memory stores instructions that cause the processor to execute a method according to any embodiment of the third embodiment.

В седьмом варианте осуществления устройство для кодирования видеопотока включает в себя процессор и память, при этом в памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно любому варианту реализации третьего варианта осуществления.In a seventh embodiment, an apparatus for encoding a video stream includes a processor and a memory, wherein the memory stores instructions that cause the processor to execute a method according to any embodiment of the third embodiment.

В восьмом варианте осуществления машиночитаемый носитель данных, на котором сохранены инструкции, которые, при их исполнении, предписывают одному или более процессорам обеспечивать кодирования видеоданных, при этом инструкции предписывают одному или более процессорам выполнять способ согласно любому варианту реализации третьего варианта осуществления.In an eighth embodiment, a computer-readable storage medium storing instructions that, when executed, direct one or more processors to provide encodings of video data, wherein the instructions direct one or more processors to execute a method according to any embodiment of the third embodiment.

В девятом варианте осуществления компьютерная программа содержит программный код для выполнения способа согласно любому варианту реализации третьего варианта осуществления при ее исполнении на компьютере.In the ninth embodiment, the computer program contains program code for executing the method according to any embodiment of the third embodiment when executed on a computer.

Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.The following will explain the applications of the encoding method as well as the decoding method as shown in the above embodiments and the system using them.

Фиг.22 - это блок-схема, показывающая систему 3100 предоставления контента для реализации службы распространения контента. Эта система 3100 предоставления контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и, в необязательном порядке, включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, помимо прочего, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любое их сочетание и т.п.FIG. 22 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 over 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, and the like.

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает кодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, помимо прочего, камеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференцсвязи, PDA, установленное на транспортном средстве устройство или сочетание любого из них или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет кодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106.The capture device 3102 generates data and can encode the data in an encoding manner as shown in the above embodiments. Alternatively, the 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 the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or tablet, or a computer. or a laptop computer, a video conferencing system, a PDA, a vehicle-mounted device, or a combination of any of these, or the like. For example, capture device 3102 may include source device 12, as 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, voice), 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 separately distributes the encoded audio data and the encoded video data to the terminal device 3106.

В системе 3100 предоставления контента терминальное устройство 310 принимает и воспроизводит кодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, установленное в транспортном средстве устройство 3124, или их сочетание, или подобное, способное декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, как описано выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения обработки декодирования звука.In the content delivery system 3100, the terminal device 310 receives and reproduces encoded data. The terminal device 3106 may be a device with the ability to receive and retrieve data, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR)/digital video recorder (DVR) 3112, a television 3114, a set-top box (STB) 3116, a 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 aforementioned encoded data. For example, terminal device 3106 may include a recipient device 14, as 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 takes priority to perform audio decoding processing.

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

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

Фиг.23 - схема, показывающая структуру примера терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, модуль 3202 обработки протокола анализирует протокол передачи потока. Протокол включает в себя, помимо прочего, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP), или любое их сочетание или тому подобное.FIG. 23 is a diagram showing the structure of an example of a terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the 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 Real Time Streaming Protocol (HLS), MPEG-DASH, Real Time Transport Protocol (RTP), Real Time Messaging (RTMP), or any combination thereof or the like.

После того, как модуль 3202 обработки протокола обработает поток, создается файл потока. Файл выводится в модуль 3204 демультиплексирования. Модуль 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.After the protocol processing module 3202 processes the stream, a stream file is created. The file is output to the demultiplexing module 3204. The demultiplexing unit 3204 may separate the multiplexed data into encoded audio data and encoded video data. As described above, for some 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 demultiplexing module 3204.

Посредством обработки демультиплексирования генерируются элементарный поток (ES) видео, ES аудио и, в необязательном порядке, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерации видеокадра и подает эти данные в модуль 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерации аудиокадра и подает эти данные в модуль 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на Фиг.23) перед подачей его в модуль 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на Фиг.23) перед подачей его в модуль 3212 синхронизации.Through demultiplexing processing, a video elementary stream (ES), an audio ES, and optionally subtitles are generated. The video decoder 3206, which includes the video decoder 30 as explained 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 module 3212. Alternatively, the video frame may be stored in a buffer (not shown in FIG. 23) before being supplied to the timing module 3212. Likewise, an audio frame may be stored in a buffer (not shown in FIG. 23) before being supplied to timing module 3212.

Модуль 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, модуль 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может закодироваться в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки самого потока данных. The synchronization module 3212 synchronizes the video frame and the audio frame and supplies the video/audio to the video/audio display 3214. For example, the synchronization module 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 visual data, and timestamps relating to the delivery of the data stream itself.

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

Настоящая заявка не ограничивается вышеупомянутой системой, и либо устройство кодирования снимка, либо устройство декодирования снимка в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.The present application is not limited to the above system, and either the picture encoding device or the picture decoding device in the above embodiments may be included in another system, such as an automotive 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 rules usually start from 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" for x and y

х || y Булево логическое "или" для x и yx || y Boolean logical "or" for x and y

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

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

Операторы отношенияRelational operators

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

> Больше чем>More than

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

< Менее чем< Less than

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

== Равно== Equal

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

Когда оператор отношения применяется к элементу или переменной синтаксиса, которой присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для элемента или переменной синтаксиса. Значение «na» не считается равным любому другому значению.When a relational operator is applied to an element or syntax variable that is set to "na" (not applicable), the value "na" is treated as a separate value for the element or syntax 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 the integer value. When dealing with 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 the integer value. When dealing with 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 the integer value. When dealing with 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 integer representation of x with y's complement of 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 to 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, evaluates to 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, evaluates 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 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 radian units.

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

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

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

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

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

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

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

Log10(x) логарифм x по основанию 10.Log10(x) 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)+) Round(x)=Sign(x)*Floor(Abs(x)+)

Sign(x)= Sign(x)=

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

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 radian units.

Порядок приоритетности операций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:

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

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

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

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

...

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

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

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

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

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

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

- …-...

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

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

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

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

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

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

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

...

иначеotherwise

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

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

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

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

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

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

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

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

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

- …-...

- Иначе, утверждение n- Otherwise, statement n

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

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

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

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

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

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

Когда условие 0, утверждение 0When condition is 0, assertion is 0

Когда условие 1, утверждение 1.When condition is 1, statement is 1.

Варианты осуществления, например кодера 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 over a communication medium in the form of one or more instructions or code executed by a hardware processing unit. A computer-readable medium may include a computer-readable storage medium that corresponds to a tangible medium, such as a storage medium, or a transmission medium, including any medium that facilitates the transfer of a computer program from one place to another, for example, in accordance with a communications protocol. Thus, computer-readable media may generally correspond to (1) tangible computer-readable storage media that are non-transitory, or (2) transmission media 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 a machine-readable medium.

В качестве примера, но не ограничений, такие машиночитаемые носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасный порт, радио и микроволновая печь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволновая связь, включены в определение носителя. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на долговременные материальные носители данных. Диск и диск, используемые здесь, включают компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом, а диски воспроизводят данные оптически с помощью лазеров. Объединения вышеперечисленного также должны быть включены в объем машиночитаемых носителей.By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage device, magnetic disk storage device or other magnetic storage devices, flash memory or any other storage medium, which can be used to store desired program code in the form of instructions or data structures and can be accessed by a computer. In addition, any connection is properly called 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, then coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave are included in the definition of media. However, it should be understood that computer-readable storage media and storage media do not include connections, carrier waves, signals or other temporary media, but are instead directed to durable 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 typically reproduce data magnetically and discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of machine-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 dedicated 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.

Методики этого раскрытия могут быть реализованы в большом количестве устройств или устройств, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, включая один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или встроенным программным обеспечением.The techniques of this disclosure may be implemented in a wide variety of devices or devices, 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 perform the disclosed technologies, but not necessarily required to be implemented by various hardware units. Rather, as described above, the various blocks may be combined into a codec hardware block or provided by a set of interacting hardware blocks, including one or more processors, as described above, in combination with suitable software and/or firmware.

Положение 1. Способ хранения информации о движении, в котором текущий блок состоит из первого подблока и второго подблока, первый подблок и второй подблок отделены общей границей, первый подблок соответствует первой информации о движении, а второй подблок соответствует второй информации о движении, при этом способ содержит этапы, на которых:Claim 1: A method for storing motion information, wherein a current block is composed of a first sub-block and a second sub-block, the first sub-block and the second sub-block are separated by a common boundary, the first sub-block corresponds to the first motion information, and the second sub-block corresponds to the second motion information, wherein the method contains stages in which:

определяют расстояние между набором дискретных отсчетов в текущем блоке и общей границей; иdetermine the distance between the set of discrete samples in the current block and the common boundary; And

сравнивают расстояние с пороговой величиной для определения того, сохранена ли третья информация о движении для набора дискретных отсчетов, при этом третья информация о движении выводится из первой информации о движении и второй информации о движении.comparing the distance with a threshold to determine whether third motion information is stored for the sample set, wherein the third motion information is derived from the first motion information and the second motion information.

Положение 2. Способ согласно Положению 1, в котором сравнение расстояния с пороговой величиной для определения того, сохранена ли третья информация о движении для набора дискретных отсчетов, содержит этап, на котором определяют, что третья информация о движении сохранена для набора дискретных отсчетов в случае, в котором абсолютное значение расстояния меньше или равно пороговой величине.Provision 2. The method according to Proposition 1, in which comparing the distance with a threshold value for determining whether the third motion information is stored for the sample set, comprises determining that the third motion information is stored for the sample set in the case, in which the absolute value of the distance is less than or equal to the threshold value.

Положение 3. Способ согласно Положению 2, при этом в случае, в котором абсолютное значение расстояния больше пороговой величины, способ дополнительно содержит этапы, на которых:Provision 3. The method according to Proposition 2, wherein in the case in which the absolute value of the distance is greater than the threshold value, the method further comprises the steps of:

определяют, что первая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является положительным; илиdetermining that the first motion information is stored for the sample set in a case in which the distance is positive; or

определяют, что вторая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является отрицательным.it is determined that the second motion information is stored for the sample set in the case in which the distance is negative.

Положение 4. Способ согласно любому одному из Положений 1-3, в котором пороговая величина является предварительно определенной.Provision 4. A method according to any one of Provisions 1-3, in which the threshold value is predetermined.

Положение 5. Способ согласно любому одному из Положений 1-4, в котором пороговая величина основана на геометрическом соотношении между общей границей и горизонтальным направлением или вертикальным направлением.Provision 5. The method according to any one of Provisions 1-4, wherein the threshold value is based on a geometric relationship between the common boundary and the horizontal direction or vertical direction.

Положение 6. Способ согласно Положению 5, в котором пороговая величина основана на угле между перпендикулярным направлением общей границы и горизонтальным направлением или вертикальным направлением.Provision 6. The method according to Provision 5, in which the threshold value is based on the angle between the perpendicular direction of the common boundary and the horizontal direction or vertical direction.

Положение 7. Способ согласно любому одному из Положений 1-6, в котором пороговая величина основана на ширине и/или высоте текущего блока.Proposition 7. A method according to any one of Provisions 1-6, wherein the threshold is based on the width and/or height of the current block.

Положение 8. Способ согласно любому одному из Положений 1-7, в котором общая граница определяется посредством углового параметра и параметра расстояния, при этом перед определением расстояния между набором дискретных отсчетов в текущем блоке и общей границей способ дополнительно содержит этап, на котором определяют угловой параметр и параметр расстояния.Provision 8. The method according to any one of Provisions 1-7, in which the common boundary is determined by an angular parameter and a distance parameter, and before determining the distance between a set of discrete samples in the current block and the common boundary, the method further comprises the step of determining the angular parameter and the distance parameter.

Положение 9. Способ согласно Положению 8, в котором в декодере определение углового параметра и параметра расстояния содержит этапы, на которых:Provision 9. The method according to Provision 8, in which, in the decoder, determining the angular parameter and the distance parameter comprises the steps of:

выделяют посредством анализа угловой параметр и параметр расстояния из битового потока; илиextracting by analysis an angular parameter and a distance parameter from the bit stream; or

выделяют посредством анализа указатель из битового потока, иextracts a pointer from the bitstream by analysis, and

получают угловой параметр и параметр расстояния на основе указателя.obtain an angular parameter and a distance parameter based on the pointer.

Положение 10. Способ согласно Положению 8 или 9, при этом после определения углового параметра и параметра расстояния способ дополнительно содержит этапы, на которых:Provision 10. The method according to Provision 8 or 9, wherein after determining the angular parameter and the distance parameter, the method further comprises the steps of:

определяют первый вычислительный параметр на основе углового параметра;determining a first computational parameter based on the angular parameter;

вычисляют временный угловой параметр на основе углового параметра;calculating a temporary angular parameter based on the angular parameter;

определяют второй вычислительный параметр на основе временного углового параметра; иdetermining a second computational parameter based on the time angular parameter; And

вычисляют третий вычислительный параметр на основе углового параметра и параметра расстояния.a third computational parameter is calculated based on the angular parameter and the distance parameter.

Положение 11. Способ согласно Положению 10, в котором первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно угловому параметру, и второй вычислительный параметр определяется посредством проверки упомянутой таблицы поиска согласно временному угловому параметру, при этом первый вычислительный параметр и второй вычислительный параметр являются значением косинуса и значением синуса одного и того же угла, соответственно.Provision 11. The method according to Proposition 10, wherein the first calculation parameter is determined by checking a preset lookup table according to an angular parameter, and the second calculation parameter is determined by checking said lookup table according to a temporary angular parameter, wherein the first calculation parameter and the second calculation parameter are a value cosine and sine value of the same angle, respectively.

Положение 12. Способ согласно Положению 10 или 11, в котором расстояние вычисляется следующим образом:Provision 12. Method according to Provision 10 or 11, in which the distance is calculated as follows:

distFromLine=(x+K)*P1+(y+K)*P2-P3,distFromLine=(x+K)*P1+(y+K)*P2-P3,

где P1, P2 и P3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром, соответственно, distFromLine представляет расстояние, K является неотрицательным целым числом, x представляет горизонтальную координату целевого положения в наборе дискретных отсчетов, y представляет вертикальную координату целевого положения в прямоугольной системе координат, где Положение верхнего левого дискретного отсчета текущего блока устанавливается в качестве начала координат, направление вправо устанавливается в качестве положительного горизонтального направления, а направление вниз устанавливается в качестве положительного вертикального направления.where P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter, respectively, distFromLine represents the distance, K is a non-negative integer, x represents the horizontal coordinate of the target position in the sample set, y represents the vertical coordinate of the target position in the rectangular coordinate system, where the top left sample position of the current block is set as the origin, the right direction is set as the positive horizontal direction, and the down direction is set as the positive vertical direction.

Положение 13. Способ согласно Положению 12, в котором K равно 1.Proposition 13. Method according to Proposition 12 in which K is equal to 1.

Положение 14. Способ согласно Положению 12 или 13, в котором целевое Положение предварительно определено в наборе дискретных отсчетов.Position 14. A method according to Position 12 or 13, in which the target Position is predefined in a set of discrete samples.

Положение 15. Способ согласно Положению 14, в котором предварительно определенное Положение является верхним левым положением набора дискретных отсчетов или центральным положением набора дискретных отсчетов.Position 15. The method according to Position 14, wherein the predetermined Position is the top left position of the sample set or the center position of the sample set.

Положение 16. Способ согласно любому одному из Положений 12-15, в котором точность дискретного отсчета расстояния выше целочисленного дискретного отсчета;Provision 16. The method according to any one of Provisions 12-15, in which the accuracy of the discrete distance reading is higher than the integer discrete reading;

соответственно, расстояние вычисляется следующим образом:Accordingly, the distance is calculated as follows:

distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,

где 2N представляет обратную величину точности дискретного отсчета расстояния.where 2N represents the reciprocal of the discrete distance reading accuracy.

Положение 17. Способ согласно Положению 13, в котором N равно 1.Provision 17. Method according to Provision 13 in which N is equal to 1.

Положение 18. Способ согласно любому одному из Положений 1-17, в котором набор дискретных отсчетов является набором дискретных отсчетов яркости текущего блока.Clause 18. The method according to any one of Clauses 1-17, wherein the set of samples is a set of luminance samples of the current block.

Положение 19. Способ согласно любому одному из Положений 1-18, в котором перед определением расстояния между набором дискретных отсчетов в текущем блоке и общей границей способ дополнительно содержит этапы, на которых:Provision 19. A method according to any one of Provisions 1-18, wherein, before determining the distance between a set of discrete samples in the current block and a common boundary, the method further comprises the steps of:

разделяют текущий блок на множество наборов дискретных отсчетов, при этом каждый из множества наборов дискретных отсчетов имеет тот же размер, что и набор дискретных отсчетов; илиdividing the current block into a plurality of sets of discrete samples, each of the plurality of sets of discrete samples having the same size as the set of discrete samples; or

устанавливают текущий блок в качестве набора дискретных отсчетов.set the current block as a set of discrete samples.

Положение 20. Способ согласно любому одному из Положений 1-19, в котором набор дискретных отсчетов является массивом дискретных отсчетов 4×4.Clause 20. A method according to any one of Clauses 1-19, wherein the sample set is a 4x4 sample array.

Положение 21. Способ согласно Положению 18 или 19, в котором каждый из множества наборов дискретных отсчетов соответствует каждому модулю хранения информации о движении, причем модуль хранения информации о движении используется для хранения одной из первой информации о движении, второй информации о движении и третьей информации о движении.Claim 21. The method according to Clause 18 or 19, wherein each of the plurality of sets of discrete samples corresponds to each motion information storage module, wherein the motion information storage module is used to store one of the first motion information, the second motion information, and the third motion information. movement.

Положение 22. Способ согласно любому одному из Положений 1-21, в котором первый подблок и второй подблок являются треугольным разбиением, трапециевидным разбиением или асимметричным прямоугольным разбиением.Provision 22. The method according to any one of Provisions 1-21, wherein the first sub-block and the second sub-block are a triangular mesh, a trapezoidal mesh, or an asymmetric rectangular mesh.

Положение 23. Способ согласно любому одному из Положений 1-22, в котором первая информация о движении содержит информацию о движении на основе первого списка опорных снимков, вторая информация о движении содержит информацию о движении на основе второго списка опорных снимков, при этом третья информация о движении содержит первую информацию о движении и вторую информацию о движении.Provision 23. The method according to any one of Provisions 1 to 22, wherein the first motion information comprises motion information based on a first list of reference pictures, the second motion information contains motion information based on a second list of reference pictures, wherein the third information motion contains first motion information and second motion information.

Положение 24. Устройство хранения информации о движении, при этом текущий блок состоит из первого подблока и второго подблока, первый подблок и второй подблок отделены общей границей, первый подблок соответствует первой информации о движении, и второй подблок соответствует второй информации о движении, причем устройство содержит:Statement 24. A motion information storage device, wherein the current block is composed of a first sub-block and a second sub-block, the first sub-block and the second sub-block are separated by a common boundary, the first sub-block corresponds to the first motion information, and the second sub-block corresponds to the second motion information, wherein the device comprises: :

модуль вычисления, выполненный с возможностью определять расстояние между набором дискретных отсчетов в текущем блоке и общей границей; иa calculation module configured to determine the distance between a set of discrete samples in the current block and a common boundary; And

модуль сравнения, выполненный с возможностью сравнивать расстояние с пороговой величиной для определения того, сохранена ли третья информация о движении для набора дискретных отсчетов, при этом третья информация о движении выводится из первой информации о движении и второй информации о движении.a comparison module configured to compare the distance with a threshold to determine whether third motion information is stored for a set of discrete samples, wherein the third motion information is derived from the first motion information and the second motion information.

Положение 25. Устройство согласно Положению 24, в котором модуль сравнения выполнен с возможностью:Position 25. Device according to Position 24, in which the comparison module is configured to:

определять, что третья информация о движении сохранена для набора дискретных отсчетов в случае, в котором абсолютное значение расстояния меньше или равно пороговой величине.determine that the third motion information is stored for a set of discrete samples in a case in which the absolute value of the distance is less than or equal to the threshold value.

Положение 26. Устройство согласно Положению 25, в котором в случае, в котором абсолютное значение расстояния больше пороговой величины, модуль сравнения дополнительно выполнен с возможностью:Statement 26. The device according to Statement 25, in which, in the case in which the absolute value of the distance is greater than a threshold value, the comparison module is further configured to:

определять, что первая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является положительным; илиdetermine that the first motion information is stored for a set of discrete samples in a case in which the distance is positive; or

определять, что вторая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является отрицательным.determine that the second motion information is stored for the sample set in the case in which the distance is negative.

Положение 27. Устройство согласно любому одному из Положений 24-26, при этом пороговая величина является предварительно определенной.Provision 27. A device according to any one of Provisions 24 to 26, wherein the threshold value is predetermined.

Положение 28. Устройство согласно любому одному из Положений 24-27, при этом пороговая величина основана на геометрическом соотношении между общей границей и горизонтальным направлением или вертикальным направлением.Provision 28. A device according to any one of Provisions 24-27, wherein the threshold value is based on the geometric relationship between the common boundary and the horizontal direction or the vertical direction.

Положение 29. Устройство согласно Положению 28, при этом пороговая величина основана на угле между перпендикулярным направлением общей границы и горизонтальным направлением или вертикальным направлением.Regulation 29. Device according to Regulation 28, wherein the threshold value is based on the angle between the perpendicular direction of the common boundary and the horizontal direction or vertical direction.

Положение 30. Устройство согласно любому одному из Положений 24-29, при этом пороговая величина основана на ширине и/или высоте текущего блока.Provision 30. A device according to any one of Provisions 24-29, wherein the threshold is based on the width and/or height of the current block.

Положение 31. Устройство согласно любому одному из Положений 24-30, при этом общая граница определяется посредством углового параметра и параметра расстояния, причем модуль вычисления дополнительно выполнен с возможностью определять угловой параметр и параметр расстояния.Provision 31. An apparatus according to any one of Provisions 24-30, wherein the common boundary is determined by an angular parameter and a distance parameter, wherein the calculation module is further configured to determine the angular parameter and the distance parameter.

Положение 32. Устройство согласно Положению 31, в котором в декодере модуль вычисления дополнительно выполнен с возможностью:Position 32. Device according to Position 31, in which in the decoder the calculation module is additionally configured to:

выделять посредством анализа угловой параметр и параметр расстояния из битового потока; илиextract by analysis the angular parameter and the distance parameter from the bit stream; or

выделять посредством анализа указатель из битового потока, иextract by analysis a pointer from the bit stream, and

получать угловой параметр и параметр расстояния на основе указателя.get the angular parameter and the distance parameter based on the pointer.

Положение 33. Устройство согласно Положению 31 или 32, в котором модуль вычисления дополнительно выполнен с возможностью:Position 33. Device according to Position 31 or 32, in which the calculation module is additionally configured to:

определять первый вычислительный параметр на основе углового параметра;determine a first computational parameter based on the angular parameter;

вычислять временный угловой параметр на основе углового параметра;calculate a temporary angular parameter based on the angular parameter;

определять второй вычислительный параметр на основе временного углового параметра; иdetermine a second computational parameter based on the time angular parameter; And

вычислять третий вычислительный параметр на основе углового параметра и параметра расстояния.calculate the third computational parameter based on the angular parameter and the distance parameter.

Положение 34. Устройство согласно Положению 33, при этом первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно угловому параметру, а второй вычислительный параметр определяется посредством проверки упомянутой таблицы поиска согласно временному угловому параметру, причем первый вычислительный параметр и второй вычислительный параметр являются значением косинуса и значением синуса одного и того же угла, соответственно.Statement 34. An apparatus according to Statement 33, wherein a first calculation parameter is determined by checking a preset lookup table according to an angular parameter, and a second calculation parameter is determined by checking said lookup table according to a temporary angular parameter, wherein the first calculation parameter and the second calculation parameter are a cosine value and the value of the sine of the same angle, respectively.

Положение 35. Устройство согласно Положению 33 или 34, при этом расстояние вычисляется следующим образом:Position 35. Device according to Position 33 or 34, the distance being calculated as follows:

distFromLine=(x+K)*P1+(y+K)*P2-P3,distFromLine=(x+K)*P1+(y+K)*P2-P3,

где P1, P2 и P3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром, соответственно, distFromLine представляет расстояние, K является неотрицательным целым числом, x представляет горизонтальную координату целевого положения в наборе дискретных отсчетов, y представляет вертикальную координату целевого положения в прямоугольной системе координат, где Положение верхнего левого дискретного отсчета текущего блока устанавливается в качестве начала координат, направление вправо устанавливается в качестве положительного горизонтального направления, а направление вниз устанавливается в качестве положительного вертикального направления.where P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter, respectively, distFromLine represents the distance, K is a non-negative integer, x represents the horizontal coordinate of the target position in the sample set, y represents the vertical coordinate of the target position in the rectangular coordinate system, where the top left sample position of the current block is set as the origin, the right direction is set as the positive horizontal direction, and the down direction is set as the positive vertical direction.

Положение 36. Устройство согласно Положению 35, при этом K равно 1.Position 36. Device according to Position 35, with K equal to 1.

Положение 37. Устройство согласно Положению 35 или 36, при этом целевое Положение предварительно определено в наборе дискретных отсчетов.Position 37. Device according to Position 35 or 36, with the target Position predefined in a set of discrete samples.

Положение 38. Устройство согласно Положению 37, при этом предварительно определенное Положение является верхним левым положением набора дискретных отсчетов или центральным положением набора дискретных отсчетов.Position 38. A device according to Position 37, wherein the predetermined Position is the top left position of the sample set or the center position of the sample set.

Положение 39. Устройство согласно любому одному из Положений 35-38, при этом точность дискретного отсчета расстояния выше целочисленного дискретного отсчета;Provision 39. A device in accordance with any one of Provisions 35-38, wherein the accuracy of the discrete distance reading is greater than the integer discrete reading;

соответственно, расстояние вычисляется следующим образом:Accordingly, the distance is calculated as follows:

distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,distFromLine=((x<<N)+ K)*P1+((y<<N)+K)*P2-P3,

где 2N представляет обратную величину точности дискретного отсчета расстояния.where 2N represents the reciprocal of the discrete distance reading accuracy.

Положение 40. Устройство согласно Положению 36, в котором N равно 1.Position 40. Device according to Position 36, in which N is equal to 1.

Положение 41. Устройство согласно любому одному из Положений 24-40, при этом набор дискретных отсчетов является набором дискретных отсчетов яркости текущего блока.Statement 41. A device according to any one of Statements 24-40, wherein the set of samples is a set of samples of the brightness of the current block.

Положение 42. Устройство согласно любому одному из Положений 24-41, при этом устройство дополнительно содержит модуль разделения, выполненный с возможностью:Provision 42. A device according to any one of Provisions 24-41, wherein the device further comprises a separation module configured to:

разделять текущий блок на множество наборов дискретных отсчетов, причем каждый из множества наборов дискретных отсчетов имеет тот же размер, что и набор дискретных отсчетов; илиdivide the current block into a plurality of sample sets, each of the plurality of sample sets having the same size as the sample set; or

устанавливать текущий блок в качестве набора дискретных отсчетов.set the current block as a set of discrete samples.

Положение 43. Устройство согласно любому одному из Положений 24-42, при этом набор дискретных отсчетов является массивом дискретных отсчетов 4×4.Statement 43. A device according to any one of Statements 24-42, wherein the sample set is a 4x4 sample array.

Положение 44. Устройство согласно Положению 42 или 43, при этом каждый из множества наборов дискретных отсчетов соответствует каждому модулю хранения информации о движении, причем модуль хранения информации о движении используется для хранения одной из первой информации о движении, второй информации о движении и третьей информации о движении.Statement 44. An apparatus according to Statement 42 or 43, wherein each of the plurality of sets of discrete samples corresponds to each motion information storage module, wherein the motion information storage module is used to store one of the first motion information, the second motion information, and the third motion information. movement.

Положение 45. Устройство согласно любому одному из Положений 24-44, при этом первый подблок и второй подблок являются треугольным разбиением, трапециевидным разбиением или асимметричным прямоугольным разбиением.Provision 45. An arrangement according to any one of Provisions 24-44, wherein the first sub-unit and the second sub-unit are a triangular partition, a trapezoidal partition, or an asymmetric rectangular partition.

Положение 46. Устройство согласно любому одному из Положений 24-45, при этом первая информация о движении содержит информацию о движении на основе первого списка опорных снимков, вторая информация о движении содержит информацию о движении на основе второго списка опорных снимков, причем третья информация о движении содержит первую информацию о движении и вторую информацию о движении.Clause 46. A device according to any one of Clauses 24-45, wherein the first motion information comprises motion information based on a first list of reference pictures, the second motion information comprises motion information based on a second list of reference pictures, and the third motion information contains first motion information and second motion information.

Положение 47. Устройство для декодирования видеопотока включает в себя процессор и память, при этом в памяти хранятся инструкции, которые предписывают процессору выполнять способ по любому из пп.1-23.Statement 47: An apparatus for decoding a video stream includes a processor and a memory, wherein the memory stores instructions that cause the processor to execute the method of any one of claims 1 to 23.

Положение 48. Устройство для кодирования видеопотока включает в себя процессор и память, при этом в памяти хранятся инструкции, которые предписывают процессору выполнять способ по любому из пп.1-23.Statement 48: An apparatus for encoding a video stream includes a processor and a memory, wherein the memory stores instructions that cause the processor to perform the method of any one of claims 1 to 23.

Положение 49. Машиночитаемый носитель данных, на котором сохранены инструкции, которые при их исполнении предписывают одному или более процессорам обеспечивать кодирование видеоданных, при этом инструкции предписывают одному или более процессорам выполнять способ согласно любому одному из Положений 1-23.Statement 49. A computer-readable storage medium on which instructions are stored which, when executed, direct one or more processors to provide encoding of video data, wherein the instructions direct one or more processors to perform a method in accordance with any one of Statements 1-23.

Положение 50. Компьютерная программа, содержащая программный код для выполнения способа согласно любому одному из Положений 1-23 при ее исполнении на компьютере.Statement 50. A computer program containing program code for performing a method according to any one of Statements 1-23 when executed on a computer.

Claims (87)

1. Способ декодирования, содержащий этапы, на которых:1. A decoding method comprising the steps of: принимают битовый поток, причем битовый поток содержит кодированные данные текущего блока и указатель, при этом текущий блок разделен общей границей на первый подблок и второй подблок, причем первый подблок соответствует первому значению предсказания, а второй подблок соответствует второму значению предсказания, при этом общая граница представляет собой разделительную линию режима геометрического разбиения;receive a bit stream, wherein the bit stream contains encoded data of a current block and an indicator, wherein the current block is divided by a common boundary into a first sub-block and a second sub-block, wherein the first sub-block corresponds to a first prediction value and the second sub-block corresponds to a second prediction value, wherein the common boundary represents is the dividing line of the geometric partition mode; выделяют посредством анализа указатель из битового потока;extracting a pointer from the bitstream by analysis; получают угловой параметр и параметр расстояния на основе указателя, при этом угловой параметр задает индекс угла режима геометрического разбиения, а параметр расстояния задает индекс расстояния режима геометрического разбиения;obtaining an angular parameter and a distance parameter based on the pointer, wherein the angular parameter specifies an angle index of the geometric partitioning mode, and the distance parameter specifies a distance index of the geometric partitioning mode; определяют расстояние между набором дискретных отсчетов в текущем блоке и общей границей на основе углового параметра и параметра расстояния посредством проверки предварительно установленной таблицы поиска;determining the distance between the set of discrete samples in the current block and the common boundary based on the angular parameter and the distance parameter by checking a preset lookup table; получают первый весовой коэффициент согласно расстоянию;obtaining a first weight according to the distance; получают второй весовой коэффициент согласно первому весовому коэффициенту; иobtaining a second weight according to the first weight; And получают значение предсказания с объединением для текущего блока посредством использования первого значения предсказания, второго значения предсказания, первого весового коэффициента и второго весового коэффициента.obtaining a fusion prediction value for the current block by using the first prediction value, the second prediction value, the first weight coefficient, and the second weight coefficient. 2. Способ по п. 1, в котором угловой параметр - это angleIdx, параметр расстояния - это distanceIdx, при этом упомянутое определение расстояния на основе углового параметра и параметра расстояния посредством проверки предварительно установленной таблицы поиска содержит этап, на котором вычисляют расстояние с использованием следующего уравнения:2. The method of claim 1, wherein the angular parameter is angleIdx, the distance parameter is distanceIdx, wherein said determining the distance based on the angular parameter and the distance parameter by checking a preset lookup table comprises calculating the distance using the following equations: где distFromLine представляет расстояние, K является неотрицательным целым числом, N=1, P1, Р2 и Р3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром соответственно, при этом первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно angleIdx, второй вычислительный параметр определяется посредством проверки этой таблицы поиска согласно (angleIdx+8)%32 и третий вычислительный параметр определяется на основе angleIdx и distanceIdx.where distFromLine represents the distance, K is a non-negative integer, N=1, P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter respectively, where the first computational parameter is determined by checking a preset lookup table according to angleIdx, the second a computational parameter is determined by checking this lookup table according to (angleIdx+8)%32 and a third computational parameter is determined based on angleIdx and distanceIdx. 3. Способ по п. 1 или 2, при этом способ дополнительно содержит этап, на котором сравнивают расстояние с пороговой величиной для определения того, сохранять ли третью информацию о движении для набора дискретных отсчетов, причем первый подблок соответствует первой информации о движении, а второй подблок соответствует второй информации о движении, при этом третья информация о движении выводится из первой информации о движении и второй информации о движении.3. The method of claim 1 or 2, wherein the method further comprises comparing the distance with a threshold to determine whether to store third motion information for the sample set, wherein the first sub-block corresponds to the first motion information and the second the subblock corresponds to the second motion information, wherein the third motion information is derived from the first motion information and the second motion information. 4. Способ по п. 3, в котором упомянутое сравнение расстояния с пороговой величиной для определения того, сохранять ли третью информацию о движении для набора дискретных отсчетов, содержит этап, на котором определяют, сохранить третью информацию о движении для набора дискретных отсчетов в случае, в котором абсолютное значение расстояния меньше или равно пороговой величине.4. The method of claim 3, wherein said comparison of a distance with a threshold for determining whether to store third motion information for the sample set comprises determining whether to store third motion information for the sample set in the event that in which the absolute value of the distance is less than or equal to the threshold value. 5. Способ по п. 3 или 4, при этом в случае, в котором абсолютное значение расстояния больше пороговой величины, способ дополнительно содержит этапы, на которых:5. The method according to claim 3 or 4, wherein in the case in which the absolute value of the distance is greater than the threshold value, the method further comprises the steps of: определяют, что первая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является положительным; илиdetermining that the first motion information is stored for the sample set in a case in which the distance is positive; or определяют, что вторая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является отрицательным.it is determined that the second motion information is stored for the sample set in the case in which the distance is negative. 6. Способ по любому одному из пп. 3-5, в котором пороговая величина является предварительно определенной.6. Method according to any one of paragraphs. 3-5, in which the threshold value is predetermined. 7. Способ по любому одному из пп. 1-6, в котором первый весовой коэффициент вычисляется с использованием следующего уравнения:7. Method according to any one of paragraphs. 1-6, in which the first weighting factor is calculated using the following equation: где sampleWeight1 представляет первый весовой коэффициент, sample_dist представляет расстояние, f(sample_dist) представляет функцию с sample_dist в качестве входа.where sampleWeight1 represents the first weight, sample_dist represents the distance, f(sample_dist) represents the function with sample_dist as input. 8. Способ по любому одному из пп. 1-7, в котором упомянутое получение второго весового коэффициента согласно первому весовому коэффициенту содержит этап, на котором вычисляют второй весовой коэффициент в соответствии со следующей формулой:8. Method according to any one of paragraphs. 1-7, wherein said obtaining a second weight according to the first weight comprises calculating the second weight according to the following formula: где sampleWeight1 представляет первый весовой коэффициент, sampleWeight2 представляет второй весовой коэффициент, Т - заранее заданная константа.where sampleWeight1 represents the first weighting factor, sampleWeight2 represents the second weighting factor, T is a predefined constant. 9. Способ по п. 8, в котором Т равно 8.9. The method according to claim 8, in which T is equal to 8. 10. Способ по любому одному из пп. 1-9, в котором набор дискретных отсчетов является набором дискретных отсчетов яркости текущего блока.10. Method according to any one of paragraphs. 1-9, in which the set of discrete samples is a set of discrete brightness samples of the current block. 11. Способ по любому одному из пп. 1-10, при этом перед определением расстояния между набором дискретных отсчетов в текущем блоке и общей границей способ дополнительно содержит этап, на котором:11. Method according to any one of paragraphs. 1-10, wherein before determining the distance between the set of discrete samples in the current block and the common boundary, the method further comprises a step in which: разделяют текущий блок на множество наборов дискретных отсчетов, причем каждый из множества наборов дискретных отсчетов имеет тот же размер, что и упомянутый набор дискретных отсчетов; илиdividing the current block into a plurality of sets of discrete samples, each of the plurality of sets of discrete samples having the same size as said set of discrete samples; or устанавливают текущий блок в качестве упомянутого набора дискретных отсчетов.set the current block as said set of discrete samples. 12. Способ по любому одному из пп. 1-11, в котором набор дискретных отсчетов является массивом дискретных отсчетов 4×4.12. Method according to any one of paragraphs. 1-11, in which the sample set is a 4x4 sample array. 13. Способ по любому одному из пп. 1-12, в котором третью информацию о движении получают посредством объединения первой информации о движении и второй информации о движении, когда первая информация о движении и вторая информация о движении - из разных списков опорных снимков, при этом третья информация о движении равна второй информации о движении, когда первая информация о движении и вторая информация о движении - из одного и того же списка опорных снимков.13. Method according to any one of paragraphs. 1-12, in which the third motion information is obtained by combining the first motion information and the second motion information, where the first motion information and the second motion information are from different reference picture lists, wherein the third motion information is equal to the second motion information motion when the first motion information and the second motion information are from the same reference picture list. 14. Способ по любому одному из пп. 1-13, в котором сохраненная информация о движении используется для определения значения предсказания набора дискретных отсчетов, либо сохраненная информация о движении используется в качестве опорной информации для процесса предсказания будущих блоков кодирования.14. Method according to any one of paragraphs. 1-13, in which the stored motion information is used to determine a sample set prediction value, or the stored motion information is used as reference information for a prediction process of future encoding blocks. 15. Устройство декодирования, содержащее:15. A decoding device comprising: модуль приема, выполненный с возможностью принимать битовый поток, причем битовый поток содержит кодированные данные текущего блока и указатель, при этом текущий блок разделен общей границей на первый подблок и второй подблок, причем первый подблок соответствует первому значению предсказания, а второй подблок соответствует второму значению предсказания, при этом общая граница представляет собой разделительную линию режима геометрического разбиения;a receiving module configured to receive a bit stream, wherein the bit stream includes encoded data of a current block and an indicator, wherein the current block is divided by a common boundary into a first sub-block and a second sub-block, wherein the first sub-block corresponds to a first prediction value and the second sub-block corresponds to a second prediction value , while the common boundary represents the dividing line of the geometric partition mode; модуль анализа, выполненный с возможностью выделять посредством анализа указатель из битового потока;an analysis module configured to extract a pointer from the bit stream by analysis; модуль получения, выполненный с возможностью получать угловой параметр и параметр расстояния на основе указателя, при этом угловой параметр задает индекс угла режима геометрического разбиения, а параметр расстояния задает индекс расстояния режима геометрического разбиения;a receiving module configured to obtain an angular parameter and a distance parameter based on the pointer, wherein the angular parameter specifies an angle index of a geometric partitioning mode, and the distance parameter specifies a distance index of a geometric partitioning mode; модуль вычисления, выполненный с возможностью определять расстояние между набором дискретных отсчетов в текущем блоке и общей границей на основе углового параметра и параметра расстояния посредством проверки предварительно установленной таблицы поиска;a calculation module configured to determine a distance between a set of discrete samples in the current block and a common boundary based on an angular parameter and a distance parameter by checking a preset lookup table; при этом модуль получения дополнительно выполнен с возможностью:wherein the receiving module is additionally configured to: получать первый весовой коэффициент согласно расстоянию;obtain a first weight coefficient according to the distance; получать второй весовой коэффициент согласно первому весовому коэффициенту; иobtain a second weight according to the first weight; And получать значение предсказания с объединением для текущего блока посредством использования первого значения предсказания, второго значения предсказания, первого весового коэффициента и второго весового коэффициента.obtain a concatenated prediction value for the current block by using the first prediction value, the second prediction value, the first weight, and the second weight. 16. Устройство по п. 15, при этом угловой параметр - это angleIdx, параметр расстояния - это distanceIdx, причем модуль вычисления дополнительно выполнен с возможностью вычислять расстояние с использованием следующего уравнения:16. The device according to claim 15, wherein the angular parameter is angleIdx, the distance parameter is distanceIdx, and the calculation module is further configured to calculate the distance using the following equation: где distFromLine представляет расстояние, K является неотрицательным целым числом, N=1, P1, Р2 и Р3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром соответственно, при этом первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно angleIdx, второй вычислительный параметр определяется посредством проверки этой таблицы поиска согласно (angleIdx+8)%32 и третий вычислительный параметр определяется на основе angleIdx и distanceIdx.where distFromLine represents the distance, K is a non-negative integer, N=1, P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter respectively, where the first computational parameter is determined by checking a preset lookup table according to angleIdx, the second a computational parameter is determined by checking this lookup table according to (angleIdx+8)%32 and a third computational parameter is determined based on angleIdx and distanceIdx. 17. Устройство по п. 15 или 16, дополнительно содержащее модуль сравнения, выполненный с возможностью сравнивать расстояние с пороговой величиной для определения того, сохранять ли третью информацию о движении для набора дискретных отсчетов, при этом третья информация о движении выводится из первой информации о движении и второй информации о движении, причем первый подблок соответствует первой информации о движении, а второй подблок соответствует второй информации о движении.17. The apparatus of claim 15 or 16, further comprising a comparison module configured to compare the distance with a threshold to determine whether to store third motion information for the set of discrete samples, wherein the third motion information is derived from the first motion information and second motion information, the first sub-block corresponding to the first motion information and the second sub-block corresponding to the second motion information. 18. Устройство по п. 17, в котором модуль сравнения выполнен с возможностью определения сохранить третью информацию о движении для набора дискретных отсчетов в случае, в котором абсолютное значение расстояния меньше или равно пороговой величине.18. The device according to claim 17, wherein the comparison module is configured to determine to store the third motion information for a set of discrete samples in a case in which the absolute value of the distance is less than or equal to a threshold value. 19. Устройство по п. 17 или 18, в котором в случае, в котором абсолютное значение расстояния больше пороговой величины, модуль сравнения дополнительно выполнен с возможностью:19. The device according to claim 17 or 18, in which, in the case in which the absolute value of the distance is greater than the threshold value, the comparison module is further configured to: определять, что первая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является положительным; илиdetermine that the first motion information is stored for a set of discrete samples in a case in which the distance is positive; or определять, что вторая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является отрицательным.determine that the second motion information is stored for the sample set in the case in which the distance is negative. 20. Устройство по любому одному из пп. 15-19, при этом пороговая величина является предварительно определенной.20. The device according to any one of paragraphs. 15-19, wherein the threshold value is predetermined. 21. Устройство по любому одному из пп. 15-20, при этом первый весовой коэффициент вычисляется с использованием следующего уравнения:21. The device according to any one of paragraphs. 15-20, with the first weighting factor being calculated using the following equation: где sampleWeight1 представляет первый весовой коэффициент, sample_dist представляет расстояние, f(sample_dist) представляет функцию с sample_dist в качестве входа.where sampleWeight1 represents the first weight, sample_dist represents the distance, f(sample_dist) represents the function with sample_dist as input. 22. Устройство по любому одному из пп. 15-21, в котором модуль получения дополнительно выполнен с возможностью вычислять второй весовой коэффициент в соответствии со следующей формулой:22. The device according to any one of paragraphs. 15-21, wherein the acquisition module is further configured to calculate the second weighting coefficient in accordance with the following formula: где sampleWeight1 представляет первый весовой коэффициент, sampleWeight2 представляет второй весовой коэффициент, Т - заранее заданная константа.where sampleWeight1 represents the first weighting factor, sampleWeight2 represents the second weighting factor, T is a predefined constant. 23. Устройство по п. 22, при этом Т равно 8.23. Device according to claim 22, wherein T is equal to 8. 24. Устройство по любому одному из пп. 15-23, при этом набор дискретных отсчетов является набором дискретных отсчетов яркости текущего блока.24. The device according to any one of paragraphs. 15-23, wherein the set of discrete samples is a set of discrete samples of the brightness of the current block. 25. Устройство по любому одному из пп. 15-24, при этом устройство дополнительно содержит модуль разделения, выполненный с возможностью:25. The device according to any one of paragraphs. 15-24, wherein the device additionally contains a separation module configured to: разделять текущий блок на множество наборов дискретных отсчетов, при этом каждый из множества наборов дискретных отсчетов имеет тот же размер, что и упомянутый набор дискретных отсчетов; илиdividing the current block into a plurality of sample sets, each of the plurality of sample sets having the same size as said sample set; or устанавливать текущий блок в качестве упомянутого набора дискретных отсчетов.set the current block as the said sample set. 26. Устройство по любому одному из пп. 15-25, при этом набор дискретных отсчетов является массивом дискретных отсчетов 4×4.26. The device according to any one of paragraphs. 15-25, wherein the set of discrete samples is a 4×4 array of discrete samples. 27. Устройство по любому одному из пп. 15-26, в котором третья информация о движении получается посредством объединения первой информации о движении и второй информации о движении, когда первая информация о движении и вторая информация о движении - из разных списков опорных снимков, при этом третья информация о движении равна второй информации о движении, когда первая информация о движении и вторая информация о движении - из одного и того же списка опорных снимков.27. The device according to any one of paragraphs. 15-26, in which the third motion information is obtained by combining the first motion information and the second motion information, where the first motion information and the second motion information are from different reference picture lists, wherein the third motion information is equal to the second motion information motion when the first motion information and the second motion information are from the same reference picture list. 28. Устройство по любому одному из пп. 15-27, в котором сохраненная информация о движении используется для определения значения предсказания набора дискретных отсчетов, либо сохраненная информация о движении используется в качестве опорной информации для процесса предсказания будущих блоков кодирования.28. The device according to any one of paragraphs. 15-27, in which the stored motion information is used to determine a sample set prediction value, or the stored motion information is used as reference information for a prediction process of future encoding blocks. 29. Устройство для декодирования видеопотока, включающее в себя процессор и память, при этом в памяти хранятся инструкции, которые предписывают процессору выполнять способ по любому из пп. 1-14.29. A device for decoding a video stream, including a processor and memory, wherein the memory stores instructions that instruct the processor to perform the method according to any one of claims. 1-14. 30. Машиночитаемый носитель данных, на котором сохранены инструкции, которые при их исполнении предписывают одному или более процессорам обеспечивать кодирование видеоданных, при этом инструкции предписывают одному или более процессорам выполнять способ по любому одному из пп. 1-14.30. A computer-readable storage medium on which instructions are stored that, when executed, instruct one or more processors to provide encoding of video data, the instructions instructing one or more processors to perform the method of any one of claims. 1-14. 31. Способ кодирования, содержащий этапы, на которых:31. An encoding method containing the steps of: кодируют текущий блок и указатель в битовый поток, при этом текущий блок разделен общей границей на первый подблок и второй подблок, причем первый подблок соответствует первому значению предсказания, а второй подблок соответствует второму значению предсказания, при этом общая граница представляет собой разделительную линию режима геометрического разбиения; причем указатель используется для получения углового параметра и параметра расстояния, при этом угловой параметр задает индекс угла режима геометрического разбиения, а параметр расстояния задает индекс расстояния режима геометрического разбиения;encoding the current block and the pointer into a bit stream, wherein the current block is divided by a common boundary into a first sub-block and a second sub-block, the first sub-block corresponding to a first prediction value and the second sub-block corresponding to a second prediction value, wherein the common boundary is a geometric partitioning mode dividing line ; wherein the pointer is used to obtain an angular parameter and a distance parameter, wherein the angular parameter specifies the angle index of the geometric partitioning mode, and the distance parameter specifies the distance index of the geometric partitioning mode; определяют расстояние между набором дискретных отсчетов в текущем блоке и общей границей на основе углового параметра и параметра расстояния посредством проверки предварительно установленной таблицы поиска;determining the distance between the set of discrete samples in the current block and the common boundary based on the angular parameter and the distance parameter by checking a preset lookup table; получают первый весовой коэффициент согласно расстоянию;obtaining a first weight according to the distance; получают второй весовой коэффициент согласно первому весовому коэффициенту; иobtaining a second weight according to the first weight; And получают значение предсказания с объединением для текущего блока посредством использования первого значения предсказания, второго значения предсказания, первого весового коэффициента и второго весового коэффициента.obtaining a fusion prediction value for the current block by using the first prediction value, the second prediction value, the first weight coefficient, and the second weight coefficient. 32. Способ по п. 31, в котором первый весовой коэффициент вычисляется с использованием следующего уравнения:32. The method of claim 31, wherein the first weighting factor is calculated using the following equation: где sampleWeight1 представляет первый весовой коэффициент, sample_dist представляет расстояние, f(sample_dist) представляет функцию с sample_dist в качестве входа.where sampleWeight1 represents the first weight, sample_dist represents the distance, f(sample_dist) represents the function with sample_dist as input. 33. Способ по п. 31 или 32, в котором упомянутое получение второго весового коэффициента согласно первому весовому коэффициенту содержит этап, на котором вычисляют второй весовой коэффициент в соответствии со следующей формулой:33. The method according to claim 31 or 32, wherein said obtaining a second weighting coefficient according to the first weighting coefficient comprises calculating the second weighting coefficient in accordance with the following formula: где sampleWeight1 представляет первый весовой коэффициент, sampleWeight2 представляет второй весовой коэффициент, Т - заранее заданная константа.where sampleWeight1 represents the first weighting factor, sampleWeight2 represents the second weighting factor, T is a predefined constant. 34. Способ по п. 33, в котором Т равно 8.34. The method according to claim 33, in which T is equal to 8. 35. Способ по любому одному из пп. 31-34, в котором угловой параметр - это angleIdx, параметр расстояния - это distanceIdx, при этом упомянутое определение расстояния на основе углового параметра и параметра расстояния посредством проверки предварительно установленной таблицы поиска содержит этап, на котором вычисляют расстояние с использованием следующего уравнения:35. Method according to any one of paragraphs. 31-34, wherein the angular parameter is angleIdx, the distance parameter is distanceIdx, wherein said determining the distance based on the angular parameter and the distance parameter by checking a preset lookup table comprises a step of calculating the distance using the following equation: где distFromLine представляет расстояние, K является неотрицательным целым числом, N=1, P1, Р2 и Р3 являются первым вычислительным параметром, вторым вычислительным параметром и третьим вычислительным параметром соответственно, при этом первый вычислительный параметр определяется посредством проверки предварительно установленной таблицы поиска согласно angleIdx, второй вычислительный параметр определяется посредством проверки этой таблицы поиска согласно (angleIdx+8)%32 и третий вычислительный параметр определяется на основе angleIdx и distanceIdx.where distFromLine represents the distance, K is a non-negative integer, N=1, P1, P2 and P3 are the first computational parameter, the second computational parameter and the third computational parameter respectively, where the first computational parameter is determined by checking a preset lookup table according to angleIdx, the second a computational parameter is determined by checking this lookup table according to (angleIdx+8)%32 and a third computational parameter is determined based on angleIdx and distanceIdx. 36. Способ по любому одному из пп. 31-35, при этом способ дополнительно содержит этап, на котором сравнивают расстояние с пороговой величиной для определения того, сохранять ли третью информацию о движении для набора дискретных отсчетов, причем первый подблок соответствует первой информации о движении, а второй подблок соответствует второй информации о движении, при этом третья информация о движении выводится из первой информации о движении и второй информации о движении.36. Method according to any one of paragraphs. 31-35, the method further comprising comparing the distance with a threshold to determine whether to store third motion information for the sample set, the first sub-block corresponding to the first motion information and the second sub-block corresponding to the second motion information , wherein the third motion information is derived from the first motion information and the second motion information. 37. Способ по п. 36, в котором упомянутое сравнение расстояния с пороговой величиной для определения того, сохранять ли третью информацию о движении для набора дискретных отсчетов, содержит этап, на котором определяют, сохранить третью информацию о движении для набора дискретных отсчетов в случае, в котором абсолютное значение расстояния меньше или равно пороговой величине.37. The method of claim 36, wherein said comparison of a distance with a threshold for determining whether to store third motion information for the sample set comprises determining whether to store third motion information for the sample set in the event that in which the absolute value of the distance is less than or equal to the threshold value. 38. Способ по п. 36 или 37, при этом в случае, в котором абсолютное значение расстояния больше пороговой величины, способ дополнительно содержит этап, на котором:38. The method according to claim 36 or 37, wherein in the case in which the absolute value of the distance is greater than the threshold value, the method further comprises the step of: определяют, что первая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является положительным; илиdetermining that the first motion information is stored for the sample set in a case in which the distance is positive; or определяют, что вторая информация о движении сохранена для набора дискретных отсчетов в случае, в котором расстояние является отрицательным.it is determined that the second motion information is stored for the sample set in the case in which the distance is negative. 39. Устройство для кодирования видеопотока, включающее в себя процессор и память, при этом в памяти хранятся инструкции, которые предписывают процессору выполнять способ по любому из пп. 31-38.39. A device for encoding a video stream, including a processor and memory, wherein the memory stores instructions that instruct the processor to perform the method according to any one of claims. 31-38.
RU2023107973A 2023-03-31 Method and device for motion information storage RU2815734C1 (en)

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2022107599A Division RU2793825C1 (en) 2019-08-26 Method and device for motion information storage

Publications (1)

Publication Number Publication Date
RU2815734C1 true RU2815734C1 (en) 2024-03-21

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8964833B2 (en) * 2011-07-19 2015-02-24 Qualcomm Incorporated Deblocking of non-square blocks for video coding
US9338476B2 (en) * 2011-05-12 2016-05-10 Qualcomm Incorporated Filtering blockiness artifacts for video coding
CN103716629B (en) * 2012-09-29 2017-02-22 华为技术有限公司 Image processing method, device, coder and decoder
RU2017133106A (en) * 2015-03-27 2019-04-04 Квэлкомм Инкорпорейтед DISPLAYING MOTION INFORMATION FOR UNITS IN VIDEO CODING
US20190191171A1 (en) * 2016-05-13 2019-06-20 Sharp Kabushiki Kaisha Prediction image generation device, video decoding device, and video coding device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9338476B2 (en) * 2011-05-12 2016-05-10 Qualcomm Incorporated Filtering blockiness artifacts for video coding
US8964833B2 (en) * 2011-07-19 2015-02-24 Qualcomm Incorporated Deblocking of non-square blocks for video coding
CN103716629B (en) * 2012-09-29 2017-02-22 华为技术有限公司 Image processing method, device, coder and decoder
RU2017133106A (en) * 2015-03-27 2019-04-04 Квэлкомм Инкорпорейтед DISPLAYING MOTION INFORMATION FOR UNITS IN VIDEO CODING
US20190191171A1 (en) * 2016-05-13 2019-06-20 Sharp Kabushiki Kaisha Prediction image generation device, video decoding device, and video coding device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Chen J. et al. "Algorithm description for Versatile Video Coding and Test Model 5 (VTM 5)", JVET of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, Женева, Швейцария, 11.06.2019. Francois E. et al, "Core Experiment 2: Flexible Motion Partitioning", JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, Гуанчжоу, Китай, 2010. *

Similar Documents

Publication Publication Date Title
JP7239697B2 (en) Corresponding methods for encoders, decoders and inter-prediction
CN112673633B (en) Encoder, decoder and corresponding methods for merging modes
CN112954367B (en) Encoder, decoder and corresponding methods using palette coding
KR20210141712A (en) Encoder, Decoder and Corresponding Methods Using IBC Merge List
US20240031598A1 (en) Encoder, a decoder and corresponding methods for inter-prediction
JP2022539334A (en) clipping level for nonlinear adaptive loop filter
JP2023100701A (en) Encoder, decoder and corresponding methods using intra mode coding for intra prediction
RU2815734C1 (en) Method and device for motion information storage
RU2793825C1 (en) Method and device for motion information storage
RU2817030C2 (en) Encoder, decoder and corresponding use methods for ibc combining list
JP7385004B2 (en) Method and apparatus for motion information storage
RU2814812C2 (en) Deriving chroma sample weight for geometric separation mode
RU2816202C2 (en) Method and apparatus for affine external prediction of chroma subunits
RU2811983C2 (en) Encoder, decoder and related methods for sub-block partition mode
RU2818228C2 (en) Limitation levels for nonlinear adaptive loop filter
RU2820638C2 (en) Method for calculating position of reference sample of integer grid for calculating gradient of boundary sample of block level in calculating optical flow with dual prediction and correction with dual prediction
RU2808608C2 (en) Early termination of optical flow refinement