RU2816202C2 - Method and apparatus for affine external prediction of chroma subunits - Google Patents

Method and apparatus for affine external prediction of chroma subunits Download PDF

Info

Publication number
RU2816202C2
RU2816202C2 RU2021127615A RU2021127615A RU2816202C2 RU 2816202 C2 RU2816202 C2 RU 2816202C2 RU 2021127615 A RU2021127615 A RU 2021127615A RU 2021127615 A RU2021127615 A RU 2021127615A RU 2816202 C2 RU2816202 C2 RU 2816202C2
Authority
RU
Russia
Prior art keywords
subblock
mvavglx
luminance
block
subheightc
Prior art date
Application number
RU2021127615A
Other languages
Russian (ru)
Other versions
RU2021127615A (en
Inventor
Василий Алексеевич Руфицкий
Тимофей Михайлович СОЛОВЬЕВ
Алексей Константинович Филиппов
Цзянле ЧЕН
Original Assignee
Хуавэй Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавэй Текнолоджиз Ко., Лтд. filed Critical Хуавэй Текнолоджиз Ко., Лтд.
Publication of RU2021127615A publication Critical patent/RU2021127615A/en
Application granted granted Critical
Publication of RU2816202C2 publication Critical patent/RU2816202C2/en

Links

Images

Abstract

FIELD: physics.
SUBSTANCE: invention relates to image encoding means. Chromaticity scaling factors are determined in the horizontal and vertical directions based on the chromaticity format information. Chromaticity format information indicates the chromaticity format of the current picture to which the block of the current picture belongs. Set (S) of luma subunits of the luma block is determined based on the chroma scaling coefficients. Chroma motion vector is determined for a chroma subunit of a chroma block based on motion vectors of one or more luma subunits in a set (S) of luma subunits. When SubW WidthC and SubHeightC are equal to 1, set of subunits (S) of brightness contains subunit of brightness, indexed as S0 = (xSbIdx, ySbIdx). When at least one of SubWIDTHC and SubHeightC is not equal to 1, the set of luma subunits (S) comprises: a first luma subunit, indexed as S0 = ((xSbIdx >> (SubWidthC – 1) << (SubWidthC – 1)), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))), and a second brightness subunit, indexed as S1 = ((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)).
EFFECT: high efficiency of encoding images.
33 cl, 33 dwg

Description

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИCROSS REFERENCE TO RELATED APPLICATIONS

Данная патентная заявка испрашивает приоритет предварительной патентной заявки США № 62/809,551, поданной 22 февраля 2019 г., приоритет предварительной патентной заявки США № 62/823653, поданной 25 марта 2019 г. и приоритет предварительной патентной заявки США № 62/824,302, поданной 26 марта 2019 г. Раскрытие вышеупомянутых патентных заявок полностью включено сюда посредством ссылки.This patent application claims priority to U.S. Provisional Patent Application No. 62/809,551, filed February 22, 2019, priority to U.S. Provisional Patent Application No. 62/823,653, filed March 25, 2019, and priority to U.S. Provisional Patent Application No. 62/824,302, filed 26 March 2019 The disclosure of the above patent applications is incorporated herein by reference in its entirety.

Область техникиField of technology

Варианты осуществления настоящего раскрытия в основном относятся к области обработки картинок и, более конкретно, к аффинному внешнему предсказанию (аффинной компенсации движения), в частности, к способу и аппаратуре для вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности, и способу и аппаратуре для аффинного внешнего предсказания субблоков цветности.Embodiments of the present disclosure generally relate to the field of image processing and, more particularly, to affine inter-prediction (affine motion compensation), in particular, to a method and apparatus for inferring a motion vector for affine inter-prediction of chroma sub-blocks based on a chroma format, and a method and hardware for affine external prediction of chrominance subblocks.

Уровень техникиState of the art

Кодирование видео (кодирование и/или декодирование видео) используется в широком спектре приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Диски Blu-ray, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.Video encoding (video encoding and/or decoding) is used in a wide range of digital video applications, such as digital broadcast television, video transmission over the Internet and mobile networks, and real-time conversational applications such as video chat, video conferencing, DVDs, and Blu Discs. -ray, 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 at its destination by a video decompression device, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques with higher compression ratios and virtually no loss of picture quality are desired.

В частности, текущий кодер универсальной модели видеокодирования и тестирования (VTM) в основном поддерживает формат цветности 4:2:0 в качестве входного формата картинки. Сбой кодера VTM может произойти, когда входной формат цветности становится 4:4:4. Чтобы избежать такой проблемы, очень желателен и даже обязателен кодер, поддерживающий другие форматы цветности (например, 4:4:4 или 4:2:2) для самых разных приложений.In particular, the current Universal Video Test Model (VTM) encoder mainly supports 4:2:0 chroma format as an input picture format. A VTM encoder crash may occur when the input chroma format becomes 4:4:4. To avoid this problem, an encoder that supports other color formats (such as 4:4:4 or 4:2:2) for a wide variety of applications is highly desirable and even required.

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

Ввиду вышеупомянутых проблем в настоящем раскрытии предлагается модификация процесса видеокодирования для поддержки множества форматов цветности. В частности, варианты осуществления настоящего приложения нацелены на предоставление устройства, кодера, декодера и соответствующих способов для вывода вектора движения для аффинного взаимного предсказания субблоков цветности на основе формата цветности, который может быть одним из множества поддерживаемых форматов цветности, чтобы улучшить производительность кодирования.In view of the above problems, the present disclosure proposes a modification of the video encoding process to support multiple color formats. In particular, embodiments of the present application are aimed at providing an apparatus, encoder, decoder, and corresponding methods for inferring a motion vector for affine inter-prediction of chroma subblocks based on a chroma format, which may be one of a variety of supported chroma formats, to improve encoding performance.

Варианты осуществления изобретения определяются признаками независимых пунктов формулы изобретения, а дополнительные преимущественные реализации вариантов осуществления - признаками зависимых пунктов формулы изобретения.The embodiments of the invention are determined by the features of the independent claims, and additional advantageous implementations of the embodiments are determined by the features of the dependent claims.

Конкретные варианты осуществления изложены в прилагаемых независимых пунктах формулы изобретения, а другие варианты осуществления - в зависимых пунктах формулы изобретения.Specific embodiments are set forth in the accompanying independent claims, and other embodiments are set forth in the dependent 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 disclosure, there is provided a chroma motion vector inference method used in affine inter prediction of a block of a current picture containing a luminance block and a co-located chrominance block, the method comprising

определение коэффициентов масштабирования цветности (то есть значения коэффициентов масштабирования цветности) в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит текущий блок изображения;determining chroma scaling factors (that is, chroma scaling factor values) in the horizontal and vertical directions based on the chromaticity format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the current image block belongs;

определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; и определение вектора движения для субблока цветности для блока цветности на основе векторов движения одного или более субблоков яркости (например, одного или двух субблоков яркости) в наборе (S) субблоков яркости.determining a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; and determining a motion vector for the chrominance subblock for the chrominance block based on the motion vectors of one or more luma subblocks (eg, one or two luma subblocks) in the set (S) of luma subblocks.

В представленном раскрытии, поскольку блок или субблок (яркости или цветности) может быть представлен его местоположением, позицией или индексом, выбор/определение блока или субблока подразумевает, что позиция, местоположение или индекс блока или субблока выбран или определен.In the present disclosure, since a block or subblock (luminance or chroma) can be represented by its location, position or index, selecting/determining the block or subblock implies that the position, location or index of the block or subblock is selected or determined.

Следует отметить, что термин «блок», «блок кодирования» или «блок изображения», используемый в настоящем раскрытии сущности, может представлять единицы преобразования (TU), единицу предсказания (PU), единицу кодирования (CU) и т. д. В универсальном кодировании видео (VVC) единицы преобразования и единицы кодирования обычно выровнены друг с другом, за исключением случаев, когда используется мозаика TU или преобразование субблоков (SBT). По существу, термины «блок», «блок изображения», «блок кодирования» и «блок преобразования» могут использоваться взаимозаменяемо в настоящем раскрытии; и термины «размер блока» и «размер блока преобразования» могут использоваться взаимозаменяемо в настоящем раскрытии сущности. Термины «выборка» и «пиксель» также могут использоваться взаимозаменяемо в настоящем раскрытии.It should be noted that the term "block", "coding block" or "image block" as used in the present disclosure may represent a transformation unit (TU), a prediction unit (PU), a coding unit (CU), etc. In Universal Video Coding (VVC), transform units and encoding units are usually aligned with each other, except when TU tiling or subblock transform (SBT) is used. As such, the terms "block", "image block", "encoding block" and "transform block" may be used interchangeably in the present disclosure; and the terms "block size" and "transform block size" may be used interchangeably in the present disclosure. The terms "sample" and "pixel" may also be used interchangeably in the present disclosure.

Настоящее раскрытие направлено на способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости в зависимости от формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости для генерации вектора движения цветности. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что приводит к техническому результату повышения производительности сжатия, таким образом, улучшается производительность кодировки. The present disclosure is directed to a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the luminance motion vectors, a linear subsampling of the luminance motion field is performed. When chroma color planes have the same height as the lumina plane, it makes more sense to select motion vectors from lumina blocks that are horizontally adjacent so that they have the same vertical position. Selecting luminance motion vectors depending on the chroma format of the picture results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chroma format allows the selection of the most appropriate luminance blocks when averaging the luminance motion vectors to generate a chroma motion vector. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which has the technical effect of increasing compression performance, thus improving encoding performance.

В возможной форме реализации способа согласно первому аспекту набор (S) субблоков яркости определяется на основе значений коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях. То есть один или несколько субблоков яркости (например, один или два субблока яркости) определяются на основе значений коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях.In a possible implementation of the method according to the first aspect, a set (S) of luma subblocks is determined based on the values of the chroma scaling factors in the horizontal and vertical directions. That is, one or more luma subblocks (eg, one or two luma subblocks) are determined based on the values of the chroma scaling factors in the horizontal and vertical directions.

В возможной форме реализации способа согласно первому аспекту коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях представлены переменными SubWidthC и SubHeightC.In a possible implementation of the method according to the first aspect, the chromaticity scaling factors in the horizontal and vertical directions are represented by the variables SubWidthC and SubHeightC.

В возможной форме реализации способа согласно первому аспекту позиция каждого из субблоков яркости представлена индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении, и позиция каждого из субблоков цветности представлена индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.In a possible embodiment of the method according to the first aspect, the position of each of the luma subblocks is represented by a subblock index in the horizontal direction and a subblock index in the vertical direction, and the position of each of the chroma subblocks is represented by a subblock index in the horizontal direction and a subblock index in the vertical direction.

В возможной форме реализации способа согласно первому аспекту позиции каждого из одного или нескольких субблоков яркости (например, одного или двух субблоков яркости) в наборе (S) представлены индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.In an exemplary embodiment of the method according to the first aspect, the positions of each of one or more luminance subblocks (eg, one or two luminance subblocks) in the set (S) are represented by a subblock index in the horizontal direction and a subblock index in the vertical direction.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, если обе переменные SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, if the variables SubWidthC and SubHeightC are both equal to 1, the set of luminance subblocks (S) contains:

субблок яркости, индексированный S0 = (xSbIdx, ySbIdx);luma subblock indexed S0 = (xSbIdx, ySbIdx);

если по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит:if at least one of SubWidthC and SubHeightC is not equal to 1, the luma subblock set (S) contains:

первый субблок яркости, индексированный как S0 = ((xSbIdx >> (SubWidthC- 1) << (SubWidthC - 1)), (ySbIdx >> (SubHeightC - ) << (SubHeightC - 1))), иthe first luma subblock indexed as S0 = ((xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)), (ySbIdx >> (SubHeightC - ) << (SubHeightC - 1))), and

второй субблок яркости, индексированный как S1 = ((xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)),second luma subblock indexed as S1 = ((xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) +(SubHeightC - 1)),

где SubWidthC и SubHeightC представляют соответственно коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях;where SubWidthC and SubHeightC represent the chromaticity scaling factors in the horizontal and vertical directions, respectively;

xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении для субблока яркости в наборе (S), соответственно; “<< ” представляет арифметический сдвиг влево, и “>>” представляет арифметический сдвиг вправо; и xSbIdx=0..numSbX - 1 и ySbIdx=0..numSbY - 1, и numSbX указывает количество субблоков яркости в блоке яркости вдоль горизонтального направления, а numSbY указывает количество субблоков яркости в блоке яркости вдоль вертикального направления.xSbIdx and ySbIdx represent the sub-block index in the horizontal direction and the sub-block index in the vertical direction for the luma sub-block in the set (S), respectively; “<<” represents an arithmetic left shift, and “>>” represents an arithmetic right shift; and xSbIdx=0..numSbX - 1 and ySbIdx=0..numSbY - 1, and numSbX indicates the number of luminance sub-blocks in a luminance block along the horizontal direction, and numSbY indicates the number of luminance sub-blocks in a luminance block along the vertical direction.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, количества субблоков цветности в горизонтальном и вертикальном направлениях такие же, как количества субблоков яркости в горизонтальном и вертикальном направлениях, соответственно. In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the numbers of chroma subblocks in the horizontal and vertical directions are the same as the numbers of luminance subblocks in the horizontal and vertical directions, respectively.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором, если и SubWidthC, и SubHeightC равны 1, набор субблоков (S) яркости содержит:In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, in which, if both SubWidthC and SubHeightC are 1, the set of luminance subblocks (S) comprises:

субблок яркости, индексированный S0 = (xCSbIdx, yCSbIdx);luminance subblock indexed S 0 = (xCSbIdx, yCSbIdx);

если по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит:if at least one of SubWidthC and SubHeightC is not equal to 1, the luma subblock set (S) contains:

первый субблок яркости, индексированный как S0 = ((xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))), иthe first luma subblock indexed as S0 = ((xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))), and

второй субблок яркости, индексированный как S1 = (xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)),second luma subblock indexed as S1 = (xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+ (SubHeightC - 1)),

при этом переменные SubWidthC и SubHeightC представляют соответственно коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях; xCSbIdx и yCSbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении, соответственно, для субблока яркости в наборе (S); и xCSbIdx=0..numCSbX - 1 и yCSbIdx=0..numCSbY - 1, и numCSbX указывает количество субблоков цветности в блоке цветности вдоль горизонтального направления, и numCSbY указывает количество субблоков цветности в блоке цветности вдоль вертикального направления.wherein the variables SubWidthC and SubHeightC represent, respectively, chromaticity scaling factors in the horizontal and vertical directions; xCSbIdx and yCSbIdx represent the sub-block index in the horizontal direction and the sub-block index in the vertical direction, respectively, for the luma sub-block in the set (S); and xCSbIdx=0..numCSbX - 1 and yCSbIdx=0..numCSbY - 1, and numCSbX indicates the number of chroma subblocks in a chroma block along the horizontal direction, and numCSbY indicates the number of chroma subblocks in a chroma block along the vertical direction.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором размер каждого из субблоков цветности является таким же, как размер каждого из субблоков яркости. Допускается, что, когда количество субблоков цветности определено равным количеству субблоков яркости, и когда размер цветовой плоскости цветности равен размеру плоскости яркости (например, формат цветности входной картинки 4: 4: 4), векторы движения смежных субблоков цветности могут принимать одинаковое значение. При реализации этого этапа обработки можно выполнить оптимизацию, пропустив этап вычисления повторяющихся значений.In a possible embodiment of the method according to any previous implementation of the first aspect or the first aspect itself, wherein the size of each of the chrominance subblocks is the same as the size of each of the luminance subblocks. It is conceivable that when the number of chrominance subblocks is defined to be equal to the number of luminance subblocks, and when the size of the chrominance color plane is equal to the size of the luminance plane (for example, the chrominance format of the input picture is 4:4:4), the motion vectors of adjacent chrominance subblocks can take on the same value. When implementing this processing step, you can perform optimization by skipping the step of calculating duplicate values.

Предлагаемое изобретение раскрывает способ определения размера субблока цветности, равного размеру субблока яркости. В этом случае реализация может быть упрощена за счет унификации обработки яркости и цветности, и, естественно, можно избежать избыточных вычислений векторов движения.The present invention discloses a method for determining the size of a chrominance subblock equal to the size of a luminance subblock. In this case, the implementation can be simplified by unifying the processing of luma and chrominance, and, of course, redundant calculations of motion vectors can be avoided.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в случае, когда размер каждого из субблоков цветности такой же, как размер каждого из субблоков яркости, количество субблоков цветности в горизонтальном направлении зависит от количества субблоков яркости в горизонтальном направлении и значения коэффициента масштабирования цветности в горизонтальном направлении;In a possible embodiment of the method according to any previous implementation of the first aspect or the first aspect itself, in the case where the size of each of the chrominance subblocks is the same as the size of each of the luminance subblocks, the number of chroma subblocks in the horizontal direction depends on the number of luminance subblocks in the horizontal direction and the values of the chroma scaling factor in the horizontal direction;

количество субблоков цветности в вертикальном направлении зависит от количества субблоков яркости в вертикальном направлении и значения коэффициента масштабирования цветности в вертикальном направлении.the number of chrominance subblocks in the vertical direction depends on the number of luminance subblocks in the vertical direction and the value of the chrominance scaling factor in the vertical direction.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, xCSbIdx получается на основе xSbIdx и значения шага SubWidth; и yCSbIdx получается на основе ySbIdx и значения шага SubHeightC.In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, xCSbIdx is obtained based on xSbIdx and the SubWidth step value; and yCSbIdx is obtained based on ySbIdx and the step value of SubHeightC.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового,In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such,

numCSbX = numSbX>>(SubWidthC-1)numCSbX = numSbX>>(SubWidthC-1)

numCSbY = numSbY>>(SubHeightC - 1);numCSbY = numSbY>>(SubHeightC - 1);

numCSbX и numCSbY представляют количество субблоков цветности в горизонтальном и вертикальном направлениях соответственно; иnumCSbX and numCSbY represent the number of chrominance subblocks in the horizontal and vertical directions, respectively; And

numSbX и numSbY представляют количество субблоков яркости в блоке яркости в горизонтальном и вертикальном направлениях соответственно.numSbX and numSbY represent the number of luminance subblocks in a luminance block in the horizontal and vertical directions, respectively.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового для блока цветности набор субблоков (S) яркости содержит один или несколько субблоков, индексированных:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect as such for a chroma block, the set of luminance subblocks (S) comprises one or more subblocks indexed by:

S0 = (xSbIdxL, ySbIdxL)S 0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))

S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)

S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))

при этом позиция или индекс S0 блока яркости представлена индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;in this case the position or index S0 of the block brightness is represented by the subblock index xSbIdxL in the horizontal direction and the subblock index ySbIdxL in the vertical direction;

для позиции блока цветности (например, [xSbIdxL] [ySbIdxL] в mvCLX [xSbIdxL] [ySbIdxL],for the chrominance block position (for example, [xSbIdxL] [ySbIdxL] in mvCLX [xSbIdxL] [ySbIdxL],

позиция блока яркости или индекс S1 представлен индексом субблока в горизонтальном направлении, xSbIdxL, и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1);The luminance block position or index S1 is represented by a subblock index in the horizontal direction, xSbIdxL, and a subblock index in the vertical direction, ySbIdxL + (SubHeightC-1);

позиция блока яркости или индекс S2 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL;The luminance block position or index S2 is represented by a subblock index in the horizontal direction, xSbIdxL + (SubWidthC-1), and a subblock index in the vertical direction, ySbIdxL;

позиция блока яркости или индекс S3 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1).The luminance block position or index S3 is represented by a subblock index in the horizontal direction, xSbIdxL + (SubWidthC-1), and a subblock index in the vertical direction, ySbIdxL + (SubHeightC-1).

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором набор субблоков (S) яркости содержит два субблока яркости, индексированных:In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, wherein the set of luminance subblocks (S) comprises two luminance subblocks indexed by:

S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1)),
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1)),

при этом позиция или индекс S0 блока яркости представлены индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;wherein the position or index S0 of the luminance block is represented by a subblock index xSbIdxL in the horizontal direction and a subblock index ySbIdxL in the vertical direction;

позиция блока яркости или индекс S1 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1).The luminance block position or index S1 is represented by a subblock index in the horizontal direction, xSbIdxL + (SubWidthC-1), and a subblock index in the vertical direction, ySbIdxL + (SubHeightC-1).

В возможной форме реализации способа согласно любой предшествующей реализации первого аспекта или первому аспекту как таковому,In a possible form of implementation of the method according to any prior implementation of the first aspect or the first aspect as such,

в случае, когда форматом цветности является 4: 4: 4, набор (S) содержит (состоит из) один субблок яркости, который совмещен с субблоком цветности;in the case where the chrominance format is 4:4:4, the set (S) contains (consists of) one luma subblock, which is combined with a chrominance subblock;

при этом в случае, если формат цветности равен 4: 2: 2, набор (S) содержит два субблока яркости, которые смежны по горизонтали;in this case, if the chroma format is 4: 2: 2, the set (S) contains two luminance subblocks that are horizontally adjacent;

при этом в случае, если формат цветности равен 4: 2: 0 набор (S) содержит два субблока яркости, которые диагональны.Moreover, in case the chroma format is 4: 2: 0, the set (S) contains two luminance subblocks that are diagonal.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором, если имеется более одного субблока яркости в наборе (S), определение вектора движения для субблока цветности на основе вектора движения по меньшей мере одного субблока яркости в наборе (S) субблоков яркости, содержит:In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein, if there is more than one luma subblock in the set (S), determining a motion vector for the chrominance subblock based on the motion vector of at least one luma subblock in the set (S) brightness subblocks, contains:

усреднение векторов движения субблоков яркости в наборе S; и averaging the motion vectors of brightness subblocks in the set S; And

вывод вектора движения для субблока цветности на основе среднего вектора движения яркости.inferring a motion vector for the chrominance subblock based on the average luminance motion vector.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит: In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the averaging of the motion vectors of the luminance subblocks in the set S comprises:

усреднение горизонтальных составляющих векторов движения субблоков яркости в наборе S; и/или averaging the horizontal components of the motion vectors of brightness subblocks in the set S; and/or

усреднение вертикальных составляющих векторов движения субблоков яркости в наборе S.averaging of the vertical components of the motion vectors of brightness subblocks in the set S.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит проверку, является ли сумма векторов движения субблоков яркости в наборе S большей или равной 0.In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein averaging the motion vectors of the luminance subblocks in the set S comprises checking whether the sum of the motion vectors of the luminance subblocks in the set S is greater than or equal to 0.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein the averaging of the motion vectors of the luminance subblocks in the set S comprises:

mvAvgLX = если mvAvgLX[ 0 ] больше чем или равно 0, тогда mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) если mvAvgLX[ 1 ] больше чем или равно 0, тогда mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)), где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в наборе субблоков (S) яркости в массиве векторов движения, , вектор движения субблока яркости с индексами и , N - количество элементов (например, субблоков яркости) в наборе субблоков (S) яркости, log2 (N) представляет собой логарифм N по основанию 2 и степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. mvAvgLX = if mvAvgLX[ 0 ] is greater than or equal to 0, then mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), otherwise, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) if mvAvgLX[ 1 ] is greater than or equal to 0, then mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), otherwise, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)), where mvAvgLX is the result of averaging, mvAvgLX [0] - horizontal component of the motion vector mvAvgLX, mvAvgLX [1] - vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the subblock Si in the set of subblocks (S) of brightness in the array of motion vectors, , brightness subblock motion vector with indices And , N is the number of elements (such as luminance subblocks) in the luminance subblock set (S), log2(N) is the logarithm of N to base 2 and the power to which the number 2 is raised to give the value of N, and “>>” is arithmetic shift to the right.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового N равно 2.In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect as such, N is equal to 2.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the averaging of the motion vectors of the luminance subblocks in the set S comprises:

mvAvgLX = mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))]mvAvgLX = mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))]

[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))]+[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))]+

mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))+(SubWidthC - 1)]mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))+(SubWidthC - 1)]

[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))+(SubHeightC - 1)][(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))+(SubHeightC - 1)]

если mvAvgLX[0] >= 0 то mvAvgLX[ 0 ] =( mvAvgLX[ 0 ] + 1 - (mvAvgLX[0] >= 0)) >> 1 if mvAvgLX[0] >= 0 then mvAvgLX[ 0 ] =( mvAvgLX[ 0 ] + 1 - (mvAvgLX[0] >= 0)) >> 1

если mvAvgLX[1] >= 0 то mvAvgLX[ 1 ] =( mvAvgLX[ 1 ] + 1 - (mvAvgLX[1] >= 0)) >> 1if mvAvgLX[1] >= 0 then mvAvgLX[ 1 ] =( mvAvgLX[ 1 ] + 1 - (mvAvgLX[1] >= 0)) >> 1

где mvAvgLX [0] - горизонтальная составляющая усредненного вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая усредненного вектора движения mvAvgLX; где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и вертикальном направлении, соответственно, для субблока яркости в наборе (S), “<<” - это арифметический сдвиг влево, а “>>” - арифметический сдвиг вправо.where mvAvgLX [0] is the horizontal component of the averaged motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the averaged motion vector mvAvgLX; where SubWidthC and SubHeightC represent chroma scaling factors in the horizontal and vertical directions, respectively; xSbIdx and ySbIdx represent the subblock index in the horizontal direction and vertical direction, respectively, for the luma subblock in the set (S), “<<” is the arithmetic left shift, and “>>” is the arithmetic right shift.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, если Случай 1: mvAvgLX[ 0 ] >= 0, тогда значение для “(mvAvgLX[0] >= 0)” =1; если случай 2:mvAvgLX[ 0 ] < 0, тогда значение для “(mvAvgLX[0] >= 0)” =0;In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, if Case 1: mvAvgLX[ 0 ] >= 0, then the value for “(mvAvgLX[0] >= 0)” =1; if case 2:mvAvgLX[ 0 ] < 0, then the value for “(mvAvgLX[0] >= 0)” =0;

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит: In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the averaging of the motion vectors of the luminance subblocks in the set S comprises:

когда сумма векторов движения субблоков яркости в наборе S больше или равна 0, сумма векторов движения субблоков яркости в наборе S делится операцией сдвига вправо в зависимости от количества элементов (например, субблоков яркости) в наборе субблоков (S) яркости.when the sum of motion vectors of luminance subblocks in a set S is greater than or equal to 0, the sum of motion vectors of luminance subblocks in set S is divided by a right shift operation depending on the number of elements (eg, luminance subblocks) in the luminance subblock set (S).

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности содержит:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect as such, determining the chroma scaling factors in the horizontal and vertical directions based on the chroma format information comprises:

определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе сопоставления между информацией формата цветности и коэффициентами масштабирования цветности в горизонтальном и вертикальном направлениях.determining chrominance scaling factors in the horizontal and vertical directions based on a mapping between the chroma format information and the chrominance scaling factors in the horizontal and vertical directions.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, дополнительно содержащегоIn a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, further comprising

генерирование предсказания субблока цветности на основе определенного вектора движения.generating a chrominance subblock prediction based on the determined motion vector.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, формат цветности содержит один из формата YUV 4: 2: 2, формата YUV 4: 2: 0 или формата YUV 4: 4: 4.In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the chroma format comprises one of a YUV 4:2:2 format, a YUV 4:2:0 format, or a YUV 4:4:4 format.

Способ согласно любой предыдущей реализации первого аспекта или первого аспекта как такового реализуется устройством кодирования.The method according to any previous implementation of the first aspect or the first aspect as such is implemented by an encoding device.

Способ согласно любой предыдущей реализации первого аспекта или первого аспекта как такового реализуется устройством декодирования.The method according to any previous implementation of the first aspect or the first aspect as such is implemented by a decoding device.

Согласно второму аспекту изобретения предоставляется аппаратура для аффинного внешнего предсказания блока текущей картинки, содержащего совмещенные блоки яркости и цветности, при этом аппаратура содержитAccording to a second aspect of the invention, apparatus is provided for affine inter-prediction of a block of a current picture containing combined luma and chrominance blocks, wherein the apparatus comprises

модуль определения, сконфигурированный для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит текущий блок изображения; и определения набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; иa determination module configured to determine chrominance scaling factors in the horizontal and vertical directions based on chrominance format information, wherein the chrominance format information indicates the chrominance format of a current picture to which the current image block belongs; and determining a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; And

модуль вывода вектора движения, сконфигурированный для определения вектора движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.a motion vector output module configured to determine a motion vector for a chrominance subblock of the chrominance block based on the motion vectors of one or more luminance subblocks in the luminance subblock set (S).

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

Согласно третьему аспекту изобретение относится к аппаратуре для девидеокодированияпотока, включающей в себя процессор и память. В памяти хранятся инструкции, которые заставляют процессор выполнять способ согласно первому аспекту.According to a third aspect, the invention relates to apparatus for de-video encoding a stream, 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, the invention relates to video stream encoding apparatus 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 fifth aspect, there is provided a computer-readable storage medium that stores instructions that, when executed, call one or more processors configured to encode video data. The instructions cause one or more processors to perform a method according to the first aspect or any possible embodiment of the first aspect.

Согласно шестому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно первому или второму аспекту или любому возможному варианту осуществления первого при выполнении на компьютере.According to a sixth aspect, the invention relates to a computer program containing program code for performing a method according to the first or second aspect or any possible embodiment of the first 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 inventions 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 coding system configured to implement the embodiments presented herein;

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

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

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

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

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

Фиг. 6а показывает пример позиций вектора движения контрольной точки для аффинной модели движения с 4 параметрами;Fig. 6a shows an example of control point motion vector positions for a 4-parameter affine motion model;

Фиг. 6b показывает пример позиций вектора движения контрольной точки для аффинной модели движения с 6 параметрами;Fig. 6b shows an example of control point motion vector positions for a 6-parameter affine motion model;

Фиг. 7 показывает пример поля вектора движения субблока для аффинной модели движения;Fig. 7 shows an example of a subblock motion vector field for an affine motion model;

Фиг. 8 - блок-схема, иллюстрирующая компенсацию движения с использованием аффинной модели движения;Fig. 8 is a block diagram illustrating motion compensation using an affine motion model;

Фиг. 9A показывает пример номинальных вертикальных и горизонтальных местоположений выборок яркости и цветности 4:2:0 на картинке;Fig. 9A shows an example of the nominal vertical and horizontal locations of 4:2:0 luma and chrominance samples in a picture;

Фиг. 9B показывает пример номинальных вертикальных и горизонтальных положений выборок яркости и цветности 4:2:2 на картинке;Fig. 9B shows an example of the nominal vertical and horizontal positions of 4:2:2 luma and chrominance samples in a picture;

Фиг. Фиг. 9С показывает пример номинальных вертикальных и горизонтальных положений выборок яркости и цветности 4:4:4 на картинке;Fig. Fig. 9C shows an example of the nominal vertical and horizontal positions of 4:4:4 luma and chrominance samples in a picture;

Фиг. 9D иллюстрирует различные шаблоны выборки;Fig. 9D illustrates various sampling patterns;

Фиг. 10A показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:2:0.Fig. 10A shows an example illustrating combined luma and chrominance blocks that are included in the current image block of the current picture, where the chrominance aspect ratio of the current picture is 4:2:0.

Фиг. 10В показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:2:2;Fig. 10B shows an example illustrating combined luminance and chrominance blocks that are included in the current image block of the current picture, where the chrominance aspect ratio of the current picture is 4:2:2;

Фиг. 10C показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:4:4;Fig. 10C shows an example illustrating combined luma and chrominance blocks that are included in the current image block of the current picture, where the chrominance aspect ratio of the current picture is 4:4:4;

Фиг. 11A - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки 4:2:0, как показано на фиг. 10А;Fig. 11A is an example illustrating the positions of two luminance subblocks for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:0, as shown in FIG. 10A;

Фиг. 11В - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:2:2, как показано на фиг. 10B;Fig. 11B is an example illustrating the positions of two luminance subblocks for a given chrominance subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:2, as shown in FIG. 10B;

Фиг. 11С - пример, иллюстрирующий позицию субблока яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:4:4, как показано на фиг. 10С;Fig. 11C is an example illustrating a luminance subblock position for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:4:4, as shown in FIG. 10C;

Фиг. 12A показывает различные примеры поднабора S, который содержит позиции субблоков яркости для данной позиции субблока цветности, когда формат цветности установлен на 4:4:4;Fig. 12A shows various examples of a subset S that contains luma subblock positions for a given chrominance subblock position when the chrominance format is set to 4:4:4;

Фиг. 12B показывает различные примеры поднабора S, в котором субблоки цветности, расположенные на границе блока цветности, имеют соответствующие позиции в блоке яркости, как в четвертом случае «D», показанном на фиг. 12A;Fig. 12B shows various examples of a subset S in which chrominance subblocks located on a chrominance block boundary have corresponding positions in a luma block, as in the fourth case "D" shown in FIG. 12A;

Фиг. 13A показывает пример, иллюстрирующий выбор двух субблоков яркости для выведения вектора движения для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки равен 4:2:0;Fig. 13A shows an example illustrating the selection of two luminance sub-blocks to output a motion vector for a given chroma sub-block at the time of deriving chroma motion vectors from luminance motion vectors when the chrominance aspect of the current picture is 4:2:0;

Фиг. 13B показывает пример, иллюстрирующий выбор двух субблоков яркости для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:2:2;Fig. 13B shows an example illustrating the selection of two luminance sub-blocks for a given chroma sub-block at the time of outputting chroma motion vectors from luminance motion vectors when the chrominance aspect ratio of the current picture is 4:2:2;

Фиг. 13C показывает пример, иллюстрирующий выбор субблока яркости для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:4:4;Fig. 13C shows an example illustrating the selection of a luminance sub-block for a given chroma sub-block at the time of outputting chroma motion vectors from luminance motion vectors when the chrominance aspect ratio of the current picture is 4:4:4;

Фиг. 14A показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:2:0;Fig. 14A shows an example of dividing a 16×16 luma block into subblocks and dividing a chrominance block combined with a luma block when the chrominance format is YUV 4:2:0;

Фиг. 14B показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:2:2;Fig. 14B shows an example of dividing a 16×16 luma block into subblocks and dividing a chrominance block combined with a luma block when the chrominance format is YUV 4:2:2;

Фиг. 14C показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:4:4;Fig. 14C shows an example of dividing a 16×16 luma block into subblocks and dividing a chrominance block combined with a luma block when the chrominance format is YUV 4:4:4;

Фиг. 15 показывает блок-схему, изображающую примерный процесс вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности согласно некоторым аспектам настоящего раскрытия; Fig. 15 is a flow chart depicting an exemplary motion vector inference process for affine inter prediction of chroma subblocks based on a chroma format in accordance with some aspects of the present disclosure;

Фиг. 16 показывает блок-схему, изображающую другой примерный процесс вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности согласно некоторым аспектам настоящего раскрытия;Fig. 16 is a flow diagram depicting another example motion vector inference process for affine inter prediction of chroma subblocks based on a chroma format in accordance with some aspects of the present disclosure;

Фиг. 17 показывает схематическую диаграмму устройства для аффинного внешнего предсказания согласно некоторым аспектам настоящего раскрытия;Fig. 17 shows a schematic diagram of an apparatus for affine inter prediction in accordance with certain aspects of the present disclosure;

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

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

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

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

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

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

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

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

Настоящее раскрытие относится к улучшениям в процессе внешнего предсказания. В частности, настоящее раскрытие относится к усовершенствованиям в процессе вывода векторов движения цветности. В частности, настоящее раскрытие относится к усовершенствованиям в процессе вывода вектора движения аффинных блоков цветности (например, субблоков цветности). Более конкретно, настоящее раскрытие относится к улучшениям в процессе вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности.The present disclosure relates to improvements in the external prediction process. In particular, the present disclosure relates to improvements in the process of inferring chroma motion vectors. In particular, the present disclosure relates to improvements in the motion vector inference process of affine chroma blocks (eg, chroma subblocks). More specifically, the present disclosure relates to improvements in the motion vector inference process for affine inter-prediction of chroma subblocks based on chroma format.

В данном документе раскрыты улучшенные механизмы для поддержки множества форматов цветности для процесса вывода векторов движения цветности.This document discloses improved mechanisms to support multiple chroma formats for the chroma motion vector inference process.

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

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

Как показано на ФИГ. 1A, система 10 кодировки содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 картинки, например в устройство-получатель 14 для декодирования кодированных данных 21 картинки.As shown in FIG. 1A, 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 21.

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

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

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

Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 картинки и выполнения предварительной обработки в отношении этих данных 17 картинки для получения предварительно обработанной картинки 19 или предварительно обработанных данных 19 картинки. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.The preprocessor 18 is configured to receive (raw) picture data 17 and perform preprocessing on the picture data 17 to produce a preprocessed picture 19 or preprocessed picture data 19. Preprocessing performed by preprocessor 18 may, for example, comprise cropping, color format conversion (eg, RGB to YCbCr), color correction, or noise reduction. It can be understood that the preprocessing unit 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 encoded picture data 21 and transmit this encoded picture data 21 (or any further processed version thereof) over the communication channel 13 to another device, such as the destination device 14 or any other device, for saving or immediate restoration.

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

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

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 картинки или кодированных данных 21 через прямую линию связи между устройством-источником 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 21 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 picture data 21 into an appropriate format, such as packets, and/or process the encoded picture data using any type of transmission encoding or processing for transmission over a communications link or network.

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

Декодер 30 выполнен с возможностью приема кодированных данных 21 картинки и предоставления декодированных данных 31 картинки или декодированной картинки 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5.The decoder 30 is configured to receive encoded 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. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки декодированных данных 31 картинки для отображения, например с помощью устройства 34 отображения.The post-processor 32 of the recipient device 14 is configured to post-process the decoded picture data 31 (also called reconstructed picture data), such as the decoded picture 31, to obtain post-processed picture data 33, such as the post-processed picture 33. Post-processing performed by block 32 post-processing may include, for example, color format conversion (eg, from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare the decoded picture data 31 for display, for example, by display device 34.

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

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

Как будет очевидно для специалиста на основании описания, существование и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.As will be apparent to one skilled in the art from the description, the existence and (precise) separation of functionality of various blocks or functionality in source device 12 and/or destination device 14, as shown in FIG. 1A, may vary depending on the actual device and 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 a processing circuit as shown in FIG. 1B, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoding, or any combination thereof. Encoder 20 may be implemented through processing circuit 46 to implement various modules, as discussed with respect to encoder 20 of FIG. 2 and/or any other encoder system or subsystem described in this document. Decoder 30 may be implemented through processing circuit 46 to implement various modules, as discussed with respect to decoder 30 of FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuit may be configured to perform various operations, which will be described below. As shown in FIG. 5, if the techniques are partially implemented in software, the apparatus may store 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 comprise any of a wide range of devices, including any type of portable or desktop devices, such as laptops or notebook computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, television 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, broadcast sender, or the like, and may use or dispense with any type of operating system . In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.

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

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

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

Фиг. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации методик настоящей заявки. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных картинок, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разбиения. Модуль 244 внешнего предсказания может включать в себя модуль оценки движения и модуль компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.Fig. 2 shows a schematic block diagram of an exemplary video encoder 20 that is configured to implement the techniques of the present application. In the example in FIG. 2, video encoder 20 includes an input 201 (or input interface 201), a remainder calculation block 204, a transform processing block 206, a quantization block 208, an inverse quantization block 210 and an inverse transform processing block 212, a restoration block 214, a loop filter block 220, a buffer 230 ( DPB) of decoded pictures, a mode selection unit 260, an entropy encoding unit 270, and an output 272 (or output interface 272). The mode selection block 260 may include an inter prediction block 244, an intra prediction block 254, and a partitioning block 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 block 204, transform processing block 206, quantization block 208, mode selection block 260 may relate to the formation of the forward signal path of the encoder 20, while the inverse quantization block 210, inverse transform processing block 212, restoration block 214, buffer 216, contour filter 220, decoded picture buffer (DPB) 230, inter prediction block 244, and intra prediction block 254 may relate to generating a reverse signal path of video encoder 20, wherein the reverse signal path of video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 on Fig. 3). The inverse quantization unit 210, the inverse transform processing unit 212, the restoration unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244, and the intra prediction unit 254 are also relevant to forming the “on-chip decoder” of the video encoder 20.

Картинки и разбиение картинок (картинки и блоки)Pictures and picture breakdown (pictures and blocks)

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

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

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

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

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

Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разбита на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).Embodiments of video encoder 20, as shown in FIG. 2 may be further configured to partition and/or encode a picture using slices (also referred to as video slices), wherein the picture may be partitioned into or encoded using one or more slices (usually non-overlapping), and each slice may contain one or more units (for example, CTU).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ФильтрацияFiltration

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

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

Буфер декодированных картинок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 video encoding of data by video encoder 20. DPB 230 may be formed by any of a variety of storage devices, such as dynamic random access memory (DRAM). DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as previously reconstructed and filtered blocks 221, the same current picture, or different pictures, for example, previously restored pictures, and can provide complete previously restored ones, i.e. decoded, pictures (and corresponding reference blocks and samples) and/or partially reconstructed current picture (and corresponding reference blocks and samples), for example, for inter-prediction. Decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215, or generally unfiltered reconstructed samples, for example, if reconstructed block 215 is not filtered by loop filter block 220, or any other further processed version of the reconstructed blocks or selections.

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

Блок 260 выбора режима содержит блок 262 разбиения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и сконфигурирован для приема или получения данных исходной картинки, например, исходного блока 203 (текущего блока 203 текущей картинки 17), и данные восстановленной картинки, например отфильтрованные и/или нефильтрованные восстановленные выборки или блоки одной и той же (текущей) картинки и/или из одного или множества ранее декодированных картинок, например, из буфера 230 декодированных картинок или других буферов (например, строкового буфера, не показано). Данные восстановленной картинки используются в качестве данных опорной картинки для предсказания, например, внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предиктор 265. Как будет подробно описано ниже, варианты осуществления, представленные в данном документе, обеспечивают улучшение блока 244 внешнего предсказания, обеспечивая более точное предсказание вектора движения, используемое блоком внешнего предсказания при выполнении внешнего предсказания, например, аффинное внешнее предсказание или внешнее предсказание на основе субблоков.The mode selection unit 260 includes a partitioning unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive or obtain original picture data, such as the original block 203 (the current block 203 of the current picture 17), and reconstructed picture data, such as filtered and /or unfiltered reconstructed samples or blocks of the same (current) picture and/or from one or multiple previously decoded pictures, for example, from decoded picture buffer 230 or other buffers (eg, a line buffer, not shown). The reconstructed picture data is used as reference picture data for prediction, such as inter prediction or intra prediction, to obtain prediction block 265 or predictor 265. As will be described in detail below, embodiments presented herein provide improvements to inter prediction block 244. providing a more accurate motion vector prediction used by the inter prediction block when performing inter prediction, such as affine inter prediction or sub-block based inter prediction.

Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для текущего режима предсказания блока (в том числе отсутствие разбиения) и режима предсказания (например, режима внутреннего или внешнего предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.The mode selection module 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 the mode selector 260 may be configured to select a partition and prediction mode (eg, from those supported by or available to the mode selector 260) that provides the best match, or in other words, the minimum remainder (the minimum remainder means the best compression for transmission or storage), or minimal signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which takes into account or balances both factors. The mode selector 260 may be configured to determine a 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 the all-encompassing "best", "minimum", "optimal", etc., but may also refer to meeting a selection or termination criterion, such as when a value exceeds or falls below a threshold, or other constraints, potentially leading to "suboptimal selection" but reducing complexity and processing time.

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

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

РазбиениеSplitting

Блок 262 разбиения может разбивать (или разделять) текущий блок 203 на более мелкие разбиения, например, блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разбиты на еще меньшие разбиения. Это также называется разбиением дерева или иерархическим разбиением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разбит, например, разбит на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разбиты на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разбиение не будет завершено, например, из-за выполнения критерия прекращения, например, достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разбиваются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разбиение на два разбиения, называется двоичным деревом (BT), дерево, использующее разбиение на три разбиения, называется троичным деревом (TT), а дерево, использующее разбиение на четыре разбиения, называется квадродеревом (QT).The splitter 262 may split (or divide) the current block 203 into smaller splits, such as smaller blocks of square or rectangular size. These smaller blocks (which may also be called subblocks) can be further broken down into even smaller blocks. This is also called tree splitting or hierarchical tree splitting, in which a root block, for example at root level 0 of the tree (hierarchy level 0, depth 0), can be recursively split, for example split into two or more blocks of the next lower tree level, e.g. nodes at tree level 1 (hierarchy level 1, depth 1), and these blocks can be again split into two or more blocks of the next lower level, such as tree level 2 (hierarchy level 2, depth 2), etc. until the splitting is completed, for example due to a termination criterion being met, such as reaching the maximum tree depth or minimum block size. Blocks that are not further split 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 ternary tree (TT), and a tree that uses a four-partition is called a quadtree (QT).

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

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

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

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

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

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

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

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

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

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

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

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

Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на Фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 картинки (блока 203 текущей картинки для текущей картинки 17) и декодированной картинки 231, или по меньшей мере одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или множества других/отличных ранее декодированных картинок 231, для оценки движения. Например, видеопоследовательность может содержать текущую картинку и ранее декодированные картинки 231 или, другими словами, текущую картинку и ранее декодированные картинки 231 могут быть частью или формировать последовательность картинок, образующих видеопоследовательность.The inter-prediction block 244 may include a motion estimation (ME) block and a motion compensation (MC) block (both not shown in FIG. 2). The motion estimator may be configured to receive or obtain a picture block 203 (current picture block 203 for the current picture 17) and a decoded picture 231, or at least one or a plurality of previously reconstructed blocks, e.g., reconstructed blocks of one or a plurality of other/different 231 previously decoded pictures 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).The 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 inter-prediction parameters to the motion estimation block. This displacement is also called motion vector (MV).

Блок компенсации движения выполнен с возможностью получения, например, приема параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число кандидатных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущей картинки блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных картинок. В настоящем раскрытии усовершенствования внешнего предсказания (в частности, афинного внешнего предсказания или внешнего предсказания на основе субблока) выполняются посредством поддержки множества форматов цветности и уточнения процесса вывода вектора движения аффинного субблока. В частности, ниже будут представлены улучшенный способ и аппаратура для вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности.The motion compensation unit is configured to obtain, for example, receiving an inter prediction parameter and performing inter prediction based on or using the inter prediction parameter to obtain an inter prediction unit 265. The motion compensation performed by the motion compensation block may include obtaining or generating a prediction block based on a motion vector/block determined by motion estimation, possibly performing interpolations with sub-pixel precision. Interpolation filtering can generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode an image block. After receiving the motion vector for the PU block of the current picture, the motion compensation unit can determine the location of the prediction block pointed to by the motion vector in one of the reference picture lists. In the present disclosure, improvements to inter-prediction (specifically, affine inter-prediction or sub-block-based inter-prediction) are accomplished by supporting multiple chrominance formats and refining the affine sub-block motion vector inference process. In particular, an improved method and apparatus for inferring a motion vector for affine inter-prediction of chrominance subblocks based on a chrominance format will be presented below.

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

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

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

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

В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных картинок, блок 360 применения режима, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.In the example in FIG. 3, decoder 30 includes an entropy decoding block 304, an inverse quantization block 310, an inverse transform processing block 312, a recovery block 314 (e.g., adder 314), a loop filter 320, a decoded picture buffer (DPB) 330, a mode applying block 360, a block 344 inter prediction and intra prediction block 354. The inter prediction unit 344 may be or include a motion compensation unit. Video decoder 30 may, in some examples, perform a decoding step that is generally the opposite 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 picture buffer (DPB) 230, the inter-prediction unit 344, and the intra-prediction unit 354 also relate to forming the “on-chip decoder”. » video encoder 20. Accordingly, the inverse quantization block 310 may be identical in function to the inverse quantization block 110, the inverse transform processing block 312 may be identical in function to the inverse transform processing block 212, the restoration block 314 may be identical in function to the reconstruction block 214, loop filter 320 may be identical in function to loop filter 220, and decoded picture buffer 330 may be identical in function to decoded picture buffer 230. Therefore, the explanations provided for the corresponding blocks and functions of the video encoder 20 apply correspondingly to the corresponding blocks and functions of the video decoder 30.

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

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

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

Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 картинки (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.The inverse quantization unit 310 may be configured to receive quantization parameters (QPs) (or, more generally, information related to inverse quantization) and quantized coefficients from the encoded picture data 21 (e.g., by parsing and/or decoding, e.g., by entropy decoding block 304) and applying, based on the quantization parameters, inverse quantization on the decoded quantized coefficients 309 to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process may include using a quantization parameter determined by video encoder 20 for each video block in a video slice (or tile or group of tiles) 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 residual blocks 213 in the sample region. 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 integer integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may be further configured to receive transform parameters or corresponding information from the encoded picture data 21 (e.g., by parsing and/or decoding, e.g., by entropy decoding unit 304) to determine a transform to be applied to dequantized coefficients 311.

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

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

ФильтрацияFiltration

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

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

Декодированные видеоблоки 321 картинки затем сохраняются в буфере 330 декодированных картинок, который сохраняет декодированные картинки 331 в качестве опорных картинок для последующей компенсации движения для других картинок и/или для вывода, соответственно, отображения.The decoded video picture blocks 321 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 output or display.

Декодер 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 the user.

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

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

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

Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (внутреннее или внешнее предсказание), используемого для кодирования видео блоков видеослайса, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных картинок для слайса, векторов движения для каждого внешне-кодированного видеоблока слайса, статуса внешнего предсказания для каждого внешне-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.The mode applying unit 360 is configured to determine prediction information for a video block of the current video slice by parsing 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 apply block 360 uses some of the received syntax elements to determine the prediction mode (intra or inter prediction) used to encode video blocks of a video slice, the type of inter prediction slice (e.g., B-slice, P-slice, or GPB slice), construction information for one or more reference picture lists for the slice, motion vectors for each outer-coded video block of the slice, inter-prediction status for each outer-coded video block of the slice, and other information for decoding the video blocks in the current video slice. The same or similar may apply to or through embodiments using tile groups (eg, video tile groups) and/or tiles (eg, video tiles) in addition to or alternatively to slices (eg, video slices), for example, video may be encoded with using groups of I, P or B tiles and/or tiles.

Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разбита на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).Embodiments of video decoder 30, as shown in FIG. 3 may be configured to split and/or decode a picture using slices (also referred to as video slices), wherein a picture may be split into or encoded using one or more slices (usually non-overlapping), and each slice may contain one or more blocks (for example, CTU).

Варианты осуществления видеодекодера 30, показанные на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования картинки с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разбита на или декодирована с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или фракционные блоки.Embodiments of video decoder 30 shown in FIG. 3 may be configured to partition and/or decode a picture using groups of tiles (also called video tile groups) and/or tiles (also called video tiles), wherein the picture can be partitioned into or decoded using one or more tile groups (usually not overlapping), and each group of tiles may contain, for example, one or more blocks (for example, CTU) or one or more tiles, each tile, by way of example, may be rectangular in shape and may contain one or more blocks ( e.g. CTU) 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 detransforming processing unit 312 for some blocks or frames. In another implementation, video decoder 30 may have an inverse quantization block 310 and an inverse transform processing block 312 combined into one block.

Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, выведения вектора движения или контурной фильтрации, дополнительная операция, такая как усечение или смещение, может выполняться над результатом обработки интерполяционной фильтрации, выведения вектора движения или контурной фильтрации.It should be understood that in the encoder 20 and decoder 30, the result of processing of some current stage may be further processed and then output to the next stage. For example, after interpolation filtering, motion vector inference, or contour filtering, an additional operation, such as trimming or shifting, may be performed on the result of the interpolation filtering, motion vector inference, or contour 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 derived motion vectors of the current block (including, but not limited to, affine mode checkpoint motion vectors, affine mode, planar, ATMVP mode subblock motion vectors, temporary motion vectors, and the like). For example, the value of a motion vector is limited to a predefined range according to its representing bit. If the representing bit of the motion vector is bitDepth, then the range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is 16, the range is -32768~32767; if bitDepth is 18, the range is -131072~131071. For example, the value of the derived motion vector (eg, the MV of four 4x4 sub-blocks in one 8x8 block) is limited such that the maximum difference between the whole portions of the MV of the four 4x4 sub-blocks is no more than N pixels, eg, no more than 1 pixel. Here are two ways to constrain the motion vector according to bitDepth.

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

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

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

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

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

где mvx представляет собой горизонтальную составляющую вектора движения блока картинки или субблока, mvy представляет собой вертикальную составляющую вектора движения блока картинки или субблока, а ux и uy указывает промежуточное значение;where mvx represents the horizontal component of the motion vector of a picture block or sub-block, mvy represents the vertical component of the motion vector of a picture block or sub-block, and ux and uy indicate an intermediate value;

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

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

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

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

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

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

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

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

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

где vx представляет собой горизонтальную составляющую вектора движения блока картинки или субблока, vy представляет собой вертикальную составляющую вектора движения блока картинки или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:where vx represents the horizontal component of the motion vector of the picture block or sub-block, vy represents the vertical component of the motion vector of the picture block or sub-block; x, y and z respectively correspond to the three input values of the MV clipping process, and the definition of the Clip3 function is as follows:

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

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

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

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

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

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

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

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

Устройство 500 может также включать в себя одно или более устройств вывода, например, дисплей 518. Дисплей 518 может быть, в одном примере, чувствительным к касанию дисплеем, который объединяет дисплей с чувствительным к касанию элементом, способным считывать вводы касанием. Дисплей 518 может быть соединен с процессором 502 через шину 512.Device 500 may also include one or more output devices, such as a display 518. Display 518 may be, in one example, a touch-sensitive display that combines a display with a touch-sensitive element capable of sensing touch inputs. 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 apparatus 500 may be composed of multiple buses. In addition, secondary storage 514 may be directly coupled to other components of hardware 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, the apparatus 500 can be implemented in a wide variety of configurations.

Представленные здесь варианты осуществления будут описаны более подробно следующим образом. Источник видео, представленный потоком битов, может включать в себя последовательность картинок в порядке декодирования. Каждая из картинок (которая может быть исходной картинкой или декодированной картинкой) включает в себя один или несколько из следующих массивов выборок:The embodiments presented herein will be described in more detail as follows. The video source, represented by a bitstream, may include a sequence of pictures in decoding order. Each of the pictures (which may be the original picture or the decoded picture) includes one or more of the following sample arrays:

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

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

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

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

Для удобства обозначений и терминологии в настоящем раскрытии, переменные и термины, ассоциированные с этими массивами, упоминаются как яркость (или L или Y) и цветность, где два массива цветности упоминаются как Cb и Cr.For convenience of notation and terminology in the present disclosure, the variables and terms associated with these arrays are referred to as luma (or L or Y) and chroma, where the two chroma arrays are referred to as Cb and Cr.

Фиг. 9A иллюстрирует расположение компоненты цветности в случае схемы дискретизации (выборки) 4: 2: 0. Примеры других схем дискретизации показаны на рис. 9B и 9C.Fig. 9A illustrates the location of the chrominance component in the case of a 4:2:0 sampling scheme. Examples of other sampling schemes are shown in Fig. 9B and 9C.

Как показано на фиг. 9A, в схеме дискретизации 4:2:0 может иметь место сдвиг между сетками компонент яркости и цветности. В блоке 2 × 2 пикселя компоненты цветности фактически сдвинуты на половину пикселя по вертикали по сравнению с компонентой яркости (см. Фиг. 9A). Такой сдвиг может влиять на фильтры интерполяции при понижении дискретизации картинки или при повышении дискретизации картинки. На фиг. 9D представлены различные шаблоны дискретизации (выборки) в случае чересстрочной картинки. Это означает, что также учитывается четность, то есть то, находятся ли пиксели в верхнем или нижнем полях чересстрочной картинки.As shown in FIG. 9A, in a 4:2:0 sampling scheme there may be a shift between the luma and chrominance component grids. In a 2×2 pixel block, the chrominance components are actually shifted vertically by half a pixel compared to the luminance component (see FIG. 9A). This shift can affect interpolation filters when downsampling an image or upsampling an image. In fig. 9D shows various sampling patterns in the case of an interlaced picture. This means that parity is also taken into account, that is, whether the pixels are in the top or bottom margins of the interlaced picture.

Согласно проекту спецификации универсального видеокодирования (VVC), специальный флаг «sps_cclm_colocated_chroma_flag» сигнализируется на уровне параметров последовательности. Флаг «sps_cclm_colocated_chroma_flag», равный 1, указывает, что верхняя левая субдискретизированная выборка яркости в межкомпонентном линейном моделировании внутреннего предсказания совмещена с верхней левой выборкой яркости. sps_cclm_colocated_chroma_flag, равное 0, указывает, что верхняя левая субдискретизированная выборка яркости в межкомпонентной линейной модели внутреннего предсказания совмещена по горизонтали с верхней левой выборкой яркости, но сдвинута по вертикали на 0,5 единицы выборкок яркости относительно верхней левой выборки яркости.According to the draft Versatile Video Coding (VVC) specification, a special flag "sps_cclm_colocated_chroma_flag" is signaled at the sequence parameter level. A flag "sps_cclm_colocated_chroma_flag" equal to 1 indicates that the top left subsampled luminance sample in the intra-prediction intercomponent linear modeling is colocated with the top left luminance sample. sps_cclm_colocated_chroma_flag equal to 0 indicates that the top left subsampled luminance sample in the intercomponent linear intra prediction model is horizontally colocated with the top left luminance sample, but shifted vertically by 0.5 luminance sample units relative to the top left luminance sample.

Аффинное предсказание с компенсацией движенияAffine prediction with motion compensation

В реальном мире существует множество видов движения, например увеличение/уменьшение, вращение, перспективные движения, поступательное движение и другие нерегулярные движения. В HEVC (ITU-T H.265) для предсказания компенсации движения (MCP) используется только модель движения смещения. В VVC применяется предсказание компенсации движения с аффинным преобразованием. Аффинное поле движения блока описывается двумя или тремя векторами движения контрольной точки (CPMV), которые соответствуют аффинной модели движения с четырьмя параметрами и аффинной модели движения с шестью параметрами соответственно. Положения CPMV для аффинной модели движения с 4 параметрами изображены на рис. 6a, а положения CPMV для аффинной модели движения с 6 параметрами изображены на рис. 6b.In the real world, there are many types of motion, such as zoom in/out, rotation, perspective motion, translational motion, and other irregular motions. In HEVC (ITU-T H.265), only the displacement motion model is used for motion compensation prediction (MCP). VVC uses motion compensation prediction with affine transformation. The affine motion field of a block is described by two or three control point motion vectors (CPMVs), which correspond to a four-parameter affine motion model and a six-parameter affine motion model, respectively. The CPMV positions for the 4-parameter affine motion model are depicted in Fig. 6a, and the CPMV positions for the affine motion model with 6 parameters are depicted in Fig. 6b.

В случае модели движения с 4 параметрами поле вектора движения (MVF) блока описывается следующим уравнением:In the case of a 4-parameter motion model, the motion vector field (MVF) of a block is described by the following equation:

(1) (1)

Где (v0x, v0y) - вектор движения контрольной точки верхнего левого угла, а (v1x, v1y) - вектор движения контрольной точки верхнего правого угла. (vx, vy) - вектор движения в заданном местоположении (x, y) в блоке. Проверка издержек искажения скорости (RDC) используется для определения какая пара векторов движения выбрана в качестве векторов движения контрольной точки текущего CU.Where (v 0x , v 0y ) is the movement vector of the control point of the upper left corner, and (v 1x , v 1y ) is the movement vector of the control point of the upper right corner. (v x , v y ) is the motion vector at a given location (x, y) in the block. The Rate Distortion Overhead (RDC) check is used to determine which pair of motion vectors is selected as the reference point motion vectors of the current CU.

CPMV могут быть выведены на основе информации движении соседних блоков (например, в процессе режима слияния субблоков). Альтернативно или дополнительно, CPMV могут быть получены путем выведения предикторов CPMV (CPMVP) и получения разницы между CPMV и CPMVP из потока битов.CPMVs can be inferred based on the movement information of neighboring blocks (for example, during the subblock merging mode). Alternatively or additionally, CPMVs can be obtained by deriving CPMV predictors (CPMVPs) and obtaining the difference between CPMVs and CPMVPs from the bitstream.

Чтобы упростить предсказание компенсации движения, применяется аффинное предсказание преобразования на основе блоков. Например, чтобы вывести вектор движения каждого субблока 4 × 4, вектор движения центральной выборки каждого субблока, как показано на фиг.7, вычисляется согласно приведенному выше уравнению (1) и округляется с точностью до 1/16 доли. Фильтры интерполяции компенсации движения применяются для генерации предсказания каждого субблока с выведенным вектором движения.To simplify motion compensation prediction, block-based affine transformation prediction is applied. For example, to output the motion vector of each 4 × 4 sub-block, the motion vector of the center sample of each sub-block as shown in FIG. 7 is calculated according to the above equation (1) and rounded to the nearest 1/16th. Motion compensation interpolation filters are applied to generate a prediction of each sub-block with the derived motion vector.

После предсказания компенсации движения (MCP) вектор движения с более высокой точностью для каждого субблока округляется и сохраняется с той же точностью, что и нормальный вектор движения, с точностью ¼.After motion compensation prediction (MCP), the higher precision motion vector for each sub-block is rounded and stored with the same precision as the normal motion vector, with ¼ precision.

Фиг. 8 показывает пример блок-схемы, изображающей процесс 800 для аффинного внешнего предсказания (то есть компенсации движения с использованием аффинной модели движения). Процесс 800 может включать в себя следующие этапы:Fig. 8 shows an example flowchart depicting a process 800 for affine inter-prediction (ie, motion compensation using an affine motion model). Process 800 may include the following steps:

На этапе 810 выполняется вывод вектора движения контрольной точки для генерации векторов движения контрольной точки cpMvLX [cpIdx];At step 810, a reference point motion vector is output to generate reference point motion vectors cpMvLX [cpIdx];

На этапе 830 выполняется вывод массива векторов движения для создания массива mvLX [xSbIdx] [ySbIdx] векторов движения субблоков яркости и массива mvCLX [xSbIdx] [ySbIdx] векторов движения субблоков цветности. Этап 830 может включать в себя:At step 830, an array of motion vectors is output to create an array mvLX[xSbIdx][ySbIdx] of luma subblock motion vectors and an array mvCLX[xSbIdx][ySbIdx] of chroma subblock motion vectors. Step 830 may include:

Этап 831, где выполняется вывод массива векторов движения яркости, чтобы сгенерировать массив mvLX [xSbIdx] [ySbIdx] векторов движения субблока яркости;Step 831, where luminance motion vector array is output to generate luminance subblock motion vector array mvLX[xSbIdx][ySbIdx];

Этап 833, где выполняется вывод массива векторов движения цветности для генерации массива mvCLX [xSbIdx] [ySbIdx] векторов движения субблока цветности;Step 833, where an array of chroma motion vectors is output to generate an array mvCLX [xSbIdx] [ySbIdx] of chroma subblock motion vectors;

На этапе 850 выполняется процесс интерполяции, чтобы сгенерировать предсказание каждого субблока с выведенным вектором движения, то есть массив predSamples выборок предсказания.At step 850, an interpolation process is performed to generate a prediction of each subblock with the derived motion vector, that is, an array of predSamples of prediction samples.

Представленные здесь варианты осуществления в основном сосредоточены на этапе 833 для вывода массива векторов движения цветности (этот блок выделен жирным шрифтом на фиг.8).The embodiments presented here primarily focus on step 833 for outputting an array of chroma motion vectors (this block is highlighted in bold in FIG. 8).

Детали процесса выведения вектора движения цветности в предыдущем исполнении (традиционным способом) описываются следующим образом:The details of the chroma motion vector derivation process in the previous design (traditional way) are described as follows:

Входные данные для этого процесса (вывод массива векторов движения цветности) включают в себя:The inputs to this process (output of an array of chroma motion vectors) include:

массив mvLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 векторов движения субблока яркости и X равным 0 или 1array mvLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 of luminance subblock motion vectors and X equal to 0 or 1

Коэффициент дискретизации цветности по горизонтали, SubWidthCHorizontal chroma sampling factor, SubWidthC

Коэффициент дискретизации цветности по вертикали, SubHeightCVertical chroma sampling factor, SubHeightC

Выходные данные:Output:

массив mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 векторов движения субблока цветности и X равным 0 или 1.array mvCLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 chroma subblock motion vectors and X equal to 0 or 1.

Этот процесс реализован следующим образом:This process is implemented as follows:

Средний вектор mvAvgLX движения яркости выводится следующим образом:The average luminance motion vector mvAvgLX is derived as follows:

mvAvgLX = mvLX[ ( xSbIdx >> 1 << 1) ][ (ySbIdx>>1<<1) ] + mvAvgLX = mvLX[ ( xSbIdx >> 1 << 1) ][ (ySbIdx>>1<<1) ] +

mvLX[ ( xSbIdx >> 1 << 1 ) + 1 ][ (ySbIdx>>1<<1) + 1 ] (2)mvLX[ ( xSbIdx >> 1 << 1 ) + 1 ][ (ySbIdx>>1<<1) + 1 ] (2)

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :

- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) ) (3)- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) ) (3)

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 : mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :

- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) ) (4)- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) ) (4)

- - Масштабирование mvAvgLX в соответствии со значением refIdxLX опорного индекса. Конкретно,- - Scaling mvAvgLX according to the refIdxLX value of the reference index. Specifically,

Если опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, не является текущей картинкой, применяется следующее:If the reference picture corresponding to refIdxLX for the current encoding unit is not the current picture, the following applies:

mvCLX [0] = mvLX [0] * 2/SubWidthCmvCLX[0] = mvLX[0] * 2/SubWidthC

mvCLX [1] = mvLX [1] * 2/SubHeightCmvCLX[1] = mvLX[1] * 2/SubHeightC

В противном случае (опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, является текущей картинкой), применяется следующее:Otherwise (the reference picture corresponding to refIdxLX for the current encoding unit is the current picture), the following applies:

mvCLX [0] = ((mvLX [0] &gt;&gt; (3+SubWidthC)) * 32mvCLX [0] = ((mvLX [0] &gt;&gt; (3+SubWidthC)) * 32

mvCLX [1] = ((mvLX [1] &gt;&gt; (3+SubHeightC)) * 32mvCLX [1] = ((mvLX [1] &gt;&gt; (3+SubHeightC)) * 32

В приведенной выше схеме при вычислении mvAvgLX не учитывается подвыборка цветности. Это приводит к неточной оценке поля движения для случаев, когда одна из переменных SubWidthC и SubHeightC равна 1.In the above scheme, the chroma subsampling is not taken into account when calculating mvAvgLX. This leads to an inaccurate estimate of the motion field for cases where one of the variables SubWidthC and SubHeightC is equal to 1.

Варианты осуществления настоящего изобретения решают эту проблему путем подвыборки поля движения яркости на основе формата цветности картинки, тем самым повышая точность поля движения цветности. Более конкретно, варианты осуществления настоящего изобретения раскрывают способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Выбор векторов движения яркости на основе формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости. Как следствие более точной интерполяции поля движения, ошибка прогнозирования уменьшается, что дает технический результат повышения эффективности сжатия.Embodiments of the present invention solve this problem by subsampling the luminance motion field based on the chroma format of the picture, thereby improving the accuracy of the chroma motion field. More specifically, embodiments of the present invention disclose a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the luminance motion vectors, a linear subsampling of the luminance motion field is performed. Selecting luminance motion vectors based on the picture's chroma format results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chroma format allows the selection of the most appropriate luminance blocks when averaging the luminance motion vectors. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which gives the technical result of increasing compression efficiency.

В одной примерной реализации таблица 1-1 показывает форматы цветности, которые могут поддерживаться в настоящем раскрытии. Информация формата цветности, такая как chroma_format_idc и/или own_colour_plane_flag, может использоваться для определения значений переменных SubWidthC и SubHeightC.In one exemplary implementation, Table 1-1 shows the chrominance formats that may be supported in the present disclosure. Chroma format information, such as chroma_format_idc and/or own_colour_plane_flag, can be used to determine the values of the SubWidthC and SubHeightC variables.

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

Таблица 1-1.Table 1-1.

chroma_format_idc определяет выборку цветности относительно выборки яркости. Значение chroma_format_idc должно быть в диапазоне от 0 до 3 включительно.chroma_format_idc specifies the chroma sample relative to the luma sample. The chroma_format_idc value must be in the range 0 to 3 inclusive.

separate_colour_plane_flag, равный 1, указывает, что три цветовых компоненты формата цветности 4: 4: 4 кодируются отдельно. separate_colour_plane_flag, равный 0, указывает, что компоненты цвета не кодируются отдельно. Когда separate_colour_plane_flag отсутствует, предполагается, что он равен 0. Когда separate_colour_plane_flag равен 1, кодированная картинка состоит из трех отдельных компонент, каждая из которых состоит из кодированных выборок одной цветовой плоскости (Y, Cb или Cr) и использует синтаксис монохромного кодирования.separate_colour_plane_flag equal to 1 indicates that the three color components of the 4:4:4 chroma format are encoded separately. separate_colour_plane_flag equal to 0 indicates that color components are not encoded separately. When separate_colour_plane_flag is absent, it is assumed to be 0. When separate_colour_plane_flag is 1, the encoded picture consists of three separate components, each consisting of encoded samples of a single color plane (Y, Cb, or Cr) and using monochrome encoding syntax.

Chroma format (Формат цветности) определяет приоритет и субдискретизацию массивов цветности;Chroma format determines the priority and subsampling of chroma arrays;

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

При выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости, как показано на рис. 9А.With 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the lumina array, as shown in Figure 1. 9A.

При выборке 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту и половину ширины массива яркости, как показано на рис. 9B.With 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the lumina array, as shown in Fig. 9B.

При выборке 4:4:4, в зависимости от значения own_colour_plane_flag, применяется следующее:When sampling 4:4:4, depending on the value of own_colour_plane_flag, the following applies:

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

-- В противном случае (separate_colour_plane_flag равен 1) три цветовые плоскости обрабатываются отдельно как монохромные дискретизированные картинки.-- Otherwise (separate_colour_plane_flag is 1), the three color planes are treated separately as monochrome sampled pictures.

В других примерных реализациях Таблица 1-2 также показывает форматы цветности, которые могут поддерживаться в настоящем раскрытии. Информация формата цветности, такая как chroma_format_idc и/или own_colour_plane_flag, может использоваться для определения значений переменных SubWidthC и SubHeightC.In other example implementations, Table 1-2 also shows the chroma formats that may be supported in the present disclosure. Chroma format information, such as chroma_format_idc and/or own_colour_plane_flag, can be used to determine the values of the SubWidthC and SubHeightC variables.

chroma_format_idcchroma_format_idc separate_colour_plane_flagseparate_colour_plane_flag Формат цветностиColor Format SubWidthCSubWidthC SubHeightCSubHeightC 2(0)2(0) 00 4:2:24:2:2 22 11 3(1)3(1) 00 4:4:44:4:4 11 11 3(1)3(1) 11 4:4:44:4:4 11 11

Таблица 1-2.Table 1-2.

Количество битов, необходимых для представления каждой из выборок в массивах яркости и цветности в видеопоследовательности, находится в диапазоне от 8 до 16 включительно, а количество битов, используемых в массиве яркости, может отличаться от количества битов, используемых в массивах цветности.The number of bits required to represent each of the samples in the luma and chrominance arrays in a video sequence ranges from 8 to 16, inclusive, and the number of bits used in the luma array may differ from the number of bits used in the chrominance arrays.

Когда значение chroma_format_idc равно 1, номинальные вертикальные и горизонтальные относительные местоположения выборок яркости и цветности в картинках показаны на фиг. 9A. Альтернативные относительные местоположения выборок цветности могут быть указаны в информации о пригодности видео.When the value of chroma_format_idc is 1, the nominal vertical and horizontal relative locations of luma and chrominance samples in pictures are shown in FIG. 9A. Alternative relative locations of the chroma samples may be specified in the video availability information.

Когда значение chroma_format_idc равно 2, выборки цветности совмещаются с соответствующими выборками яркости, а номинальные местоположения в картинке такие, как показано на фиг. 9B.When the value of chroma_format_idc is 2, the chroma samples are combined with the corresponding luma samples, and the nominal locations in the picture are as shown in FIG. 9B.

Когда значение chroma_format_idc равно 3, все выборки массива совмещаются для всех случаев картинок, а номинальные местоположения в картинке такие, как показано на фиг. 9C.When the value of chroma_format_idc is 3, all array samples are combined for all picture cases, and the nominal locations in the picture are as shown in FIG. 9C.

В одной примерной реализации переменные SubWidthC и SubHeightC указаны в таблице 1-1 или 1-2, в зависимости от структуры выборки формата цветности, которая задается через chroma_format_idc и own_colour_plane_flag. Можно понять, что информация формата цветности, такая как структура выборки формата цветности, указывается через chroma_format_idc и own_colour_plane_flag.In one example implementation, the SubWidthC and SubHeightC variables are listed in Table 1-1 or 1-2, depending on the chroma format sampling structure, which is specified via chroma_format_idc and own_colour_plane_flag. It can be understood that chroma format information such as a chroma format sampling structure is indicated through chroma_format_idc and own_colour_plane_flag.

В отличие от предыдущего исполнения, в настоящем раскрытии изобретения определение позиций в массиве векторов движения субблока яркости может применяться для различных форматов цветности и зависит от значения коэффициента масштабирования цветности (например, SubWidthC и SubHeightC). Следует понимать, что «коэффициент масштабирования цветности в горизонтальном и вертикальном направлениях» также может упоминаться как «коэффициент дискретизации цветности в горизонтальном и вертикальном направлениях».Unlike the previous embodiment, in the present disclosure, the determination of positions in the motion vector array of the luminance subblock can be applied to different chroma formats and depends on the value of the chroma scaling factor (eg, SubWidthC and SubHeightC). It should be understood that the “horizontal and vertical direction chroma scaling factor” may also be referred to as the “horizontal and vertical direction chroma sampling factor”.

В качестве альтернативы, в другой примерной реализации SubWidthC и SubHeightC могут быть определены как SubWidthC = (1 + log2(wluma)-log2(wchroma)) and SubHeightC = (1 + log2(hluma)-log2(hchroma)), где wluma и hluma - ширина и высота массива яркости соответственно, а wchroma и hchroma - ширина и высота массива цветности соответственно.Alternatively, in another example implementation, SubWidthC and SubHeightC could be defined as SubWidthC = (1 + log2(wluma)-log2(wchroma)) and SubHeightC = (1 + log2(hluma)-log2(hchroma)), where wluma And hluma are the width and height of the brightness array, respectively, and wchroma And hchroma- width and the height of the chroma array, respectively.

В возможных реализациях некоторых вариантов осуществления настоящего раскрытия для заданного формата цветности процесс определения позиций или индексов в массиве вектора движения яркости для данного индекса совместно расположенного субблока цветности может выполняться следующим образом:In possible implementations of some embodiments of the present disclosure, for a given chroma format, the process of determining positions or indices in the luminance motion vector array for a given index of a co-located chroma subblock may be performed as follows:

Вначале значения SubWidthC и SubHeightC определяются на основе формата цветности в настоящий момент кодируемой или декодируемой картинки (или кадра).First, the values of SubWidthC and SubHeightC are determined based on the chromaticity format of the currently encoded or decoded picture (or frame).

Затем для каждой из пространственных позиций цветности, указанных индексами xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X, равным 0 или 1, значение вектора движения цветности сохраняется как соответствующий элемент mvCLX. Этапы для определения вектора движения цветности следующие:Then, for each of the spatial chroma positions indicated by the indices xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 and X equal to 0 or 1, the chroma motion vector value is stored as a corresponding mvCLX element. The steps to determine the chroma motion vector are as follows:

Первый этап - выполнить округление, чтобы определить индексы x и y совместно расположенного субблока яркости:The first step is to perform a rounding to determine the x and y indices of the co-located luminance subblock:

xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);xSbIdx L = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);

ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).ySbIdx L = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).

Второй этап - определить набор позиций субблока яркости, которые дополнительно определяют вектор движения цветности. Возможный пример определения такого набора S может быть описан ниже:The second step is to define a set of luma subblock positions that further define the chrominance motion vector. A possible example of defining such a set S can be described below:

S0 = (xSbIdxL, ySbIdxL)S0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1))S1 = (xSbIdxL + (SubWidthC- 1), ySbIdxL + (SubHeightC-1))

Третий этап - вычислить средний вектор mvAvgLX:The third step is to calculate the average vector mvAvgLX:

Когда набор S содержит N элементов, N является степенью двойки, в одной примерной реализации вектор движения mvAvgLX определяется следующим образом:When a set S contains N elements, N is a power of two, in one example implementation the motion vector mvAvgLX is defined as follows:

- mvAvgLX = - mvAvgLX =

- mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)- mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)

- mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N)- mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N)

где и координаты x и y позиции Si.Where And x and y coordinates of position S i .

Подводя итог, в одной примерной реализации определение среднего вектора mvAvgLX для усреднения можно сформулировать следующим образом:To summarize, in one example implementation, the definition of the mean vector mvAvgLX for averaging can be formulated as follows:

mvAvgLX = mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvAvgLX = mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]

[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]+[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]+

mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1)]mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1)]

[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)] (уравнение 1)[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)] (Equation 1)

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N) (уравнение 2)mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N) (Equation 2)

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N) (уравнение 3)mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N) (Equation 3)

Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована в различных реализациях.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in various implementations.

Следует понимать, что, хотя вышеописанный процесс описывается как трехэтапный процесс, определение среднего вектора mvAvgLX, как сформулировано выше в уравнении 1- 3 могут выполняться в любом порядке.It should be understood that although the above process is described as a three-step process, the determination of the average vector mvAvgLX as stated above in Equation 1-3 can be performed in any order.

В другой примерной реализации третий этап также может быть реализован следующим образом:In another exemplary implementation, the third step could also be implemented as follows:

mvAvgLX = mvAvgLX =

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + N>>1) >> log2(N) :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + N>>1) >> log2(N) :

- ( (- mvAvgLX[ 0 ] + N>>1 ) >> log2(N) ) (5)- ( (- mvAvgLX[ 0 ] + N>>1 ) >> log2(N) ) (5)

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + N>>1) >> log2(N) : mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + N>>1) >> log2(N) :

- ( (- mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ) ) (6)- ( (- mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ) ) (6)

где и координаты x и y позиции Si.Where And x and y coordinates of position S i .

Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована в различных реализациях.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in various implementations.

Следующим этапом является масштабирование mvAvgLX в соответствии со значением опорного индекса refIdxLX. В некоторых примерах процесс масштабирования выполняется следующим образом путем замены mvLX на mvAvgLX (т.е. mvLX [0] будет заменен на mvAvgLX [0], а mvLX [1] будет заменен на mvAvgLX [1]):The next step is to scale mvAvgLX according to the reference index value refIdxLX. In some examples, the scaling process is performed as follows by replacing mvLX with mvAvgLX (i.e. mvLX[0] will be replaced with mvAvgLX[0], and mvLX[1] will be replaced with mvAvgLX[1]):

Если опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, не является текущей картинкой, применяется следующее:If the reference picture corresponding to refIdxLX for the current encoding unit is not the current picture, the following applies:

mvCLX [0] = mvLX [0] * 2/SubWidthCmvCLX[0] = mvLX[0] * 2/SubWidthC

mvCLX [1] = mvLX [1] * 2/SubHeightCmvCLX[1] = mvLX[1] * 2/SubHeightC

В противном случае (опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, является текущей картинкой), применяется следующее:Otherwise (the reference picture corresponding to refIdxLX for the current encoding unit is the current picture), the following applies:

mvCLX[0]=((mvLX[0]>>(3 + SubWidthC ) ) * 32mvCLX[0]=((mvLX[0]>>(3 + SubWidthC ) ) * 32

mvCLX[1]=((mvLX[1]>>(3 + SubHeightC ) ) * 32mvCLX[1]=((mvLX[1]>>(3 + SubHeightC ) ) * 32

Аналогичным образом, процесс вывода векторов движения цветности в пункте 8.5.2.13, описанный ниже, может быть вызван с mvAvgLX и refIdxLX в качестве входных данных и с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных. В процессе, описанном в пункте 8.5.2.13, mvLX будет заменен на mvAvgLX, и, в частности, mvLX [0] будет заменен на mvAvgLX [0], а mvLX [1] будет заменен на mvAvgLX [1].Similarly, the chroma motion vector inference process in clause 8.5.2.13 described below can be called with mvAvgLX and refIdxLX as input and with the chroma motion vector array mvCLXSub[xCSbIdx][yCSbIdx] as output. In the process described in clause 8.5.2.13, mvLX will be replaced by mvAvgLX, and in particular, mvLX[0] will be replaced by mvAvgLX[0], and mvLX[1] will be replaced by mvAvgLX[1].

Подробности возможных реализаций вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа описаны ниже в формате модификации спецификации проекта VVC. Есть несколько вариантов этого процесса.Details of possible implementations of calculating the average vector mvAvgLX in the process of deriving the chroma motion vector of the proposed method are described below in the format of a modification of the VVC project specification. There are several variations of this process.

1. Один из вариантов вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC :1. One of the options for calculating the average vector mvAvgLX in the process of outputting the chroma motion vector of the proposed method can be described as follows in the format of a modification of the VVC project specification:

...

Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:

mvAvgLX =mvAvgLX =

mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]

[ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] + [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] +

mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + ( 1 >> ( 2 - SubWidthC))]mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + ( 1 >> ( 2 - SubWidthC))]

[ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1) ) + (1 >> (2 - SubHeightC))] [ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1) ) + (1 >> (2 - SubHeightC))]

Пояснительные примечания: Вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]. Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (2 - SubWidthC))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + (1 >> (2 - SubHeightC))]). Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов SubWidthC и SubHeightC масштабирования цветности, которые определяются на основе формата цветности картинки // Explanatory Notes: The above equation shows an example of selecting luma motion vectors to calculate the average motion vector (eg, selecting luma subblock positions for a given chrominance subblock position). The selected luma subblocks (and hence their corresponding positions) are represented by their corresponding subblock indices in the horizontal and vertical directions. For example, as shown above, for a given chrominance subblock (xSbIdx, ySbIdx), where xSbIdx and ySbIdx are the subblock indices for the chrominance subblock in the horizontal and vertical directions, respectively, the two luma subblocks (and hence their respective positions, e.g. their respective subblock indices) can be selected. One of the two selected luma subblocks can be represented by a subblock index in the horizontal direction as [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] and a subblock index in the vertical direction as [(ySbIdx >> (SubHeightC - 1) ) << (SubHeightC - 1))]. Another selected luma subblock can be represented by a subblock index in the horizontal direction as [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (2 - SubWidthC))] and a subblock index in the vertical direction as [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + (1 >> (2 - SubHeightC))]). Accordingly, the choice of brightness blocks for averaging brightness motion vectors depends on the color format of the picture. In particular, the choice of luminance blocks for averaging luminance motion vectors depends on the chrominance scaling coefficients SubWidthC and SubHeightC, which are determined based on the chrominance format of the picture //

Полученный выше mvAvgLX может быть дополнительно обработан:The mvAvgLX obtained above can be further processed:

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :

- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :

- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )

Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in different ways.

-- Процесс вывода векторов движения цветности в пункте 8.5.2.13, представленный далее в этом раскрытии, вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.-- The chroma motion vector inference process in clause 8.5.2.13, presented later in this disclosure, is called with mvAvgLX and refIdxLX as input and the chroma motion vector mvCLX [xSbIdx] [ySbIdx] as output.

...

2. Другой вариант вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC:2. Another option for calculating the average vector mvAvgLX in the process of chroma motion vector output of the proposed method can be described as follows in the format of a modification of the VVC project specification:

...

Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:

mvAvgLX =mvAvgLX =

mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]

[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] + [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] +

mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (4 - SubWidthC - SubHeightC))]mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (4 - SubWidthC - SubHeightC))]

[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + ( 1 >> (4 - SubWidthC - SubHeightC))][(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + ( 1 >> (4 - SubWidthC - SubHeightC))]

// Пояснительные примечания: вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) ] и индексом субблока в вертикальном направлении как [( ySbIdx >> (SubHeightC 1) << (SubHeightC 1) ) ]. Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC) )] и индекс субблока в вертикальном направлении как [( ySbIdx >> (SubHeightC 1) << (SubHeightC - 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC ) )]) . Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов масштабирования цветности SubWidthC и SubHeightC, которые определяются на основе формата цветности картинки //// Explanatory Notes: The above equation shows an example of selecting luma motion vectors to calculate the average motion vector (eg, selecting luma subblock positions for a given chrominance subblock position). The selected luma subblocks (and hence their corresponding positions) are represented by their corresponding subblock indices in the horizontal and vertical directions. For example, as shown above, for a given chrominance subblock (xSbIdx, ySbIdx), where xSbIdx and ySbIdx are the subblock indices for the chrominance subblock in the horizontal and vertical directions, respectively, the two luma subblocks (and hence their respective positions, e.g. their respective subblock indices) can be selected. One of the two selected luma subblocks can be represented by a subblock index in the horizontal direction as [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) ] and a subblock index in the vertical direction as [( ySbIdx >> (SubHeightC 1) << (SubHeightC 1) )]. Another selected luma subblock can be represented by the subblock index in the horizontal direction as [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC) )] and the subblock index in the vertical direction as [( ySbIdx >> (SubHeightC 1) << (SubHeightC - 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC ) )]) . Accordingly, the choice of brightness blocks for averaging brightness motion vectors depends on the color format of the picture. In particular, the choice of luminance blocks for averaging luminance motion vectors depends on the chromaticity scaling factors SubWidthC and SubHeightC, which are determined based on the chromaticity format of the picture //

По сравнению с первым вариантом в этом варианте используются разные способы определения набора субблоков яркости. В частности, 1 >> ( 4 - SubWidthC - SubHeightC) используется для определения индекса второго субблока яркости (соседнего субблока яркости для первого субблока яркости) в этом варианте, тогда как 1 >> ( 2 - SubWidthC ) и 1 >> ( 2 - SubHeightC ) используются в первом варианте. В первом варианте сам первый субблок яркости, его диагональный сосед или его горизонтальный сосед могут использоваться в качестве второго субблока. Во втором варианте либо сам первый субблок яркости, либо его диагональный сосед может использоваться в качестве второго субблока яркости в зависимости от значений коэффициента масштабирования цветности.Compared to the first embodiment, this embodiment uses different methods to determine the set of luminance subblocks. Specifically, 1 >> ( 4 - SubWidthC - SubHeightC ) is used to determine the index of the second luminance subblock (the adjacent luminance subblock to the first luminance subblock) in this embodiment, whereas 1 >> ( 2 - SubWidthC ) and 1 >> ( 2 - SubHeightC ) are used in the first option. In a first embodiment, the first luminance subblock itself, its diagonal neighbor, or its horizontal neighbor may be used as the second subblock. In the second embodiment, either the first luma subblock itself or its diagonal neighbor can be used as the second luma subblock depending on the chroma scaling factor values.

Полученный выше mvAvgLX может быть дополнительно обработан:The mvAvgLX obtained above can be further processed:

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :

- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :

- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )

- Процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.- The chroma motion vector inference process in clause 8.5.2.13 is called with mvAvgLX and refIdxLX as inputs and the chroma motion vector mvCLX [xSbIdx] [ySbIdx] as output.

...

Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in different ways.

3. Другой вариант процесса вывода вектора движения цветности предложенного способа можно описать следующим образом в формате модификации спецификации проекта VVC:3. Another version of the chroma motion vector output process of the proposed method can be described as follows in the format of a modification of the VVC project specification:

...

Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:

mvAvgLX = mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvAvgLX = mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]

[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))][(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]

-- Процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.-- The chroma motion vector inference process in clause 8.5.2.13 is called with mvAvgLX and refIdxLX as input and the chroma motion vector mvCLX [xSbIdx] [ySbIdx] as output.

...

4. Другой вариант процесса вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC:4. Another variant of the chroma motion vector inference process of the proposed method can be described as follows in the format of a modification of the VVC design specification:

...

Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:

Если SubWidthC == 1 и SubHeightC == 1:If SubWidthC == 1 and SubHeightC == 1:

mvAvgLX=mvLX [xSbIdx] [ySbIdx]mvAvgLX=mvLX [xSbIdx] [ySbIdx]

иначеotherwise

xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);

ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).

mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL+(SubHeightC-1)]mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL+(SubHeightC-1)]

// Пояснительные примечания: вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]; Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC - 1 ) << ( SubWidthC - 1) ) + ( SubWidthC - 1 )] и индексом субблока в вертикальном направлении как [( ySbIdx >> ( SubHeightC - 1 ) << ( SubHeightC - 1 ) ) + ( SubHeightC - 1 )]). Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов SubWidthC и SubHeightC масштабирования цветности, которые определяются на основе формата цветности картинки //// Explanatory Notes: The above equation shows an example of selecting luma motion vectors to calculate the average motion vector (eg, selecting luma subblock positions for a given chrominance subblock position). The selected luma subblocks (and hence their corresponding positions) are represented by their corresponding subblock indices in the horizontal and vertical directions. For example, as shown above, for a given chrominance subblock (xSbIdx, ySbIdx), where xSbIdx and ySbIdx are the subblock indices for the chrominance subblock in the horizontal and vertical directions, respectively, the two luma subblocks (and hence their respective positions, e.g. their respective subblock indices) can be selected. One of the two selected luma subblocks can be represented by a subblock index in the horizontal direction as [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] and a subblock index in the vertical direction as [(ySbIdx >> (SubHeightC - 1) ) << (SubHeightC - 1))]; Another selected luminance subblock can be represented by a subblock index in the horizontal direction as [( xSbIdx >> (SubWidthC - 1 ) << ( SubWidthC - 1 ) ) + ( SubWidthC - 1 )] and a subblock index in the vertical direction as [( ySbIdx >> ( SubHeightC - 1 ) << ( SubHeightC - 1 ) ) + ( SubHeightC - 1 )]). Accordingly, the choice of brightness blocks for averaging brightness motion vectors depends on the color format of the picture. In particular, the choice of luminance blocks for averaging luminance motion vectors depends on the chrominance scaling coefficients SubWidthC and SubHeightC, which are determined based on the chrominance format of the picture //

Полученный выше mvAvgLX может быть дополнительно обработан:The mvAvgLX obtained above can be further processed:

mvAvgLX[0] = mvAvgLX[0]>=0 ? mvAvgLX[0] >> 1 : -(( -mvAvgLX[0]) >> 1)mvAvgLX[0] = mvAvgLX[0]>=0 ? mvAvgLX[0] >> 1 : -(( -mvAvgLX[0]) >> 1)

mvAvgLX[1] = mvAvgLX[1]>= 0 ? mvAvgLX[1] >> 1 : -(( -mvAvgLX[1]) >> 1)mvAvgLX[1] = mvAvgLX[1]>= 0 ? mvAvgLX[1] >> 1 : -(( -mvAvgLX[1]) >> 1)

Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in different ways.

Детали определения позиций субблока яркости, которые дополнительно используются при определении вектора движения цветности для различных форматов цветности, будут объяснены в комбинации с фиг.10A-10C и фигурами 11A-11C, как показано ниже.Details of determining luma subblock positions, which are further used in determining the chroma motion vector for various chroma formats, will be explained in combination with FIGS. 10A-10C and FIGS. 11A-11C as shown below.

Фиг. 10A показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки (например, блок кодирования) текущей картинки, где формат цветности текущей картинки составляет 4: 2: 0. Как показано на фиг. 10A и в таблице 1-1, когда формат цветности текущей картинки составляет 4: 2: 0, SubWidthC=2 и SubHeightC=2. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит в четыре раза больше выборок соответствующего блока цветности.Fig. 10A shows an example illustrating combined luma and chrominance blocks that are included in a current picture block (eg, an encoding block) of the current picture, where the chrominance format of the current picture is 4:2:0. As shown in FIG. 10A and Table 1-1 when the chroma format of the current picture is 4:2:0, SubWidthC=2 and SubHeightC=2. If the width of a luma block is W and the height of a luma block is H, the width of the corresponding chroma block is W/SubWidthC and the height of the corresponding chroma block is H/SubHeightC. In particular, for a block of the current picture containing combined luma and chrominance blocks, the luma block typically contains four times as many samples of the corresponding chrominance block.

Фиг. 10В - пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки для текущей картинки, где формат цветности текущей картинки составляет 4: 2: 2. Как показано на фиг. 10B и в таблице 1-1 или 1-2, когда формат цветности текущей картинки составляет 4: 2: 2, SubWidthC=2 и SubHeightC=1. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит в два раза больше выборок соответствующего блока цветности.Fig. 10B is an example illustrating combined luma and chrominance blocks that are included in a current picture block for a current picture where the chroma format of the current picture is 4:2:2. As shown in FIG. 10B and in Table 1-1 or 1-2 when the chroma format of the current picture is 4:2:2, SubWidthC=2 and SubHeightC=1. If the width of a luma block is W and the height of a luma block is H, the width of the corresponding chroma block is W/SubWidthC and the height of the corresponding chroma block is H/SubHeightC. In particular, for a block of the current picture containing combined luma and chrominance blocks, the luma block typically contains twice as many samples of the corresponding chrominance block.

Фиг. 10C - пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки для текущей картинки, где формат цветности текущей картинки составляет 4: 4: 4. Как показано на фиг. 10C и в таблице 1-1 или 1-2, когда формат цветности текущей картинки составляет 4: 2: 2, SubWidthC=1 и SubHeightC=1. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит такое же количество выборок соответствующего блока цветности.Fig. 10C is an example illustrating combined luma and chrominance blocks that are included in a current picture block for a current picture where the chrominance format of the current picture is 4:4:4. As shown in FIG. 10C and in Table 1-1 or 1-2, when the chromaticity format of the current picture is 4: 2: 2, SubWidthC=1 and SubHeightC=1. If the width of a luma block is W and the height of a luma block is H, the width of the corresponding chroma block is W/SubWidthC and the height of the corresponding chroma block is H/SubHeightC. In particular, for a block of the current picture containing combined luma and chrominance blocks, the luma block typically contains the same number of samples of the corresponding chrominance block.

Фиг. 11A - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки равен 4: 2: 0, как показано на фиг. 10А. Fig. 11A is an example illustrating the positions of two luminance subblocks for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:0, as shown in FIG. 10A.

Индексы x и y совместно расположенного субблока яркости определяются с использованием соответствующих индексов x и y субблока цветности (обозначаемых как xSbIdx, ySbIdx):The x and y indices of a co-located luma subblock are determined using the corresponding x and y indices of the chrominance subblock (denoted xSbIdx, ySbIdx):

xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);xSbIdx L = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);

ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).ySbIdx L = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).

Два аффинных субблока яркости выбираются для дополнительного усреднения их векторов движения. Позиции этих двух субблоков определяются как:Two luminance affine subblocks are selected to further average their motion vectors. The positions of these two subblocks are defined as:

(xSbIdxL, ySbIdxL) и(xSbIdxL, ySbIdxL) and

(xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).(xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).

Как показано на фиг. 11A, в случае формата YUV 4: 2: 0, векторы движения двух субблоков яркости блока 1010 яркости (размер яркости 8×8) по диагонали используются для усреднения, а усредненное MV используется для аффинного процесса выведения вектора движения субблока для субблока цветности. В частности,As shown in FIG. 11A, in the case of YUV 4:2:0 format, the motion vectors of the two luminance subblocks of the luminance block 1010 (luminance size 8x8) diagonally are used for averaging, and the averaged MV is used for the affine process of deriving the subblock motion vector for the chrominance subblock. In particular,

Индекс субблока яркости или субблока цветности 0: xSbIdx=0, ySbIdx=0Index of luma subblock or chrominance subblock 0: xSbIdx=0, ySbIdx=0

Индекс субблока яркости или субблока цветности 1: xSbIdx=1, ySbIdx=0Index of luma subblock or chrominance subblock 1: xSbIdx=1, ySbIdx=0

Индекс субблока яркости или субблока цветности 2: xSbIdx=0, ySbIdx=1Index of luma subblock or chrominance subblock 2: xSbIdx=0, ySbIdx=1

Индекс субблока яркости или субблока цветности 3: xSbIdx=1, ySbIdx=1;Index of luma subblock or chrominance subblock 3: xSbIdx=1, ySbIdx=1;

Следуя варианту 4 исполнения, вектор движения каждого сублока цветности выводится на основе усредненного значения, и усредненное значение получается на основе вектора движения сублока 0 яркости (mvLX [0] [0]) и сублока 3 яркости ( mvLX [1] [1]), которые являются диагональными.Following embodiment 4, the motion vector of each chroma sub-block is output based on the average value, and the average value is obtained based on the motion vector of luminance sub-block 0 (mvLX[0][0]) and luminance sub-block 3 (mvLX[1][1]), which are diagonal.

Фиг. 11В - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4: 2: 2, как показано на фиг. 10B; Как показано на фиг. 11B, в случае формата YUV 4: 2: 2, векторы движения двух смежных по горизонтали субблоков яркости блока 1010 яркости (размер яркости 8×8) используются для усреднения, а усредненное MV используется для аффинного процесса выведения векторов движения субблока для субблока цветности. В частности,Fig. 11B is an example illustrating the positions of two luminance subblocks for a given chrominance subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:2, as shown in FIG. 10B; As shown in FIG. 11B, in the case of YUV 4:2:2 format, the motion vectors of two horizontally adjacent luminance subblocks of the luminance block 1010 (luminance size 8x8) are used for averaging, and the averaged MV is used for the affine process of deriving subblock motion vectors for the chrominance subblock. In particular,

Индекс субблока яркости или субблока цветности 0: xSbIdx=0, ySbIdx=0Index of luma subblock or chrominance subblock 0: xSbIdx=0, ySbIdx=0

Индекс субблока яркости или субблока цветности 1: xSbIdx=1, ySbIdx=0Index of luma subblock or chrominance subblock 1: xSbIdx=1, ySbIdx=0

Индекс субблока яркости или субблока цветности 2: xSbIdx=0, ySbIdx=1Index of luma subblock or chrominance subblock 2: xSbIdx=0, ySbIdx=1

Индекс субблока яркости или субблока цветности 3: xSbIdx=1, ySbIdx=1;Index of luma subblock or chrominance subblock 3: xSbIdx=1, ySbIdx=1;

Следуя приведенному выше варианту 4 исполнения, вектор движения каждого субблока цветности в первой строке блока 920 цветности выводится на основе усредненного значения, и усредненное значение получается на основе векторов движения субблока яркости 0 (mvLX [0 ] [0]) и субблок 1 яркости (mvLX [1] [0]), которые смежны по горизонтали. Вектор движения каждого субблока цветности во второй строке блока 920 цветности выводится на основе усредненного значения, и усредненное значение получается на основе векторов движения сублока 2 яркости (mvLX [0] [1]) и субблока 3 яркости (mvLX [1] [1]), которые смежны по горизонтали.Following the above embodiment 4, the motion vector of each chrominance subblock in the first row of chrominance block 920 is output based on the average value, and the average value is obtained based on the motion vectors of luminance subblock 0 (mvLX[0][0]) and luminance subblock 1 (mvLX [1] [0]), which are horizontally adjacent. The motion vector of each chrominance subblock in the second row of chroma block 920 is output based on the average value, and the average value is obtained based on the motion vectors of luminance subblock 2 (mvLX[0][1]) and luminance subblock 3 (mvLX[1][1]) , which are horizontally adjacent.

Фиг. 11С - пример, иллюстрирующий позицию субблока яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4: 4: 4, как показано на фиг. 10C.Fig. 11C is an example illustrating a luminance subblock position for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:4:4, as shown in FIG. 10C.

Как показано на фиг. 11C, в случае формата YUV 4: 4: 4 вектор(ы) движения совместно расположенного субблока яркости блока 1010 яркости (размер яркости 8×8) используется для каждого субблока цветности для выполнения аффинного предсказания, т. е. аффинный процесс выведения вектора движения субблока для цветности такой же, как и для яркости.As shown in FIG. 11C, in the case of YUV 4:4:4 format, the co-located luminance subblock motion vector(s) of the luminance block 1010 (luminance size 8x8) are used for each chrominance subblock to perform affine prediction, i.e., an affine subblock motion vector inference process for chrominance is the same as for brightness.

Следует понимать, что усреднение не требуется, то есть вектор движения может быть определен с использованием вектора движения совместно расположенного субблока яркости, или эта операция усреднения будет принимать в качестве входных данных один и тот же MV дважды и генерировать один и тот же вектор движения как выходные данные. Размер субблока яркости или цветности может быть 4×4.It should be understood that averaging is not required, that is, the motion vector can be determined using the motion vector of a co-located luminance subblock, or this averaging operation will take as input the same MV twice and generate the same motion vector as output data. The luma or chrominance subblock size may be 4x4.

Фиг. 12A показывает несколько примеров поднабора S, который содержит позиции субблоков яркости для данной позиции субблока цветности, когда формат цветности установлен на 4:4:4. В этом примере рассматриваются четыре случая вывода поднабора S.Fig. 12A shows several examples of a subset S that contains luma subblock positions for a given chrominance subblock position when the chroma format is set to 4:4:4. This example examines four cases of outputting a subset of S.

В первом случае позиция «A» (1201) цветности имеет соответствующие соседние блоки яркости, расположенные в позициях «A» (1202).In the first case, the chroma position "A" (1201) has corresponding adjacent luminance blocks located at the positions "A" (1202).

Во втором случае позиция «B» (1203) цветности выбирается на нижней границе блока цветности. В этом случае (кроме позиции справа-внизу) соответствующие позиции 1204 субблоков яркости, принадлежащих S, выбираются смежными по горизонтали.In the second case, the chrominance position "B" (1203) is selected at the lower boundary of the chrominance block. In this case (except for the right-bottom position), the corresponding positions 1204 of luminance subblocks belonging to S are selected to be horizontally adjacent.

В третьем случае позиция «C» (1205) цветности выбирается на правой границе блока цветности. В этом случае (за исключением правой нижней позиции) соответствующие позиции 1206 субблоков яркости, принадлежащих S, выбираются смежными по вертикали.In the third case, the chrominance position “C” (1205) is selected at the right edge of the chrominance block. In this case (except for the lower right position), the corresponding positions 1206 of luminance subblocks belonging to S are selected to be vertically adjacent.

В четвертом случае позиция «D» (1207) цветности выбирается в нижнем правом углу блока цветности. В этом случае набор S содержит единственный субблок яркости, который расположен в нижнем правом углу блока яркости.In the fourth case, the chrominance position "D" (1207) is selected at the lower right corner of the chrominance block. In this case, the set S contains a single luma subblock, which is located in the lower right corner of the luma block.

Фиг. 12B показывает другой вариант осуществления получения поднабора S. В этом варианте осуществления блоки цветности, расположенные на границе блока цветности, имеют соответствующие позиции в блоке яркости, как в четвертом случае «D», показанном на фиг. 12A.Fig. 12B shows another embodiment of obtaining a subset S. In this embodiment, chrominance blocks located on a chroma block boundary have corresponding positions in a luma block, as in the fourth case "D" shown in FIG. 12A.

В вариантах осуществления настоящего раскрытия, описанных выше, количество субблоков цветности такое же, как количество совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности. В частности, количество субблоков яркости в горизонтальном направлении numSbX такое же, как количество субблоков цветности в горизонтальном направлении numSbX, а количество субблоков яркости в вертикальном направлении numSbY такое же, как количество субблоков цветности в вертикальном направлении numSbY. Соответственно, размеры субблоков цветности отличаются от размеров совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности.In the embodiments of the present disclosure described above, the number of chrominance subblocks is the same as the number of co-located luminance subblocks in the case where chroma subsampling is used. Specifically, the number of luminance subblocks in the horizontal direction numSbX is the same as the number of chroma subblocks in the horizontal direction numSbX, and the number of luminance subblocks in the vertical direction numSbY is the same as the number of chroma subblocks in the vertical direction numSbY. Accordingly, the sizes of chrominance subblocks are different from the sizes of co-located luminance subblocks in the case where chroma subsampling is used.

В других сценариях размеры субблоков цветности и субблоков яркости сохраняются одинаковыми независимо от формата цветности. В этих сценариях количество субблоков цветности в блоке цветности и количество субблоков яркости в совмещенном блоке яркости может быть различным. Следующий вариант осуществления направлен на вывод вектора движения цветности для субблоков одинакового размера для компоненты цветности и яркости. То есть для текущей картинки, содержащей блок текущей картинки, содержащий совместно расположенные блоки яркости и цветности, блок яркости текущей картинки включает в себя набор субблоков яркости одинакового размера, а блок цветности текущей картинки включает в себя набор одинакового размера субблоков цветности, а размер субблока цветности устанавливается равным размеру субблока яркости. Можно понять, что количество субблоков цветности отличается от количества совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности. В частности, количество субблоков яркости в горизонтальном направлении, numSbX, отличается от количества субблоков цветности в горизонтальном направлении, numSbX, а количество субблоков яркости в вертикальном направлении, numSbY, отличается от количества субблоков цветности в вертикальном направлении, numSbY.In other scenarios, the sizes of the chrominance subblocks and luma subblocks are kept the same regardless of the chrominance format. In these scenarios, the number of chroma subblocks in a chroma block and the number of lumina subblocks in a combined lumina block may be different. The next embodiment aims to derive a chroma motion vector for subblocks of the same size for the chrominance and luma components. That is, for a current picture containing a block of the current picture containing co-located luminance and chrominance blocks, the luminance block of the current picture includes a set of luminance subblocks of the same size, and the chrominance block of the current picture includes a set of equal sized chrominance subblocks, and the size of the chrominance subblock is set equal to the size of the luma subblock. It can be understood that the number of chrominance subblocks is different from the number of co-located luminance subblocks in the case where chrominance subsampling is used. Specifically, the number of luminance subblocks in the horizontal direction, numSbX, is different from the number of chroma subblocks in the horizontal direction, numSbX, and the number of luminance subblocks in the vertical direction, numSbY, is different from the number of chroma subblocks in the vertical direction, numSbY.

Как показано на фиг. 13A, в случае формата YUV 4: 2: 0, например, блок яркости текущей картинки имеет размер 8×8, четыре субблока яркости одинакового размера включены в блок яркости, и набор субблоков цветности одинакового размера включены в блок цветности текущей картинки (субблок цветности=блок цветности), при этом размер субблока цветности устанавливается равным размеру субблока яркости. Векторы движения двух субблоков яркости по диагонали усредняются, и усредненное MV используется для аффинного процесса вывода вектора движения субблока для субблока цветности. В частности, поскольку количество субблоков отличается, xSbIdx (индекс субблока субблока яркости в горизонтальном направлении) будет изменяться с размером шага SubWidth, и ySbIdx (индекс субблока субблока яркости в вертикальном направлении) будет изменяться с размером шага SubHeightC. Например, для формата 4: 2: 0 xSbIdx=0, 2, 4, 6 ... и ySbIdx=0, 2, 4, 6 …As shown in FIG. 13A, in the case of YUV 4:2:0 format, for example, the luma block of the current picture has a size of 8×8, four luma subblocks of the same size are included in the luma block, and a set of chroma subblocks of the same size are included in the chroma block of the current picture (chroma subblock= chrominance block), with the size of the chrominance subblock being set equal to the size of the luminance subblock. The diagonal motion vectors of the two luma subblocks are averaged, and the averaged MV is used for the affine process of inferring the subblock motion vector for the chrominance subblock. In particular, since the number of subblocks is different, xSbIdx (subblock index of the luma subblock in the horizontal direction) will change with the step size SubWidth, and ySbIdx (subblock index of the luma subblock in the vertical direction) will change with the step size SubHeightC. For example, for 4:2:0 format xSbIdx=0, 2, 4, 6... and ySbIdx=0, 2, 4, 6...

Как показано на фиг. 13B, в случае формата YUV 4: 2: 2 векторы движения двух смежных по горизонтали субблоков яркости используются для усреднения согласно уравнению вышеприведенного варианта 4, чтобы сгенерировать вектор движения для субблока цветности. Усредненное MV используется для аффинного процесса вывода вектора движения субблока для субблока цветности. В частности, поскольку количество субблоков отличается, xSbIdx будет изменяться с размером шага SubWidth, а ySbIdx будет изменяться с размером шага SubHeightC. Например, для 4: 2: 2 xSbIdx=0, 2, 4, 8 ... и ySbIdx=0, 1, 2, 3 …As shown in FIG. 13B, in the case of YUV 4:2:2 format, the motion vectors of two horizontally adjacent luminance subblocks are used for averaging according to the equation of embodiment 4 above to generate a motion vector for the chrominance subblock. The averaged MV is used for the affine process of inferring the subblock motion vector for the chrominance subblock. In particular, since the number of subblocks is different, xSbIdx will change with the step size SubWidth, and ySbIdx will change with the step size SubHeightC. For example, for 4: 2: 2 xSbIdx=0, 2, 4, 8... and ySbIdx=0, 1, 2, 3...

Как показано на фиг. 13C, в случае формата YUV 4:4:4 и количество, и размер равны для субблоков яркости и субблоков цветности. В этом случае для каждого субблока цветности вектор(ы) движения совместно расположенного субблока яркости используется для выполнения аффинного предсказания. Другими словами, аффинный процесс вывода вектора движения субблока для блока цветности такой же, как и для блока яркости. Например, для формата 4: 4: 4 xSbIdx=0, 1, 2, 3 ... и ySbIdx=0, 1, 2, 3 ... Следует отметить, что в этом случае операцию усреднения, указанную в уравнении вышеприведенного варианта 4, не нужно выполнять, потому что два субблока, используемые для усреднения, одинаковы, и операция усреднения будет выводить то же значение, что и входные данные. По существу, в этом случае вектор движения субблока яркости может быть выбран для субблока цветности без прохождения операции усреднения, сформулированной в уравнении любого предыдущего варианта.As shown in FIG. 13C, in the case of YUV 4:4:4 format, both the number and size are equal for luma subblocks and chrominance subblocks. In this case, for each chroma subblock, the motion vector(s) of the co-located luminance subblock are used to perform affine prediction. In other words, the affine process of deriving the subblock motion vector for a chrominance block is the same as for a luminance block. For example, for 4:4:4 format xSbIdx=0, 1, 2, 3... and ySbIdx=0, 1, 2, 3... It should be noted that in this case the averaging operation specified in the equation of option 4 above , does not need to be performed because the two subblocks used for averaging are the same, and the averaging operation will output the same value as the input data. Essentially, in this case, the motion vector of the luma subblock can be selected for the chrominance subblock without going through the averaging operation formulated in the equation of any previous embodiment.

Из вышеизложенного можно видеть, что блок будет иметь количество субблоков цветности, которое отличается от количества субблоков яркости, когда SubWidthC больше 1 или SubHeightC больше 1. Фиг. 14A показывает пример подразделения блока яркости 16×16 и подразделения совместно размещенного блока цветности для формата цветности YUV 4:2:0. В этом примере блок яркости разделен на 16 субблоков, каждый размером 4×4. Блок цветности имеет размер 8×8 выборок и разделен на 4 субблока, каждый из которых имеет размер 4×4 выборки. Эти 4 субблока цветности сгруппированы в 2 строки, каждая из которых имеет по 2 субблока. Буквы «A», «B», «C» и «D» указывают, какие субблоки яркости используются для выведения вектора движения для соответствующего субблока цветности, обозначенного той же буквой.From the above, it can be seen that a block will have a number of chroma subblocks that is different from the number of luminance subblocks when SubWidthC is greater than 1 or SubHeightC is greater than 1. FIG. 14A shows an example of a 16x16 luma block subdivision and a co-located chrominance block subdivision for the YUV 4:2:0 chrominance format. In this example, the luma block is divided into 16 subblocks, each 4x4 in size. The chrominance block has a size of 8x8 samples and is divided into 4 subblocks, each of which has a size of 4x4 samples. These 4 chroma subblocks are grouped into 2 rows, each of which has 2 subblocks. The letters "A", "B", "C" and "D" indicate which luma subblocks are used to derive the motion vector for the corresponding chrominance subblock denoted by the same letter.

Фиг. 14B иллюстрирует подразделение блока яркости 16×16 и его совмещенного блока цветности на картинке, имеющей формат цветности YUV 4: 2: 2. В этом случае блок цветности имеет размер 8×16 выборок и подразделяется на 8 субблоков, сгруппированных в 4 строки, причем каждая строка имеет 2 субблока. Каждый субблок яркости и субблок цветности имеет размер 4×4 выборки. Буквы «A», «B», «C», «D», «E», «F», «G» и «H» указывают, какие субблоки яркости используются для выведения вектора движения для соответствующего субблока цветности, обозначенного той же буквой.Fig. 14B illustrates the subdivision of a 16x16 luma block and its combined chrominance block in a picture having a YUV 4:2:2 chroma format. In this case, the chroma block has a size of 8x16 samples and is subdivided into 8 subblocks grouped into 4 rows, each the line has 2 subblocks. Each luma subblock and chrominance subblock has a sample size of 4x4. The letters "A", "B", "C", "D", "E", "F", "G" and "H" indicate which luma subblocks are used to derive the motion vector for the corresponding chroma subblock denoted by the same letter.

Предполагая, что блок яркости разделен на numSbY строк субблоков, каждая строка имеет numSbX субблоков, и что вектор движения задан или получен для каждого из субблоков яркости, представленный здесь вариант осуществления может быть определен следующим образом:Assuming that the luma block is divided into numSbY rows of subblocks, each row has numSbX subblocks, and that a motion vector is specified or obtained for each of the luma subblocks, the embodiment presented here can be defined as follows:

1. Первым этаповом является определение значений SubWidthC и SubHeightC на основе информации формата цветности, указывающей формат цветности текущей картинки (или кадра) кодирования или декодирования. Например, информация формата цветности может содержать информацию, представленную в приведенной выше таблице 1-1 или 1-2.1. The first step is to determine the values of SubWidthC and SubHeightC based on chrominance format information indicating the chrominance format of the current encoding or decoding picture (or frame). For example, the chroma format information may include the information presented in Table 1-1 or 1-2 above.

2. Второй этап может включать в себя: получение количества субблоков цветности вдоль горизонтального направления, numCSbX, и количества субблоков цветности вдоль вертикального направления, numCSbY, следующим образом:2. The second step may include: obtaining the number of chroma subblocks along the horizontal direction, numCSbX, and the number of chroma subblocks along the vertical direction, numCSbY, as follows:

numCSbX = numSbX >>( SubWidthC - 1), где numSbX - количество субблоков яркости в блоке яркости в горизонтальном направлении; numCSbX = numSbX >>( SubWidthC - 1), where numSbX is the number of luminance subblocks in the luminance block in the horizontal direction;

numCSbY = numSbY >>( SubHeightC - 1), где numSbY - количество субблоков яркости в блоке яркости в вертикальном направлении. numCSbY = numSbY >>( SubHeightC - 1), where numSbY is the number of luminance subblocks in a luminance block in the vertical direction.

Блок яркости может быть кодируемым или декодируемым в настоящее время блоком кодируемой или декодируемой в настоящее время картинки.The luma block may be a block of a picture currently being encoded or decoded.

3. Обозначение субблока цветности, расположенного в строке yCSbIdx и столбце xCSbIdx, с использованием пространственных индексов (xCSbIdx, yCSbIdx), где xCSbIdx=0, ..., numCSbX - 1 и yCSbIdx=0 .. numCSbY - 1, значение вектора движения цветности для субблока цветности можно определить следующим образом:3. Designation of the chrominance subblock located in row yCSbIdx and column xCSbIdx, using spatial indices (xCSbIdx, yCSbIdx), where xCSbIdx=0, ..., numCSbX - 1 and yCSbIdx=0 .. numCSbY - 1, the value of the chroma motion vector for a chrominance subblock can be defined as follows:

Пространственные индексы (xSbIdxL, ySbIdxL) совместно расположенного субблока яркости определяются следующим образом:Spatial indexes (xSbIdxL, ySbIdxL) together located subblock brightness are determined as follows:

xSbIdxL = xCSbIdx << (SubWidthC - 1);xSbIdx L = xCSbIdx << (SubWidthC - 1);

ySbIdxL = yCSbIdx << (SubHeightC - 1).ySbIdx L = yCSbIdx << (SubHeightC - 1).

Пространственная позиция субблока цветности (sbX, sbY) внутри блока цветности может быть выведена с использованием пространственных индексов (xCSbIdx, yCSbIdx) следующим образом:The spatial position of a chrominance subblock (sbX, sbY) within a chroma block can be inferred using spatial indices (xCSbIdx, yCSbIdx) as follows:

sbX=xCSbIdx * sbX;sbX=xCSbIdx * sbX;

sbY=yCSbIdx * sbY.sbY=yCSbIdx * sbY.

То же самое применимо к определению пространственной позиции для субблока яркости в пределах пространственных индексов (xSbIdx, ySbIdx) блока яркости для субблока яркости:The same applies to determining the spatial position for the luma subblock within the spatial indices (xSbIdx, ySbIdx) of the luma block for the luma subblock:

sbX=xSbIdx * sbX;sbX=xSbIdx * sbX;

sbY=ySbIdx * sbY.sbY=ySbIdx * sbY.

Определенные пространственные индексы совместно размещенного субблока яркости (xSbIdxL, ySbIdxL) могут быть дополнительно использованы при определении вектора движения цветности. Например, набор субблоков яркости может быть определен, как описано ниже:Specific spatial indices of the co-located luminance subblock (xSbIdxL,ySbIdxL) can be extra used in determining the chromaticity motion vector. For example, a set of luminance subblocks may be defined as follows:

S0 = (xSbIdxL, ySbIdxL) S 0 = (xSbIdx L , ySbIdx L )

S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 1 = (xSbIdx L + (SubWidthC-1), ySbIdx L + (SubHeightC-1))

В этом примере набор субблоков яркости включает в себя два субблока, проиндексированных S0 и S1, вычисленные выше. Каждый из S0 и S1 включает в себя пару пространственных индексов, определяющих позицию субблока.In this example, the luma subblock set includes two subblocks indexed S0 and S1, calculated above. Each of the S0 and S1includes a pair of spatial indices defining the position of the subblock.

Набор субблоков яркости используется для вычисления среднего вектора движения mvAvgLX. Здесь и в обозначениях вектора движения, используемых ниже, X может быть либо 0, либо 1, соответственно указывая индекс списка ссылок для вектора движения, являющийся либо L0, либо L1. L0 указывает список ссылок 0, а L1 указывает список ссылок 1. Предполагается, что вычисления вектора движения выполняются путем применения соответствующих формул независимо к горизонтальной составляющей mvAvgLX [0] и вертикальной составляющей mvAvgLX [1] вектора движения.A set of luminance subblocks is used to calculate the average motion vector mvAvgLX. Here and in the motion vector notation used below, X can be either 0 or 1, respectively indicating the reference list index for the motion vector being either L0 or L1. L0 indicates reference list 0, and L1 indicates reference list 1. It is assumed that motion vector calculations are performed by applying the appropriate formulas independently to the horizontal component mvAvgLX[0] and the vertical component mvAvgLX[1] of the motion vector.

Если вектор движения яркости субблока с пространственными индексами (xSbIdxL, ySbIdxL) обозначен как mvLX[ xSbIdxL][ ySbIdxL], средний вектор движения mvAvgLX может быть получен следующим образом:If the brightness motion vector of a subblock with spatial indices (xSbIdxL, ySbIdxL) is designated like mvLX[ xSbIdxL][ ySbIdxL], average motion vector mvAvgLXMaybebe obtained as follows:

mvAvgLX = mvAvgLX 0>= 0 ? mvAvgLX >> 1 : -(( -mvAvgLX) >> 1)mvAvgLX = mvAvgLX 0>= 0 ? mvAvgLX >> 1 : -(( -mvAvgLX) >> 1)

где и горизонтальные и вертикальные пространственные индексы элемента Si, как обсуждалось выше, где i=0, 1. Where And horizontal and vertical spatial indices of the element Si , as discussed above, where i=0, 1.

Вектор движения субблока mvCLX цветности с пространственными индексами (xCSbIdx, yCSbIdx) получается из среднего вектора движения mvAvgLX следующим образом:The motion vector of the chrominance subblock mvCLX with spatial indices (xCSbIdx, yCSbIdx) is obtained from the average motion vector mvAvgLX as follows:

mvCLX [0] = mvAvgLX [0] * 2/SubWidthCmvCLX[0] = mvAvgLX[0] * 2/SubWidthC

mvCLX [1] = mvAvgLX [1] * 2/SubHeightCmvCLX[1] = mvAvgLX[1] * 2/SubHeightC

Подробности процесса выведения вектора движения яркости и цветности согласно представленным здесь вариантам осуществления описаны следующим образом в формате части спецификации проекта VVC:The details of the luma and chrominance motion vector derivation process according to the embodiments presented here are described as follows in the format of part of the VVC design specification:

8.5.5.9 Процесс выведения массивов векторов движения из аффинных векторов движения контрольных точек8.5.5.9 Process of deriving arrays of motion vectors from affine motion vectors of control points

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

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

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

количество векторов движения контрольной точки numCpMv, number of control point motion vectors numCpMv,

векторы движения контрольной точки cpMvLX [cpIdx], с cpIdx=0..numCpMv - 1 и X равным 0 или 1,control point motion vectors cpMvLX [cpIdx], with cpIdx=0..numCpMv - 1 and X equal to 0 or 1,

ссылочный индекс refIdxLX и X равны 0 или 1,reference index refIdxLX and X are 0 or 1,

количество субблоков кодирования яркости в горизонтальном направлении (numSbX) и в вертикальном направлении (numSbY).number of luminance coding subblocks in the horizontal direction (numSbX) and in the vertical direction (numSbY).

Выходными данными этого процесса являются:The output of this process is:

массив векторов движения субблока яркости mvLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X равным 0 или 1,an array of motion vectors of the brightness subblock mvLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 and X equal to 0 or 1,

массив векторов движения субблока цветности mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X равным 0 или 1.an array of motion vectors of the chromaticity subblock mvCLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 and X equal to 0 or 1.

Следующие присвоения сделаны для x=xCb..xCb+cbWidth - 1 и y=yCb..yCb+cbHeight - 1:The following assignments are made for x=xCb..xCb+cbWidth - 1 and y=yCb..yCb+cbHeight - 1:

CpMvLX [x] [y] [0] = cpMvLX [0] CpMvLX [x] [y] [0] = cpMvLX [0]

CpMvLX [x] [y] [1] = cpMvLX [1]CpMvLX [x] [y] [1] = cpMvLX [1]

CpMvLX [x] [y] [2] = cpMvLX [2]CpMvLX [x] [y] [2] = cpMvLX [2]

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

log2CbW=Log2 (cbWidth) log2CbW=Log2 (cbWidth)

log2CbH=Log2 (cbHeight) log2CbH=Log2 (cbHeight)

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

mvScaleHor = cpMvLX[0][0] << 7 mvScaleHor = cpMvLX[0][0] << 7

mvScaleVer = cpMvLX[0][1] << 7 mvScaleVer = cpMvLX[0][1] << 7

dHorX = (cpMvLX[1][0] - cpMvLX[0][0]) << (7 - log2CbW) dHorX = (cpMvLX[1][0] - cpMvLX[0][0]) << (7 - log2CbW)

dVerX = (cpMvLX[1][1] - cpMvLX[0][1]) << (7 - log2CbW)dVerX = (cpMvLX[1][1] - cpMvLX[0][1]) << (7 - log2CbW)

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

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

dHorY =(cpMvLX[2][0] - cpMvLX[0][0]) << (7 - log2CbH)dHorY =(cpMvLX[2][0] - cpMvLX[0][0]) << (7 - log2CbH)

dVerY = (cpMvLX[2][1] - cpMvLX[0][1]) << (7 - log2CbHdVerY = (cpMvLX[2][1] - cpMvLX[0][1]) << (7 - log2CbH

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

dHorY = - dVerXdHorY = - dVerX

dVerY=dHorXdVerY=dHorX

Для xSbIdx=0..numSbX - 1 и ySbIdx=0..numSbY - 1 применяется следующее:For xSbIdx=0..numSbX - 1 and ySbIdx=0..numSbY - 1 the following applies:

Вектор движения яркости mvLX [xSbIdx] [ySbIdx] выводится следующим образом:The brightness motion vector mvLX [xSbIdx] [ySbIdx] is output as follows:

xPosCb=2+(xSbIdx << 2)xPosCb=2+(xSbIdx << 2)

yPosCb = 2+(ySbIdx << 2)yPosCb = 2+(ySbIdx << 2)

mvLX[xSbIdx][ySbIdx][0]=(mvScaleHor+dHorX*xPosCb+dHorY*yPosCb)mvLX[xSbIdx][ySbIdx][0]=(mvScaleHor+dHorX*xPosCb+dHorY*yPosCb)

mvLX[xSbIdx][ySbIdx][1] = (mvScaleVer + dVerX * xPosCb + dVerY * yPosCb)mvLX[xSbIdx][ySbIdx][1] = (mvScaleVer + dVerX * xPosCb + dVerY * yPosCb)

Процесс округления для векторов движения, как указано в пункте 8.5.2.14, вызывается с mvX, установленным равным mvLX [xSbIdx] [ySbIdx], rightShift установлен равным 7, а leftShift установлен равным 0 в качестве входных данных и округленным mvLX [xSbIdx] [ ySbIdx] в качестве вывходных данных.The rounding process for motion vectors as specified in clause 8.5.2.14 is called with mvX set to mvLX [xSbIdx] [ySbIdx], rightShift set to 7 and leftShift set to 0 as input and rounded mvLX [xSbIdx] [ySbIdx ] as output.

Векторы движения mvLX [xSbIdx] [ySbIdx] отсекаются следующим образом:Motion vectors mvLX [xSbIdx] [ySbIdx] are clipped as follows:

mvLX[xSbIdx][ySbIdx][0] = Clip3( -217, 217 - 1, mvLX[xSbIdx][ySbIdx][0])mvLX[xSbIdx][ySbIdx][0] = Clip3( -2 17 , 2 17 - 1, mvLX[xSbIdx][ySbIdx][0])

mvLX[xSbIdx][ySbIdx][1] = Clip3( -217, 217 - 1, mvLX[xSbIdx][ySbIdx][1])mvLX[xSbIdx][ySbIdx][1] = Clip3( -2 17 , 2 17 - 1, mvLX[xSbIdx][ySbIdx][1])

Переменные numCSbX и numCSbY определены следующим образом:The variables numCSbX and numCSbY are defined as follows:

numCSbX = numCSbX >> (SubWidthC - 1)numCSbX = numCSbX >> (SubWidthC - 1)

numCSbY = numCSbY >> (SubHeightC - 1)numCSbY = numCSbY >> (SubHeightC - 1)

Следует отметить, что этот вариант осуществления отличается от предыдущих вариантов осуществления. В предыдущих вариантах осуществления количество субблоков яркости в блоке яркости и количество субблоков цветности в совмещенном блоке цветности одинаковы. В этом варианте осуществления, однако, для форматов цветности 4: 2: 0 и 4: 2: 2 количество субблоков яркости в блоке яркости и количество субблоков цветности в совмещенном блоке цветности различаются. Поскольку количество субблоков в блоке цветности и в блоке яркости различается, xSbIdx будет изменяться с размером шага SubWidth, а ySbIdx будет изменяться с размером шага SubHeightC, как можно видеть ниже.It should be noted that this embodiment is different from the previous embodiments. In previous embodiments, the number of luma subblocks in a luma block and the number of chrominance subblocks in a combined chrominance block are the same. In this embodiment, however, for 4:2:0 and 4:2:2 chrominance formats, the number of luminance subblocks in a luminance block and the number of chroma subblocks in a combined chroma block are different. Since the number of subblocks in a chroma block and a luma block are different, xSbIdx will change with the SubWidth step size, and ySbIdx will change with the SubHeightC step size, as can be seen below.

Для xCSbIdx=0..numCSbX - 1 и yCSbIdx=0..numCSbY - 1 применяется следующее:For xCSbIdx=0..numCSbX - 1 and yCSbIdx=0..numCSbY - 1 the following applies:

Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:

Если SubWidthC == 1 и SubHeightC == 1:If SubWidthC == 1 and SubHeightC == 1:

mvAvgLX=mvLX [xCSbIdx] [yCSbIdx] mvAvgLX=mvLX [xCSbIdx] [yCSbIdx]

ИначеOtherwise

– xSbIdxL = xCSbIdx << (SubWidthC - 1)– xSbIdx L = xCSbIdx << (SubWidthC - 1)

– ySbIdxL = yCSbIdx << (SubHeightC - 1)– ySbIdx L = yCSbIdx << (SubHeightC - 1)

– mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[ xSbIdxL + (SubWidthC-1)][ySbIdxL + (SubHeightC-1)] – mvAvgLX = mvLX[xSbIdx L ][ySbIdx L ]+ mvLX[ xSbIdx L + (SubWidthC-1)][ySbIdx L + (SubHeightC-1)]

mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0]) >> 1 : -(( -mvAvgLX[0]) >> 1)mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0]) >> 1 : -(( -mvAvgLX[0]) >> 1)

mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1]) >> 1 : -(( -mvAvgLX[1]) >> 1)mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1]) >> 1 : -(( -mvAvgLX[1]) >> 1)

Процесс вывода векторов движения цветности в пункте 8.5.2.13, представленный ниже, вызывается с mvAvgLX и refIdxLX в качестве входных данных и с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных.The chroma motion vector inference process in clause 8.5.2.13 presented below is called with mvAvgLX and refIdxLX as input and with the chroma motion vector array mvCLXSub[xCSbIdx][yCSbIdx] as output.

Массив векторов движения субблока цветности mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 выводится из mvCLXSub следующим образом:An array of chroma subblock motion vectors mvCLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 is derived from mvCLXSub as follows:

mvCLX[xSbIdx][ySbIdx] = mvCLXSub[xSbIdx>>(SubWidthC-1) ][ySbIdx >> (SubHeightC - 1)]mvCLX[xSbIdx][ySbIdx] = mvCLXSub[xSbIdx>>(SubWidthC-1) ][ySbIdx >> (SubHeightC - 1)]

Следует отметить, что операция усреднения, представленная выше, предназначена для иллюстрации и не должна рассматриваться как ограничение. Различные другие способа выполнения операции усреднения могут использоваться при определении векторов движения цветности из векторов движения яркости.It should be noted that the averaging operation presented above is for illustrative purposes and should not be construed as limiting. Various other methods of performing the averaging operation can be used in determining chroma motion vectors from luminance motion vectors.

8.5.2.13 Процесс вывода векторов движения цветности8.5.2.13 Chroma motion vector output process

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

вектор движения яркости с точностью 1/16 фракционной выборки mvLX, brightness motion vector with an accuracy of 1/16 fractional sampling mvLX,

ссылочный индекс refIdxLX.reference index refIdxLX.

Выходными данными этого процесса является вектор движения цветности с точностью до 1/32 фракционной выборки mvCLX.The output of this process is a chroma motion vector accurate to 1/32 of the mvCLX fractional sample.

Вектор движения цветности выводится из соответствующего вектора движения яркости.The chroma motion vector is derived from the corresponding luminance motion vector.

Вектор движения цветности mvCLX выводится следующим образом:The mvCLX chroma motion vector is output as follows:

mvCLX [0] = mvLX [0] * 2/SubWidthCmvCLX[0] = mvLX[0] * 2/SubWidthC

mvCLX [1] = mvLX [1] * 2/SubHeightCmvCLX[1] = mvLX[1] * 2/SubHeightC

Операции этого процесса деривации зависят от того, как этот процесс вызывается. Например, ранее было описано, что «процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных, а также с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных». В этом примере mvLX в пункте 8.5.2.13, описанном здесь, будет заменен на mvAvgLX для выполнения операций по мере его вызова.The operations of this derivation process depend on how the process is invoked. For example, it was previously described that "the chroma motion vector inference process in clause 8.5.2.13 is called with mvAvgLX and refIdxLX as input, and with the chroma motion vector array mvCLXSub[xCSbIdx][yCSbIdx] as output." In this example, mvLX in clause 8.5.2.13 described here will be replaced by mvAvgLX to perform operations as it is called.

Существуют дополнительные аспекты, относящиеся к вариантам осуществления, которые учитывают смещение между позициями подвыборки для выборок цветности относительно позиции выборок яркости.There are additional aspects related to embodiments that take into account the offset between subsample positions for chroma samples relative to the position of luma samples.

Примерный вариант осуществления должен задавать или определять набор S субблоков яркости в соответствии со значением sps_cclm_colocated_chroma_flag. Конкретно,An exemplary embodiment would define or define a set of S luminance subblocks according to the value of sps_cclm_colocated_chroma_flag. Specifically,

Когда SubHeightC=1 и SubWidthC=2 и sps_cclm_colocated_chroma_flag установлен равным 1, набор S состоит из одного элемента S0 = (xSbIdxL, ySbIdxL)When SubHeightC=1 and SubWidthC=2 and sps_cclm_colocated_chroma_flag is set to 1, the set S consists of a single element S 0 = ( xSbIdxL , ySbIdxL )

В противном случае набор S включает в себяOtherwise the set S includes

S0 = (xSbIdxL, ySbIdxL) S 0 = (xSbIdx L , ySbIdx L )

S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 1 = (xSbIdx L + (SubWidthC-1), ySbIdx L + (SubHeightC-1))

Другой примерный вариант осуществления вводит зависимость между определением среднего вектора движения и значением «sps_cclm_colocated_chroma_flag». В частности, веса вводятся в операциях усреднения и могут указываться по-разному для разных субблоков яркости. Примерный процесс получения среднего вектора движения выглядит следующим образом:Another exemplary embodiment introduces a relationship between the determination of the average motion vector and the "sps_cclm_colocated_chroma_flag" value. In particular, weights are introduced in averaging operations and can be specified differently for different luminance subblocks. An example process for obtaining the average motion vector is as follows:

xSbIdxL = xCSbIdx << (SubWidthC - 1)xSbIdx L = xCSbIdx << (SubWidthC - 1)

ySbIdxL = yCSbIdx << (SubHeightC - 1).ySbIdx L = yCSbIdx << (SubHeightC - 1).

sps_cclm_colocated_chroma_flag устанавливается равным 1, весовые коэффициенты w0 и w1 устанавливаются следующим образом: w0=5, w1=3;sps_cclm_colocated_chroma_flag is set to 1, the weights w0 and w1 are set as follows: w0=5, w1=3;

mvAvgLX = w0 * mvLX[ xSbIdxL ][ySbIdxL ] + mvAvgLX = w0 * mvLX[ xSbIdx L ][ySbIdx L ] +

+ w1 * mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL + (SubHeightC-1)] + w1 * mvLX[xSbIdx L + (SubWidthC-1)][ySbIdx L + (SubHeightC-1)]

mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0] + 3) >>3 : -(( -mvAvgLX[0] +3) >> 3)mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0] + 3) >>3 : -(( -mvAvgLX[0] +3) >> 3)

mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1] + 3) >> 3 : -( -AvgLX[1]+3) >> 3)mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1] + 3) >> 3 : -( -AvgLX[1]+3) >> 3)

Следует отметить, что операция усреднения, представленная в этом примере, предназначена для иллюстрации и не должна рассматриваться как ограничение. Различные другие способы выполнения операции усреднения могут использоваться при определении векторов движения цветности из векторов движения яркости.It should be noted that the averaging operation presented in this example is for illustration purposes and should not be construed as a limitation. Various other methods of performing the averaging operation can be used in determining chroma motion vectors from luminance motion vectors.

Фиг. 15 является блок-схемой примерного способа 1300 для аффинного внешнего предсказания субблоков цветности, при этом способ включает:Fig. 15 is a flow diagram of an example method 1300 for affine inter-prediction of chroma subblocks, the method including:

На этапе 1501 определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;At step 1501, determining chrominance scaling factors in the horizontal and vertical directions based on the chrominance format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the block of the current picture belongs;

На этапе 1503 определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; иAt step 1503, determining a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; And

На этапе 1505 определение вектора движения для субблока цветности упомянутого блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.At step 1505, determining a motion vector for a chrominance subblock of said chrominance block based on the motion vectors of one or more luma subblocks in the set (S) of luma subblocks.

Фиг. 16 является блок-схемой другого примерного способа 1300 для аффинного внешнего предсказания субблоков цветности, при этом способ содержит:Fig. 16 is a flow diagram of another exemplary method 1300 for affine inter-prediction of chroma subblocks, the method comprising:

На этапе 1601 определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;At step 1601, determining chrominance scaling factors in the horizontal and vertical directions based on the chrominance format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the block of the current picture belongs;

На этапе 1603 определение значения вектора движения для каждого субблока яркости во множестве субблоков яркости, при этом N субблоков яркости включены в блок яркости;At step 1603, determining a motion vector value for each luminance sub-block in a plurality of luminance sub-blocks, wherein N luminance sub-blocks are included in the luminance block;

На этапе 1605 выполняется усреднение векторов движения субблоков яркости в наборе S субблоков яркости, при этом набор (S) определяется на основе коэффициентов масштабирования цветности; иAt step 1605, averaging of motion vectors of luminance subblocks in a set S of luminance subblocks is performed, wherein the set (S) is determined based on chroma scaling factors; And

На этапе 1607 для субблока цветности во множестве субблоков цветности выводят вектор движения для субблока цветности на основе среднего вектора движения яркости, при этом субблоки цветности включены в блок цветности.At step 1607, for a chrominance subblock in a plurality of chroma subblocks, a motion vector for the chroma subblock is output based on the average luminance motion vector, with the chrominance subblocks included in the chrominance block.

Настоящее изобретение раскрывает способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости, который зависит от формата цветности картинки, приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие позиции блоков яркости при усреднении векторов движения яркости. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что имеет технический результат в улучшении характеристик сжатия.The present invention discloses a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the brightness vectors, a linear subsampling of the brightness motion field is performed. When chroma color planes have the same height as the lumina plane, it makes more sense to select motion vectors from lumina blocks that are horizontally adjacent so that they have the same vertical position. The selection of luminance motion vectors, which depends on the chroma format of the picture, results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chromaticity format allows you to select the most appropriate positions of luminance blocks when averaging the luminance motion vectors. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which has the technical result of improving compression characteristics.

Кроме того, когда количество субблоков цветности задано равным количеству субблоков яркости, и когда размер цветовой плоскости цветности не равен размеру плоскости яркости, векторы движения смежных субблоков цветности могут принимать одинаковое значение. При реализации этих этапов обработки можно выполнить оптимизацию, пропустив этап вычисления повторяющихся значений. Предлагаемое изобретение раскрывает способ определения размера субблока цветности, равного размеру субблока яркости. В этом случае реализация может быть упрощена за счет унификации обработки яркости и цветности, и, естественно, можно избежать избыточных вычислений вектора движения.In addition, when the number of chrominance subblocks is set equal to the number of lumina subblocks, and when the size of the chroma color plane is not equal to the size of the lumina plane, the motion vectors of adjacent chrominance subblocks may take on the same value. When implementing these processing steps, you can perform optimization by skipping the step of calculating duplicate values. The present invention discloses a method for determining the size of a chrominance subblock equal to the size of a luminance subblock. In this case, the implementation can be simplified by unifying the luminance and chrominance processing, and, naturally, redundant motion vector calculations can be avoided.

Фиг. 17 иллюстрирует устройство для аффинного внешнего предсказания согласно другому аспекту изобретения. Устройство 1700 содержит: Fig. 17 illustrates an apparatus for affine inter prediction according to another aspect of the invention. The 1700 device contains:

модуль 1701 определения, сконфигурированный для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки; и определять набор (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; иa determination module 1701 configured to determine chrominance scaling factors in the horizontal and vertical directions based on chrominance format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the block of the current picture belongs; and determine a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; And

модуль 1703 выведения вектора движения, сконфигурированный для определения вектора движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.a motion vector derivation module 1703, configured to determine a motion vector for a chrominance subblock of a chroma block based on the motion vectors of one or more luminance subblocks in the luminance subblock set (S).

В примере модуль 1703 вывода вектора движения может содержать:In an example, motion vector output module 1703 may include:

модуль 1703a выведения вектора движения яркости, сконфигурированный для определения значения вектора движения для каждого субблока яркости во множестве субблоков яркости, при этом множество субблоков яркости включено в блок яркости;a luminance motion vector output unit 1703a, configured to determine a motion vector value for each luminance sub-block in a plurality of luminance sub-blocks, wherein the plurality of luminance sub-blocks are included in the luminance block;

модуль 1703b выведения вектора движения цветности, сконфигурированный для субблока цветности во множестве субблоков цветности, определения вектора движения для субблока цветности на основе вектора движения по меньшей мере одного субблока яркости в наборе (S) субблоков яркости, при этом набор (S) определяется на основе коэффициентов масштабирования цветности; при этом субблоки цветности включены в блок цветности. В схеме равного размера, множество субблоков цветности может составлять только один субблок цветности.a chroma motion vector output module 1703b, configured for a chroma subblock in a plurality of chrominance subblocks, determining a motion vector for the chroma subblock based on a motion vector of at least one luminance subblock in a set (S) of luminance subblocks, wherein the set (S) is determined based on the coefficients color scaling; wherein the chrominance subblocks are included in the chrominance block. In an equal-sized circuit, multiple chrominance subblocks may constitute only one chrominance subblock.

Устройство 1700 дополнительно содержит: модуль 1705 компенсации движения, сконфигурированный для генерации предсказания субблока цветности на основе определенного вектора движения.The device 1700 further includes: a motion compensation module 1705 configured to generate a chroma subblock prediction based on the determined motion vector.

Соответственно, в некотором примере, примерная структура устройства 1700 может соответствовать кодеру 200 на фиг. 2. В другом примере примерная структура устройства 1700 может соответствовать декодеру 300 на фиг. 3.Accordingly, in some example, an exemplary structure of device 1700 may correspond to encoder 200 in FIG. 2. In another example, an exemplary structure of device 1700 may correspond to decoder 300 in FIG. 3.

В другом примере примерная структура устройства 1700 может соответствовать блоку 244 внешнего предсказания на фиг. 2. В другом примере примерная структура устройства 1700 может соответствовать блоку 344 внешнего предсказания на фиг. 3.In another example, an exemplary structure of device 1700 may correspond to inter prediction block 244 in FIG. 2. In another example, an exemplary structure of device 1700 may correspond to inter prediction block 344 in FIG. 3.

Настоящее раскрытие предоставляет следующие дополнительные аспекты.The present disclosure provides the following additional aspects.

Согласно первому аспекту изобретения предоставляется способ вывода вектора движения цветности, используемый в аффинной компенсации движения блока внешнего предсказания, PU, причем PU, содержит совмещенные блоки яркости и цветности, причем способ содержитAccording to a first aspect of the invention, there is provided a method for deriving a chroma motion vector used in affine motion compensation of an inter prediction unit, PU, wherein the PU comprises combined luma and chrominance units, wherein the method comprises

определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях (SubWidthC и SubHeightC) на основе формата цветности текущей картинки (например, текущего кодирования или декодирования картинки);determining the chromaticity scaling factors in the horizontal and vertical directions (SubWidthC and SubHeightC) based on the chromaticity format of the current picture (for example, the current encoding or decoding of the picture);

разделение блока яркости текущей картинки на первый набор субблоков яркости;dividing the brightness block of the current picture into a first set of brightness subblocks;

получение значения вектора движения для каждого субблока яркости в первом наборе субблоков яркости;obtaining a motion vector value for each luminance sub-block in the first set of luminance sub-blocks;

разделение блока цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU) на набор субблоков цветности;dividing the chrominance block of the current picture (in the example, the chrominance block and the luma block are contained in the same PU) into a set of chrominance subblocks;

для субблока цветности в наборе субблоков цветности определяют второй набор субблоков (S) яркости, при этом позиции субблоков яркости во втором наборе определяются форматом цветности текущей картинки; иfor a chrominance subblock in a set of chrominance subblocks, a second set of luminance subblocks (S) is determined, wherein the positions of the luminance subblocks in the second set are determined by the chrominance format of the current picture; And

получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S.obtaining a motion vector for the chrominance subblock based on the motion vectors of the luminance subblocks in the second set S.

В возможной форме реализации способа согласно первому аспекту как таковому второй набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:In a possible form of implementation of the method according to the first aspect as such, the second set of luminance subblocks (S) comprises any combination of the following subblocks:

S0 = (xSbIdxL, ySbIdxL)S 0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))

S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)

S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором второй набор субблоков (S) яркости содержит два субблока:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, wherein the second set of luminance subblocks (S) comprises two subblocks:

S0 = (xSbIdxL, ySbIdxL)S0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S содержит усреднение векторов движения субблоков яркости во втором наборе S.In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein deriving a motion vector for a chroma subblock based on the motion vectors of the luma subblocks in the second set S comprises averaging the motion vectors of the luma subblocks in the second set S.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:

mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),
mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),

где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2(N) - это степень, до которой число 2 должно быть увеличено, чтобы получить значение N, а “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the subblock S i in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luma sub-blocks (S), log2(N) is the degree to which the number 2 must be increased to obtain the value N, and “>>” is the arithmetic shift to the right.

В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S включает следующие этапы:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S includes the following steps:

mvAvgLX = mvAvgLX =

если mvAvgLX[ 0 ] больше или равно 0, тоif mvAvgLX[ 0 ] is greater than or equal to 0, then

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), otherwise,

mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )

если mvAvgLX[ 1 ] больше или равно 0, то if mvAvgLX[ 1 ] is greater than or equal to 0, then

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), otherwise,

mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N)), где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока Luma с индексами и , N - это количество элементов во втором наборе субблоков (S) яркости, log2 (N) - это степень, до которой число 2 должно быть увеличено, чтобы получить значение N, а “>>” -арифметический сдвиг вправо.mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N)), where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component motion vector mvAvgLX, And - horizontal and vertical indices of the subblock S i in the array of motion vectors, - motion vector of the Luma subblock with indices And , N is the number of elements in the second set of luma subblocks (S), log2(N) is the degree to which the number 2 must be increased to obtain the value N, and “>>” is the arithmetic shift to the right.

Согласно второму аспекту изобретения предоставляется способ вывода вектора движения цветности, используемый в аффинной компенсации движения блока внешнего предсказания, PU, содержащего совместно расположенные блоки яркости и цветности, причем способ содержит:According to a second aspect of the invention, there is provided a chroma motion vector output method used in affine motion compensation of an inter-prediction unit, PU, containing co-located luma and chrominance blocks, the method comprising:

получение первого набора субблоков яркости, при этом первый набор субблоков яркости включен в блок яркости текущей картинки (например, текущего кодирования или декодирования картинки);obtaining a first set of luminance subblocks, wherein the first set of luminance subblocks is included in a luminance block of the current picture (eg, the current encoding or decoding of the picture);

получение значения вектора движения для каждого субблока яркости в первом наборе субблоков яркости;obtaining a motion vector value for each luminance sub-block in the first set of luminance sub-blocks;

получение набора субблоков цветности, причем набор субблоков цветности включен в блок цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU); иobtaining a set of chrominance subblocks, wherein the set of chrominance subblocks is included in the chrominance block of the current picture (in the example, the chroma block and the luma block are contained in the same PU); And

получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе (S) субблоков яркости, при этом для субблока цветности в наборе субблоков цветности второй набор (S) субблоков яркости (S) определяется из первого набора субблоков яркости согласно формату цветности текущей картинки.obtaining a motion vector for a chrominance subblock based on the motion vectors of luminance subblocks in the second set (S) of luminance subblocks, wherein for a chrominance subblock in a set of chrominance subblocks, the second set (S) of luminance subblocks (S) is determined from the first set of luminance subblocks according to the chrominance format of the current Pictures.

В возможной форме реализации способа согласно второму аспекту как таковому, в котором второй набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:In a possible form of implementing the method according to the second aspect as such, wherein the second set of luminance subblocks (S) comprises any combination of the following subblocks:

S0 = (xSbIdxL, ySbIdxL) S 0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))

S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)

S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором второй набор субблоков (S) яркости содержит два субблока:In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the second set of luminance subblocks (S) comprises two subblocks:

S0 = (xSbIdxL, ySbIdxL) S0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором вывод вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S содержит:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the output of a motion vector for a chroma subblock based on the motion vectors of luminance subblocks in the second set S comprises:

усреднение векторов движения субблоков яркости во втором наборе S.averaging the motion vectors of brightness subblocks in the second set S.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит: In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the averaging of the motion vectors of the luminance subblocks in the second set S comprises:

усреднение горизонтальной составляющей векторов движения субблоков яркости во втором наборе S; и/или averaging the horizontal component of the motion vectors of the brightness subblocks in the second set S; and/or

усреднение вертикальной составляющей векторов движения субблоков яркости во втором наборе S.averaging of the vertical component of the motion vectors of brightness subblocks in the second set S.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение элементов содержит проверку того, является ли сумма элементов (например, больше или равна 0,In a possible implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein averaging the elements comprises checking whether the sum of the elements (e.g. greater than or equal to 0,

в случае, если сумма элементов больше или равна 0, сумма элементов делится операцией сдвига в зависимости от количества элементов;if the sum of the elements is greater than or equal to 0, the sum of the elements is divided by a shift operation depending on the number of elements;

в противном случае абсолютное значение суммы элементов делится с помощью операции сдвига в зависимости от количества элементов, и из сдвинутого результата получается отрицательное значение.otherwise, the absolute value of the sum of the elements is divided by a shift operation depending on the number of elements, and a negative value is obtained from the shifted result.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап разделения посредством операции сдвига содержит:In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the step of dividing by a shift operation comprises:

округление до нуля;round to zero;

округление от нуля;rounding from zero;

округление от бесконечности; илиrounding from infinity; or

округление к бесконечности.rounding to infinity.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит: усреднение или округление от нуля.In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the averaging step comprises: averaging or rounding away from zero.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление до нуля.In a possible implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the averaging step comprises averaging or rounding to zero.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление от бесконечности.In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the averaging step comprises averaging or rounding away from infinity.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление до бесконечности.In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the averaging step comprises averaging or rounding to infinity.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:

mvAvgLX = mvAvgLX =

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),

где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the number 2 is raised to produce the value N, and “>>” is the arithmetic shift to the right

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:

mvAvgLX = mvAvgLX =

если mvAvgLX[ 0 ] больше или равно 0, то if mvAvgLX[ 0 ] is greater than or equal to 0, then

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), otherwise,

mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )

если mvAvgLX[ 1 ] больше или равно 0, то if mvAvgLX[ 1 ] is greater than or equal to 0, then

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), otherwise,

mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),

где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the number 2 is raised to obtain the value N, and “>>” is the arithmetic shift to the right.

В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:

mvAvgLX = если mvAvgLX[ 0 ] больше или равно 0, то mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) если mvAvgLX[ 1 ] больше или равно 0, то mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N) ), mvAvgLX = if mvAvgLX[ 0 ] is greater than or equal to 0, then mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), otherwise, mvAvgLX[ 0 ] = - ( (- mvAvgLX [ 0 ] + (N>>1) - 1) >> log2(N) ) if mvAvgLX[ 1 ] is greater than or equal to 0, then mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1 ) >> log2(N), otherwise, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N) ),

где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the number 2 is raised to obtain the value N, and “>>” is the arithmetic shift to the right.

Согласно третьему аспекту изобретения предоставляется способ аффинной компенсации движения текущей картинки, который содержит:According to a third aspect of the invention, there is provided a method for affine motion compensation of a current picture, which comprises:

разделение блока яркости текущей картинки на набор субблоков яркости одинакового размера, иdividing the brightness block of the current picture into a set of brightness subblocks of the same size, and

разделение блока цветности текущей картинки на набор субблоков цветности одинакового размера, при этом размер субблока цветности устанавливается равным размеру субблока яркости.dividing the chrominance block of the current picture into a set of chrominance subblocks of the same size, with the size of the chrominance subblock set equal to the size of the luminance subblock.

В возможной форме реализации способа согласно третьему аспекту как такового, причем способ дополнительно включает:In a possible form of implementing the method according to the third aspect as such, the method further includes:

определение количества субблоков цветности в горизонтальном и вертикальном направлениях на основе значений коэффициентов масштабирования цветности.determining the number of chroma subblocks in the horizontal and vertical directions based on the values of the chroma scaling factors.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях (SubWidthC и SubHeightC) определяются на основе формата цветности текущей картинки (например, текущее кодирование или декодирование картинки).In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the horizontal and vertical chroma scaling factors (SubWidthC and SubHeightC) are determined based on the chrominance format of the current picture (eg, the current encoding or decoding of the picture).

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в которомIn a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, in which

numCSbX = numSbX >>(SubWidthC-1) andnumCSbX = numSbX >>(SubWidthC-1) and

numCSbY = numSbY >>( SubHeightC -1);numCSbY = numSbY >>( SubHeightC -1);

numCSbX и numCSbY представляют количество субблоков цветности в горизонтальном и вертикальном направлениях соответственно.numCSbX and numCSbY represent the number of chrominance subblocks in the horizontal and vertical directions, respectively.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором разделение блока цветности текущей картинки содержит:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein the chrominance block division of the current picture comprises:

разделение блока цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU) на numCSbY строк, каждая строка имеет numCSbX субблоков цветности.dividing the chroma block of the current picture (in the example, the chroma block and the luma block are contained in the same PU) into numCSbY lines, each line having numCSbX chroma subblocks.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где способ дополнительно включает:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where the method further includes:

для каждого из субблоков цветности определяют набор субблоков (S) яркости, при этом позиции субблоков яркости в наборе определяются форматом цветности текущей картинки; иfor each of the chromaticity subblocks, a set of luminance subblocks (S) is determined, and the positions of the luminance subblocks in the set are determined by the chromaticity format of the current picture; And

выводят вектор движения для субблока цветности на основе векторов движения субблоков яркости в наборе S.outputs a motion vector for the chrominance subblock based on the motion vectors of the luminance subblocks in the set S.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором вектор движения определяется для каждого из субблоков яркости, принадлежащих набору S.In a possible implementation form of the method according to any previous implementation of the third aspect or the third aspect itself, wherein a motion vector is determined for each of the luminance subblocks belonging to the set S.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:In an exemplary form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the set of luminance subblocks (S) comprises any combination of the following subblocks:

S0 = (xSbIdxL, ySbIdxL)S 0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))

S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)

S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор субблоков (S) яркости содержит два субблока:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, in which the set of luminance subblocks (S) contains two subblocks:

S0 = (xSbIdxL, ySbIdxL) S0 = (xSbIdxL, ySbIdxL)

S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором выведение вектора движения для субблока цветности на основе векторов движения субблоков яркости в наборе S включает усреднение векторов движения субблоков яркости в наборе S.In an exemplary form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein deriving a motion vector for a chroma subblock based on the motion vectors of the lumina subblocks in the set S involves averaging the motion vectors of the luminance subblocks in the set S.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит: In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein the averaging of the motion vectors of the luminance subblocks in the set S comprises:

усреднение горизонтальной составляющей векторов движения субблоков яркости в наборе S, averaging of the horizontal component of the motion vectors of brightness subblocks in the set S,

усреднение вертикальной составляющей векторов движения субблоков яркости в наборе S.averaging of the vertical component of the motion vectors of brightness subblocks in the set S.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение элементов включает проверку того, больше ли сумма элементов или равна 0.In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein averaging the elements includes checking whether the sum of the elements is greater than or equal to 0.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение, отличное от нуля.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging other than zero.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение к нулю.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging towards zero.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение от бесконечности.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging from infinity.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение до бесконечности.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging to infinity.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein averaging the motion vectors of the luminance subblocks in the set S comprises the following steps:

mvAvgLX = mvAvgLX =

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),

где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the number 2 is raised to obtain the value N, and “>>” is the arithmetic shift to the right.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein averaging the motion vectors of the luminance subblocks in the set S comprises the following steps:

mvAvgLX = mvAvgLX =

если mvAvgLX[ 0 ] больше или равно 0, тоif mvAvgLX[ 0 ] is greater than or equal to 0, then

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), otherwise,

mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )

если mvAvgLX[ 1 ] больше или равно 0, тоif mvAvgLX[ 1 ] is greater than or equal to 0, then

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), otherwise,

mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ), mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),

где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the number 2 is raised to obtain the value N, and “>>” is the arithmetic shift to the right.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein averaging the motion vectors of the luminance subblocks in the set S comprises the following steps:

mvAvgLX = mvAvgLX =

если mvAvgLX[ 0 ] больше или равно 0, тоif mvAvgLX[ 0 ] is greater than or equal to 0, then

mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), otherwise,

mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) )mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) )

если mvAvgLX[ 1 ] больше или равно 0, тоif mvAvgLX[ 1 ] is greater than or equal to 0, then

mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), otherwise,

mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)),mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)),

где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the number 2 is raised to obtain the value N, and “>>” is the arithmetic shift to the right.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где N равно 1.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where N is 1.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор S определяется на основе значения sps_cclm_colocated_chroma_flag.In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the set S is determined based on the value of sps_cclm_colocated_chroma_flag.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором вывод среднего вектора движения выполняется на основе значения sps_cclm_colocated_chroma_flag.In an exemplary form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the average motion vector is inferred based on the value of sps_cclm_colocated_chroma_flag.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором формат цветности определяется как YUV 4: 2: 2.In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, in which the chroma format is specified as YUV 4:2:2.

В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором блок цветности и блок яркости содержатся в одном и том же PU, а блоки яркости и цветности совмещены.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, in which the chrominance block and the luminance block are contained in the same PU, and the luminance and chrominance blocks are combined.

Четвертый аспект кодера (20), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по третий.A fourth aspect of the encoder (20) comprising processing circuitry for performing a method according to any of the first to third aspects.

Пятый аспект декодера (30), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по третий.A fifth aspect of the decoder (30) comprising processing circuitry for performing a method according to any of the first to third aspects.

Шестой аспект компьютерного программного продукта, содержащий программный код для выполнения способа согласно любому из аспектов с первого по третий.A sixth aspect of a computer program product comprising program code for performing a method according to any of the first to third aspects.

Седьмой аспект декодера, содержащий:The seventh aspect of the decoder, containing:

один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа в соответствии с любым из аспектов с первого по третий.one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform a method in accordance with any of the first to third aspects.

Восьмой аспект кодера, содержащий:The eighth aspect of the encoder, containing:

один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа в соответствии с любым из аспектов с первого по третий.one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures an encoder to perform a method in accordance with any of the first to third aspects.

На основании вышеизложенного настоящее раскрытие направлено на раскрытие способа учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости в зависимости от формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости для генерации вектора движения цветности. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что приводит к техническому результату улучшения характеристик сжатия.Based on the foregoing, the present disclosure is aimed at disclosing a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the luminance motion vectors, a linear subsampling of the luminance motion field is performed. When chroma color planes have the same height as the lumina plane, it makes more sense to select motion vectors from lumina blocks that are horizontally adjacent so that they have the same vertical position. Selecting luminance motion vectors depending on the chroma format of the picture results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chroma format allows the selection of the most appropriate luminance blocks when averaging the luminance motion vectors to generate a chroma motion vector. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which leads to the technical result of improved compression characteristics.

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

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

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по-отдельности.The capture device 3102 generates data and can encode the data using the encoding method shown in the above embodiments. Alternatively, capture device 3102 may distribute the data to a streaming server (not shown in the Figures), and the server encodes the data and transmits the encoded data to terminal device 3106. Capture device 3102 includes, but is not limited to, a camera, smartphone, or tablet. , a computer or laptop, 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 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 distributes the encoded audio data and the encoded video data to the terminal device 3106 separately.

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

Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.For a terminal device with its own display, such as a 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 the device can transmit decoded data to its display. For a non-display terminal device, such as the STB 3116, video conferencing system 3118, or video surveillance system 3120, it communicates with an external display 3126 to receive and display the decoded data.

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

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

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

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

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

Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.If 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 invention 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 automobile system.

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

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

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

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

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

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

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

x && yx && 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

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

< Меньше< Less

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

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

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

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

Битовые операторыBit operators

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

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

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

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

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

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

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

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

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

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

- - Уменьшение, т.е. x- - эквивалентно x=x - 1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.- - Decrease, i.e. x- - 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 value ranging from -π÷2 to π÷2 inclusive, in units of radians.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Round( x ) = Sign( x ) * Floor( Abs( x ) + ) Round( x ) = Sign( x ) * Floor( Abs( x ) + )

Sign( x ) = Sign( x ) =

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

Sqrt( x ) = Sqrt( x ) =

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

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

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

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

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

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

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

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

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

операции (с операндами x, y и z)operations (with operands x, y and z) "x++", "x- -""x++", "x- -" "!x", "-x" (как унарный префиксный оператор)"!x", "-x" (as unary prefix operator) xyxy "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 )

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

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

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

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

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

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

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

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

- …-...

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

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

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

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

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

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

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

мначе определение nOtherwise, the definition of n

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

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

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

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

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

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

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

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

- …-...

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

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

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

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

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

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

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

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

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

Изобретение было описано в связи с различными вариантами осуществления в данном документе. Однако другие варианты раскрытых вариантов осуществления могут быть поняты и осуществлены специалистами в данной области техники при практической реализации заявленного изобретения на основе изучения чертежей, данного раскрытия и прилагаемой формулы изобретения. В формуле изобретения слово «содержащий» не исключает другие элементы или этапы, а упоминание чего-либо в единственном числе, не исключает множественности. Один процессор или другой блок может выполнять функции нескольких элементов, указанных в формуле изобретения. Простой факт, что определенные меры изложены в обычно различных зависимых пунктах формулы изобретения, не означает, что комбинация этих мер не может быть использована с выгодой. Компьютерная программа может храниться/распространяться на подходящем носителе, таком как оптический носитель данных или твердотельный носитель, поставляемый вместе с другим аппаратным обеспечением или как его часть, но также может распространяться в других формах, например, через Интернет или другие системы проводной или беспроводной связи.The invention has been described in connection with various embodiments herein. However, other variations of the disclosed embodiments may be understood and implemented by those skilled in the art in the practice of the claimed invention based on a study of the drawings, this disclosure, and the accompanying claims. In a claim, the word “comprising” does not exclude other elements or steps, and mentioning something in the singular does not exclude the plurality. One processor or other unit can perform the functions of several elements specified in the claims. The mere fact that certain measures are set forth in typically different dependent claims does not mean that a combination of these measures cannot be used to advantage. The computer program may be stored/distributed on a suitable medium, such as an optical storage medium or a solid-state medium provided with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless communications systems.

Специалист в данной области техники поймет, что «блоки» («модули») на различных фигурах (способ и устройство) представляют или описывают функциональные возможности вариантов осуществления изобретения (а не обязательно отдельные «блоки» в аппаратном или программном обеспечении) и таким образом они в равной степени описывают функции или особенности вариантов осуществления устройства, а также варианты осуществления способа (блок=этап).One skilled in the art will understand that the "blocks" ("modules") in the various figures (method and apparatus) represent or describe the functionality of embodiments of the invention (and not necessarily individual "blocks" in hardware or software) and thus they equally describe the functions or features of embodiments of the device as well as embodiments of the method (block=step).

Термин «блок» используется лишь для целей иллюстрации функциональных возможностей вариантов осуществления кодера/декодера и не предназначен для ограничения данного раскрытия.The term “block” is used for purposes of illustrating the functionality of encoder/decoder embodiments only and is not intended to limit this disclosure.

В нескольких вариантах осуществления, представленных в данной заявке, следует понимать, что раскрытые система, аппаратура и способ могут быть реализованы другими способами. Например, описанный вариант осуществления аппаратуры является лишь примерным. Например, разделение на блоки является лишь логическим разделением по функциям, а в фактической реализации может иметь место другое разделение. Например, множество блоков или составляющих могут быть объединены или интегрированы в другую систему, или некоторые признаки могут игнорироваться или не выполняться. Кроме того, показанные или описанные взаимные связи или прямые связи или коммуникационные соединения могут быть реализованы с использованием некоторых интерфейсов. Непрямые связи или коммуникационные соединения между аппаратурами или блоками могут быть реализованы электрическими, механическими или иметь другие формы.In several embodiments presented herein, it should be understood that the disclosed system, apparatus, and method may be implemented in other ways. For example, the hardware embodiment described is merely exemplary. For example, the division into blocks is only a logical division by function, and in the actual implementation there may be a different division. For example, multiple blocks or components may be combined or integrated into another system, or some features may be ignored or not executed. In addition, the mutual connections or direct connections or communication connections shown or described may be implemented using certain interfaces. Indirect connections or communication connections between equipment or units can be electrical, mechanical, or other forms.

Блоки, описанные как отдельные части, могут быть или могут не быть физически отдельными, а части, показанные как блоки, могут быть или могут не быть физическими блоками, могут быть расположены в одном месте или могут быть распределены по множеству сетевых блоков. Некоторые или все блоки могут быть выбраны согласно фактическим требованиям для достижения целей решений в вариантах осуществления.Blocks described as individual pieces may or may not be physically separate, and pieces shown as blocks may or may not be physical blocks, may be located in one location, or may be distributed across multiple network blocks. Some or all of the blocks may be selected according to actual requirements to achieve the objectives of the solutions in the embodiments.

Кроме того, функциональные блоки в вариантах осуществления настоящего изобретения могут быть интегрированы в один блок обработки, или каждый из блоков может существовать физически отдельно, или два или более блоков интегрируются в один блок.Moreover, the functional blocks in embodiments of the present invention may be integrated into a single processing block, or each of the blocks may exist physically separately, or two or more blocks are integrated into a single block.

Варианты осуществления изобретения могут дополнительно включать в себя аппаратуру, например кодер и/или декодер, который содержит схему обработки, выполненную с возможностью выполнения любого из способа и/или процессов, описанных в данном документе.Embodiments of the invention may further include hardware, such as an encoder and/or decoder, that includes processing circuitry configured to perform any of the methods and/or processes described herein.

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

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

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

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

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

Claims (135)

1. Способ получения вектора движения цветности, используемый в аффинном внешнем предсказании блока текущей картинки, содержащего блок яркости и совместно расположенный блок цветности, причем способ содержит1. A method for obtaining a chrominance motion vector used in affine external prediction of a block of a current picture containing a luminance block and a co-located chrominance block, the method comprising определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;determining chrominance scaling factors in the horizontal and vertical directions based on the chrominance format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the block of the current picture belongs; определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; иdetermining a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; And определение вектора движения цветности для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости;determining a chroma motion vector for a chroma subblock of the chrominance block based on the motion vectors of one or more luminance subblocks in the set (S) of luminance subblocks; когда SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит субблок яркости, индексированный какwhen SubWidthC and SubHeightC are 1, the luminance subblock set (S) contains a luminance subblock indexed as S0 = (xSbIdx, ySbIdx);S 0 = (xSbIdx, ySbIdx); когда по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит: первый субблок яркости, индексированный какwhen at least one of SubWidthC and SubHeightC is not equal to 1, the luma subblock set (S) contains: the first luma subblock, indexed as S0=((xSbIdx  >>  (SubWidthC − 1)  <<  (SubWidthC − 1)), (ySbIdx  >>  (SubHeightC − 1)  <<  (SubHeightC − 1))), и второй субблок яркости, индексированный какS 0 =((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))), and the second brightness subblock indexed as S1=((xSbIdx  >>  (SubWidthC − 1)  <<  (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx  >>  (SubHeightC − 1)  <<  (SubHeightC − 1)) + (SubHeightC − 1)),S 1 =((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1 )), где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; where SubWidthC and SubHeightC represent chroma scaling factors in the horizontal and vertical directions, respectively; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S);xSbIdx and ySbIdx represent the sub-block index in the horizontal direction and the sub-block index in the vertical direction, respectively, for the luma sub-block in the set (S); «<<» представляет собой арифметический сдвиг влево;"<<" represents an arithmetic left shift; «>>» представляет собой арифметический сдвиг вправо;">>" represents an arithmetic right shift; xSbIdx = 0...numSbX - 1 и ySbIdx = 0...numSbY - 1; xSbIdx = 0...numSbX - 1 and ySbIdx = 0...numSbY - 1; numSbX указывает количество субблоков яркости в блоке яркости в горизонтальном направлении; иnumSbX indicates the number of luma subblocks in the luma block in the horizontal direction; And numSbY указывает количество субблоков яркости в блоке яркости в вертикальном направлении.numSbY indicates the number of luminance subblocks in a luminance block in the vertical direction. 2. Способ по п. 1, в котором каждый из одного или нескольких субблоков яркости в наборе (S) представлен индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.2. The method of claim 1, wherein each of the one or more luminance subblocks in the set (S) is represented by a subblock index in the horizontal direction and a subblock index in the vertical direction. 3. Способ по п. 1 или 2, в котором количество субблоков цветности в блоке цветности в горизонтальном направлении и вертикальном направлении совпадает с количеством субблоков яркости в блоке яркости в горизонтальном и вертикальном направлениях соответственно.3. The method according to claim 1 or 2, wherein the number of chrominance subblocks in the chrominance block in the horizontal direction and the vertical direction is the same as the number of luminance subblocks in the luminance block in the horizontal and vertical directions, respectively. 4. Способ по любому из пп. 1-3, в котором для субблока цветности, индексированного индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении, набор субблоков (S) яркости содержит один или несколько субблоков, индексированных как:4. Method according to any one of paragraphs. 1-3, wherein for a chrominance subblock indexed by subblock index xSbIdxL in the horizontal direction and subblock index ySbIdxL in the vertical direction, the luminance subblock set (S) contains one or more subblocks indexed as: S0 = (xSbIdxL, ySbIdxL),S 0 = (xSbIdxL, ySbIdxL), S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1)),S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1)), S2 = (xSbIdxL + (SubWidthC-1), ySbIdxL), илиS 2 = (xSbIdxL + (SubWidthC-1), ySbIdxL), or S3 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1));S 3 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)); при этом индекс S0 субблока яркости представлен индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;in this case the index S0 The luminance subblock is represented by the index xSbIdxL of the subblock in the horizontal direction and index ySbIdxL of the subblock in the vertical direction; индекс S1 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1);index S1 brightness block is presented subblock index in the horizontal direction xSbIdxL and subblock index in the vertical direction ySbIdxL + (SubHeightC-1); индекс S2 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL; иindex S2 brightness block presented subblock index in the horizontal direction xSbIdxL + (SubWidthC-1) and subblock index in the vertical direction ySbIdxL; And индекс S3 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).index S3 brightness block is presented subblock index in the horizontal direction xSbIdxL + (SubWidthC-1) and subblock index in the vertical direction ySbIdxL + (SubHeightC-1). 5. Способ по любому из пп. 1-4, в котором набор субблоков (S) яркости содержит:5. Method according to any one of paragraphs. 1-4, in which the set of luminance subblocks (S) contains: первый субблок яркости, индексированный как S0 = (xSbIdxL, ySbIdxL), и второй субблок яркости, индексированный как S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1));the first luminance subblock indexed as S 0 = (xSbIdxL, ySbIdxL), and the second luminance subblock indexed as S 1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)); при этом позиция S0 блока яркости представлена индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;in this case the position S0 brightness block represented by the subblock index xSbIdxL in the horizontal direction and the subblock index ySbIdxL in the vertical direction; позиция S1 блока яркости представлена индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).position S1 brightness block is presented subblock index in the horizontal direction xSbIdxL + (SubWidthC-1) and subblock index in the vertical direction ySbIdxL + (SubHeightC-1). 6. Способ по любому из пп. 1-5, в котором: 6. Method according to any one of paragraphs. 1-5, in which: когда форматом цветности является 4:4:4, набор (S) содержит один субблок яркости, совмещенный с субблоком цветности;when the chroma format is 4:4:4, set (S) contains one luma subblock combined with a chroma subblock; когда форматом цветности является 4:2:2, набор (S) содержит два субблока яркости, горизонтально смежные друг с другом;when the chroma format is 4:2:2, set (S) contains two luminance subblocks horizontally adjacent to each other; когда форматом цветности является 4:2:0, набор (S) содержит два субблока яркости, которые диагональны.when the chroma format is 4:2:0, set (S) contains two luminance subblocks that are diagonal. 7. Способ по любому из пп. 1-6, в котором, когда имеется более одного субблока яркости в наборе (S), упомянутое определение вектора движения для субблока цветности на основе вектора движения одного или нескольких субблоков яркости в наборе (S) субблоков яркости содержит:7. Method according to any one of paragraphs. 1-6, wherein when there is more than one luminance sub-block in the set (S), said determination of a motion vector for a chroma sub-block based on the motion vector of one or more luminance sub-blocks in the set (S) of luminance sub-blocks comprises: усреднение векторов движения субблоков яркости в наборе (S), чтобы сгенерировать усредненный вектор движения яркости; иaveraging the motion vectors of the luminance subblocks in the set (S) to generate an average luminance motion vector; And получение вектора движения для субблока цветности на основе усредненного вектора движения яркости.obtaining a motion vector for the chrominance subblock based on the average luminance motion vector. 8. Способ по п. 7, в котором усреднение векторов движения субблоков яркости в наборе (S) содержит одно или несколько из: 8. The method of claim 7, wherein the averaging of the motion vectors of the luminance subblocks in the set (S) comprises one or more of: усреднения горизонтальной составляющей векторов движения субблоков яркости в наборе (S); иaveraging the horizontal component of the motion vectors of brightness subblocks in the set (S); And усреднения вертикальной составляющей векторов движения субблоков яркости в наборе (S).averaging the vertical component of the motion vectors of brightness subblocks in the set (S). 9. Способ по п. 7 или 8, в котором усреднение векторов движения субблоков яркости в наборе (S) для генерации усредненного вектора движения яркости содержит:9. The method of claim 7 or 8, wherein averaging the motion vectors of the luminance subblocks in the set (S) to generate an average luminance motion vector comprises: mvAvgLX = ,mvAvgLX = , когда mvAvgLX[0] больше или равно 0, mvAvgLX[0] = (mvAvgLX[0] + (N>>1) – 1) >> log2(N), иначеwhen mvAvgLX[0] is greater than or equal to 0, mvAvgLX[0] = (mvAvgLX[0] + (N>>1) - 1) >> log2(N), otherwise mvAvgLX[0] = −((−mvAvgLX[0] + (N>>1) – 1) >> log2(N));mvAvgLX[0] = −((−mvAvgLX[0] + (N>>1) - 1) >> log2(N)); когда mvAvgLX[1] больше или равно 0, mvAvgLX[1] = (mvAvgLX[1] + (N>>1) – 1) >> log2(N), иначеwhen mvAvgLX[1] is greater than or equal to 0, mvAvgLX[1] = (mvAvgLX[1] + (N>>1) - 1) >> log2(N), otherwise mvAvgLX[1] = −((−mvAvgLX[1] + (N>>1) – 1) >> log2(N)), причемmvAvgLX[1] = −((−mvAvgLX[1] + (N>>1) - 1) >> log2(N)), and mvAvgLX - результирующий вектор движения усреднения;mvAvgLX - the resulting averaging motion vector; mvAvgLX[0] - горизонтальная составляющая результирующего вектора mvAvgLX движения и mvAvgLX[0] - horizontal component of the resulting motion vector mvAvgLX and mvAvgLX[1] - вертикальная составляющая результирующего вектора mvAvgLX движения;mvAvgLX[1] - vertical component of the resulting motion vector mvAvgLX; и - горизонтальный и вертикальный индексы субблока Si в наборе субблоков (S) яркости в массиве векторов движения, And - horizontal and vertical indices of the subblock S i in the set of brightness subblocks (S) in the array of motion vectors, - вектор движения субблока яркости с индексами и , N - количество элементов в наборе (S) субблока яркости, log2(N) - представляет собой логарифм N c основанием 2 и является степенью, в которую возводится число 2 для получения значения N, и «>>» - это арифметический сдвиг вправо. - motion vector of the brightness subblock with indices And , N is the number of elements in the set (S) of the luma subblock, log2(N) is the base-2 logarithm of N and is the power to which the number 2 is raised to obtain the value of N, and ">>" is the arithmetic shift to the right. 10. Способ по любому из пп. 7-9, в котором усреднение векторов движения субблоков яркости в наборе (S) содержит:10. Method according to any one of paragraphs. 7-9, in which the averaging of the motion vectors of luminance subblocks in the set (S) contains: mvAvgLX = mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1))] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))] + mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1)] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)],mvAvgLX = mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1))] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))] + mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1)] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)], если mvAvgLX[0] ≥0, тоif mvAvgLX[0] ≥0, then mvAvgLX[0] = (mvAvgLX[0] + 1 –(mvAvgLX[0] >= 0)) >> 1,mvAvgLX[0] = (mvAvgLX[0] + 1 –(mvAvgLX[0] >= 0)) >> 1, если mvAvgLX[1] ≥ 0, то if mvAvgLX[1] ≥ 0, then mvAvgLX[1] = (mvAvgLX[1] + 1 –(mvAvgLX[1] >= 0)) >> 1,mvAvgLX[1] = (mvAvgLX[1] + 1 –(mvAvgLX[1] >= 0)) >> 1, причем mvAvgLX[0] - горизонтальная составляющая усредненного вектора движения mvAvgLX, mvAvgLX[1] - вертикальная составляющая усредненного вектора движения mvAvgLX; где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S), «<<» - это арифметический сдвиг влево, а «>>» - арифметический сдвиг вправо. wherein mvAvgLX[0] is the horizontal component of the averaged motion vector mvAvgLX, mvAvgLX[1] is the vertical component of the averaged motion vector mvAvgLX; where SubWidthC and SubHeightC represent chroma scaling factors in the horizontal and vertical directions, respectively; xSbIdx and ySbIdx represent the subblock index in the horizontal direction and the subblock index in the vertical direction, respectively, for the luminance subblock in the set (S), "<<" is the arithmetic left shift, and ">>" is the arithmetic right shift. 11. Способ по любому из пп. 1-10, в котором упомянутое определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности содержит: 11. Method according to any one of paragraphs. 1-10, wherein said determination of chroma scaling factors in the horizontal and vertical directions based on chroma format information comprises: определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе сопоставления между информацией формата цветности и парой коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях.determining horizontal and vertical chroma scaling factors based on a mapping between the chroma format information and a pair of horizontal and vertical chroma scaling factors. 12. Способ по любому из пп. 1-11, дополнительно содержащий генерирование предсказания субблока цветности на основе упомянутого определенного вектора движения.12. Method according to any one of paragraphs. 1-11, further comprising generating a chroma subblock prediction based on said determined motion vector. 13. Способ по любому из пп. 1-12, в котором формат цветности содержит один из формата YUV 4:2:2, формата YUV 4:2:0 или формата YUV 4:4:4.13. Method according to any one of paragraphs. 1-12, wherein the chroma format comprises one of a YUV 4:2:2 format, a YUV 4:2:0 format, or a YUV 4:4:4 format. 14. Способ по любому из пп. 1-13, реализуемый устройством кодирования.14. Method according to any one of paragraphs. 1-13, implemented by the encoding device. 15. Способ по любому из пп. 1-13, реализуемый устройством декодирования.15. Method according to any one of paragraphs. 1-13, implemented by a decoding device. 16. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп. 1-14.16. An encoder (20) containing a processing circuit for performing the method according to any one of claims. 1-14. 17. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-13 и 15.17. A decoder (30) comprising a processing circuit for performing the method according to any one of claims. 1-13 and 15. 18. Декодер, содержащий:18. Decoder containing: один или более процессоров; иone or more processors; And энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для исполнения процессорами, причем программа, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-13 и 15.a non-volatile computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform the method of any one of claims. 1-13 and 15. 19. Кодер, содержащий:19. Encoder containing: один или более процессоров; иone or more processors; And энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для исполнения процессорами, причем программа, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-14.a non-volatile computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform the method of any one of claims. 1-14. 20. Энергонезависимый машиночитаемый носитель данных, несущий программный код, который при исполнении компьютерным устройством заставляет компьютерное устройство выполнять способ по любому из пп. 1-15.20. A non-transitory computer-readable storage medium carrying program code that, when executed by a computer device, causes the computer device to perform the method of any one of claims. 1-15. 21. Устройство для аффинного внешнего предсказания блока текущей картинки, содержащего совместно расположенные блоки яркости и цветности, причем устройство содержит:21. A device for affine external prediction of a block of a current picture containing co-located brightness and chrominance blocks, wherein the device contains: модуль определения, выполненный с возможностью определять коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки, и определять набор (S) субблоков яркости упомянутого блока яркости на основе значений коэффициентов масштабирования цветности; иa determination module configured to determine chromaticity scaling factors in the horizontal and vertical directions based on chrominance format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the current picture block belongs, and determine a set (S) of luminance sub-blocks of said luminance block on based on chroma scaling factor values; And модуль вывода вектора движения, выполненный с возможностью определять вектор движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости;a motion vector output module configured to determine a motion vector for a chrominance subblock of a chrominance block based on motion vectors of one or more luminance subblocks in the luminance subblock set (S); причем: and: когда SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит субблок яркости, индексированный какwhen SubWidthC and SubHeightC are 1, the luminance subblock set (S) contains a luminance subblock indexed as S0 = (xSbIdx, ySbIdx);S 0 = (xSbIdx , ySbIdx); когда по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит: первый субблок яркости, индексированный какwhen at least one of SubWidthC and SubHeightC is not equal to 1, the luma subblock set (S) contains: the first luma subblock, indexed as S0 = ((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))), и второй субблок яркости, индексированный какS 0 = ((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))), and the second brightness subblock indexed as S1=((xSbIdx  >>  (SubWidthC − 1)  <<  (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx  >>  (SubHeightC − 1)  <<  (SubHeightC − 1)) + (SubHeightC − 1)),S 1 =((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1 )), где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно;where SubWidthC and SubHeightC represent chroma scaling factors in the horizontal and vertical directions, respectively; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S);xSbIdx and ySbIdx represent the sub-block index in the horizontal direction and the sub-block index in the vertical direction, respectively, for the luma sub-block in the set (S); «<<» представляет собой арифметический сдвиг влево;"<<" represents an arithmetic left shift; «>>» представляет собой арифметический сдвиг вправо;">>" represents an arithmetic right shift; xSbIdx = 0...numSbX - 1 и ySbIdx = 0...numSbY - 1;xSbIdx = 0...numSbX - 1 and ySbIdx = 0...numSbY - 1; numSbX указывает количество субблоков яркости в блоке яркости в горизонтальном направлении; иnumSbX indicates the number of luma subblocks in the luma block in the horizontal direction; And numSbY указывает количество субблоков яркости в блоке яркости в вертикальном направлении.numSbY indicates the number of luminance subblocks in a luminance block in the vertical direction. 22. Устройство по п. 21, при этом каждый из одного или более субблоков яркости в наборе (S) представлен индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.22. The apparatus of claim 21, wherein each of the one or more luminance subblocks in the set (S) is represented by a subblock index in the horizontal direction and a subblock index in the vertical direction. 23. Устройство по п. 22, при этом количество субблоков цветности в блоке цветности в горизонтальном направлении и вертикальном направлении совпадает с количеством субблоков яркости в блоке яркости в горизонтальном и вертикальном направлениях соответственно.23. The device according to claim 22, wherein the number of chrominance subblocks in the chrominance block in the horizontal direction and vertical direction coincides with the number of luminance subblocks in the luminance block in the horizontal and vertical directions, respectively. 24. Устройство по любому из пп. 21-23, при этом для субблока цветности, индексированного индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении, набор субблоков (S) яркости содержит один или несколько индексированных субблоков:24. The device according to any one of paragraphs. 21-23, wherein for a chrominance subblock indexed by subblock index xSbIdxL in the horizontal direction and subblock index ySbIdxL in the vertical direction, the luminance subblock set (S) contains one or more indexed subblocks: S0 = (xSbIdxL, ySbIdxL), S 0 = (xSbIdxL, ySbIdxL), S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1)),S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1)), S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL) илиS 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL) or S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1));S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1)); при этом индекс S0 субблока яркости представлен индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;wherein the luminance subblock index S 0 is represented by the subblock index xSbIdxL in the horizontal direction and the subblock index ySbIdxL in the vertical direction; индекс S1 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1);index S1 brightness block represented by a subblock index in the horizontal direction xSbIdxL and a subblock index in the vertical direction ySbIdxL + (SubHeightC-1); индекс S2 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL; иindex S2 brightness block is presented subblock index in the horizontal direction xSbIdxL + (SubWidthC-1) and subblock index in the vertical direction ySbIdxL; And индекс S3 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).index S3 brightness block presented subblock index in the horizontal direction xSbIdxL + (SubWidthC-1) and subblock index in the vertical direction ySbIdxL + (SubHeightC-1). 25. Устройство по любому из пп. 21-24, при этом набор субблоков (S) яркости содержит:25. The device according to any one of paragraphs. 21-24, wherein the set of brightness subblocks (S) contains: первый субблок яркости, индексированный как S0 = (xSbIdxL, ySbIdxL), и второй субблок яркости, индексированный как S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1));the first luminance subblock indexed as S 0 = (xSbIdxL, ySbIdxL), and the second luminance subblock indexed as S 1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)); при этом позиция S0 блока яркости представлена индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;in this case the position S0 block brightness is represented by the subblock index xSbIdxL in the horizontal direction and the subblock index ySbIdxL in the vertical direction; позиция S1 блока яркости представлена индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).position S1 brightness block is presented subblock index in the horizontal direction xSbIdxL + (SubWidthC-1) and subblock index in the vertical direction ySbIdxL + (SubHeightC-1). 26. Устройство по любому из пп. 21-25, при этом: 26. The device according to any one of paragraphs. 21-25, with: когда форматом цветности является 4:4:4, набор (S) содержит один субблок яркости, совмещенный с субблоком цветности;when the chroma format is 4:4:4, set (S) contains one luma subblock combined with a chroma subblock; когда форматом цветности является 4:2:2, набор (S) содержит два субблока яркости, горизонтально смежные друг с другом;when the chroma format is 4:2:2, set (S) contains two luminance subblocks horizontally adjacent to each other; когда форматом цветности является 4:2:0 набор (S) содержит два субблока яркости, которые диагональны.when the chroma format is 4:2:0, the (S) set contains two luminance subblocks that are diagonal. 27. Устройство по любому из пп. 21-26, при этом, когда имеется более одного субблока яркости в наборе (S), модуль вывода вектора движения сконфигурирован для:27. The device according to any one of paragraphs. 21-26, wherein when there is more than one luminance sub-block in the set (S), the motion vector output module is configured to: усреднения векторов движения субблоков яркости в наборе (S), чтобы сгенерировать усредненный вектор движения яркости; иaveraging the motion vectors of the luminance subblocks in the set (S) to generate an average luminance motion vector; And получения вектора движения для субблока цветности на основе усредненного вектора движения яркости.obtaining a motion vector for the chrominance subblock based on the average luminance motion vector. 28. Устройство по п. 27, в котором модуль вывода вектора движения сконфигурирован для: 28. The apparatus of claim 27, wherein the motion vector output module is configured to: усреднения горизонтальной составляющей векторов движения субблоков яркости в наборе (S); или averaging the horizontal component of the motion vectors of brightness subblocks in the set (S); or усреднения вертикальной составляющей векторов движения субблоков яркости в наборе (S).averaging the vertical component of the motion vectors of brightness subblocks in the set (S). 29. Устройство по п. 27 или 28, в котором модуль вывода вектора движения сконфигурирован для усреднения векторов движения субблоков яркости в наборе (S) для генерирования усредненного вектора движения яркости следующим образом:29. The apparatus of claim 27 or 28, wherein the motion vector output module is configured to average the motion vectors of the luminance subblocks in the set (S) to generate an average luminance motion vector as follows: mvAvgLX = ,mvAvgLX = , когда mvAvgLX[0] больше или равно 0, mvAvgLX[0] = (mvAvgLX[0] + (N>>1) – 1) >> log2(N), иначеwhen mvAvgLX[0] is greater than or equal to 0, mvAvgLX[0] = (mvAvgLX[0] + (N>>1) - 1) >> log2(N), otherwise mvAvgLX[0] = − ((−mvAvgLX[0] + (N>>1) – 1) >> log2(N) );mvAvgLX[0] = − ((−mvAvgLX[0] + (N>>1) - 1) >> log2(N) ); когда mvAvgLX[1] больше или равно 0, mvAvgLX[1] = (mvAvgLX[1] + (N>>1) – 1) >> log2(N), иначеwhen mvAvgLX[1] is greater than or equal to 0, mvAvgLX[1] = (mvAvgLX[1] + (N>>1) - 1) >> log2(N), otherwise mvAvgLX[1] = −((−mvAvgLX[1] + (N>>1) – 1) >> log2(N) ),mvAvgLX[1] = −((−mvAvgLX[1] + (N>>1) - 1) >> log2(N) ), где mvAvgLX - результирующий вектор движения усреднения; where mvAvgLX is the resulting averaging motion vector; mvAvgLX[0] - горизонтальная составляющая результирующего вектора mvAvgLX движения, а mvAvgLX[1] - вертикальная составляющая результирующего вектора mvAvgLX движения;mvAvgLX[0] is the horizontal component of the resulting mvAvgLX motion vector, and mvAvgLX[1] is the vertical component of the resulting mvAvgLX motion vector; и - горизонтальные и вертикальные индексы субблока Si в наборе субблоков (S) яркости в массиве векторов движения, And - horizontal and vertical indices of the subblock S i in the set of brightness subblocks (S) in the array of motion vectors, - вектор движения субблока яркости с индексами и , N - количество элементов в наборе (S) субблоков яркости, log2(N) представляет собой логарифм N по основанию 2 и представляет собой степень, в которую должно быть возведено число 2 для получения значения N, а «>>» представляет собой арифметический сдвиг вправо. - motion vector of the brightness subblock with indices And , N is the number of elements in the set (S) of luma subblocks, log2(N) is the logarithm of N to base 2 and represents the power to which the number 2 must be raised to obtain the value of N, and ">>" represents the arithmetic shift to the right. 30. Устройство по любому из пп. 27-29, в котором модуль вывода вектора движения сконфигурирован для усреднения векторов движения субблоков яркости в наборе (S) для генерирования усредненного вектора движения яркости следующим образом:30. The device according to any one of paragraphs. 27-29, wherein the motion vector output module is configured to average the motion vectors of the luminance subblocks in the set (S) to generate an average luminance motion vector as follows: mvAvgLX = mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1))] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))] + mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1)] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)],mvAvgLX = mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1))] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))] + mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1)] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)], если mvAvgLX[0] ≥0, тогдаif mvAvgLX[0] ≥0, then mvAvgLX[0] = (mvAvgLX[0] + 1 –(mvAvgLX[0] >= 0)) >> 1,mvAvgLX[0] = (mvAvgLX[0] + 1 –(mvAvgLX[0] >= 0)) >> 1, если mvAvgLX[1] ≥0, тогдаif mvAvgLX[1] ≥0, then mvAvgLX[1] = (mvAvgLX[1] + 1 –(mvAvgLX[1] >= 0)) >> 1,mvAvgLX[1] = (mvAvgLX[1] + 1 –(mvAvgLX[1] >= 0)) >> 1, где mvAvgLX[0] - горизонтальная составляющая усредненного вектора движения mvAvgLX, mvAvgLX[1] - вертикальная составляющая усредненного вектора движения mvAvgLX; где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S), «<<» - это арифметический сдвиг влево, а «>>» - арифметический сдвиг вправо. where mvAvgLX[0] is the horizontal component of the averaged motion vector mvAvgLX, mvAvgLX[1] is the vertical component of the averaged motion vector mvAvgLX; where SubWidthC and SubHeightC represent chroma scaling factors in the horizontal and vertical directions, respectively; xSbIdx and ySbIdx represent the subblock index in the horizontal direction and the subblock index in the vertical direction, respectively, for the luminance subblock in the set (S), "<<" is the arithmetic left shift, and ">>" is the arithmetic right shift. 31. Устройство по любому из пп. 21-30, в котором модуль определения сконфигурирован для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе сопоставления между информацией формата цветности и парой коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях.31. The device according to any one of paragraphs. 21-30, wherein the determination module is configured to determine chroma scaling factors in the horizontal and vertical directions based on a mapping between the chrominance format information and a pair of chroma scaling factors in the horizontal and vertical directions. 32. Устройство по любому из пп. 21-31, дополнительно содержащее модуль компенсации движения, сконфигурированный для генерирования предсказания субблока цветности на основании определенного вектора движения.32. The device according to any one of paragraphs. 21-31, further comprising a motion compensation module configured to generate a chrominance subblock prediction based on the determined motion vector. 33. Устройство по любому из пп. 21-32, при этом формат цветности содержит один из формата YUV 4:2:2, формата YUV 4:2:0 и формата YUV 4:4:4.33. The device according to any one of paragraphs. 21-32, wherein the chroma format comprises one of YUV 4:2:2 format, YUV 4:2:0 format and YUV 4:4:4 format.
RU2021127615A 2019-02-22 2020-02-24 Method and apparatus for affine external prediction of chroma subunits RU2816202C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US62/809,551 2019-02-22
US62/823,653 2019-03-25
US62/824,302 2019-03-26

Publications (2)

Publication Number Publication Date
RU2021127615A RU2021127615A (en) 2023-03-22
RU2816202C2 true RU2816202C2 (en) 2024-03-27

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170105014A1 (en) * 2015-10-08 2017-04-13 Qualcomm Incorporated Luma-driven chroma scaling for high dynamic range and wide color gamut contents
US9743091B2 (en) * 2012-12-17 2017-08-22 Lg Electronics Inc. Method for encoding/decoding image, and device using same
WO2017143467A1 (en) * 2016-02-22 2017-08-31 Mediatek Singapore Pte. Ltd. Localized luma mode prediction inheritance for chroma coding
US20170374384A1 (en) * 2015-01-14 2017-12-28 Vid Scale, Inc. Palette coding for non-4:4:4 screen content video
RU2654525C1 (en) * 2011-06-28 2018-05-21 Самсунг Электроникс Ко., Лтд. Method for image interpolation using asymmetric interpolation filter and device therefor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2654525C1 (en) * 2011-06-28 2018-05-21 Самсунг Электроникс Ко., Лтд. Method for image interpolation using asymmetric interpolation filter and device therefor
US9743091B2 (en) * 2012-12-17 2017-08-22 Lg Electronics Inc. Method for encoding/decoding image, and device using same
US20170374384A1 (en) * 2015-01-14 2017-12-28 Vid Scale, Inc. Palette coding for non-4:4:4 screen content video
US20170105014A1 (en) * 2015-10-08 2017-04-13 Qualcomm Incorporated Luma-driven chroma scaling for high dynamic range and wide color gamut contents
WO2017143467A1 (en) * 2016-02-22 2017-08-31 Mediatek Singapore Pte. Ltd. Localized luma mode prediction inheritance for chroma coding

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Anish Tamse et al, "Proposed WD for CE2-related: MV Derivation for Affine Chroma", JVET- M0192_WD, 13th Meeting: Marrakech, January 2019. *
Yi-Wen Chen et al, "CE2-related: Affine mode modifications", JVET- M0228, 13th Meeting: Marrakech, January 2019. *

Similar Documents

Publication Publication Date Title
EP4340367A2 (en) An encoder, a decoder and corresponding methods of intra prediction
JP7332703B2 (en) Method and apparatus for affine-based inter-prediction of chroma sub-blocks
JP7391991B2 (en) Method and apparatus for intra-smoothing
JP7314300B2 (en) Method and apparatus for intra prediction
AU2020318106B2 (en) An encoder, a decoder and corresponding methods related to intra prediction mode
CN113545063A (en) Method and apparatus for intra prediction using linear model
JP2023126795A (en) Method and apparatus for chroma intra prediction in video coding
JP2023100701A (en) Encoder, decoder and corresponding methods using intra mode coding for intra prediction
CN113228632B (en) Encoder, decoder, and corresponding methods for local illumination compensation
RU2816202C2 (en) Method and apparatus for affine external prediction of chroma subunits
RU2814812C2 (en) Deriving chroma sample weight for geometric separation mode
CN114830652A (en) Method and apparatus for reference sample interpolation filtering for directional intra prediction