RU2811460C2 - Virtual buffer for prediction when coding video in intra-frame block copying mode - Google Patents

Virtual buffer for prediction when coding video in intra-frame block copying mode Download PDF

Info

Publication number
RU2811460C2
RU2811460C2 RU2021139676A RU2021139676A RU2811460C2 RU 2811460 C2 RU2811460 C2 RU 2811460C2 RU 2021139676 A RU2021139676 A RU 2021139676A RU 2021139676 A RU2021139676 A RU 2021139676A RU 2811460 C2 RU2811460 C2 RU 2811460C2
Authority
RU
Russia
Prior art keywords
block
buffer
size
current
current video
Prior art date
Application number
RU2021139676A
Other languages
Russian (ru)
Other versions
RU2021139676A (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 RU2021139676A publication Critical patent/RU2021139676A/en
Application granted granted Critical
Publication of RU2811460C2 publication Critical patent/RU2811460C2/en

Links

Abstract

FIELD: image coding and decoding.
SUBSTANCE: invention is aimed at increasing the efficiency of image encoding/decoding. This result is achieved by performing a conversion between the current video block of the current visual media image and the representation of the visual media data as a stream of data bits. The transformation is based on a reference region from the current image containing reference samples to form a predicted block for the current video block. A virtual buffer of a given size is used to track the availability of reference samples to obtain a predicted block.
EFFECT: increasing the efficiency of image encoding/decoding.
13 cl, 22 dwg, 2 tbl

Description

Настоящий патентный документ относится к технологиям, устройствам и системам для кодирования и декодирования видео.This patent document relates to technologies, devices and systems for video encoding and decoding.

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

Несмотря на все достижения в области сжатия видео, цифровое видео занимает наибольшую долю полосы частот в сети Интернет и в других цифровых сетях связи. Поскольку число присоединенных пользовательских устройств, способных принимать и представлять видео на дисплее, увеличивается, ожидается, что потребности в полосе для использования цифровым видео будут продолжать расти.Despite all the advances in video compression, digital video occupies the largest share of bandwidth on the Internet and other digital communications networks. As the number of connected user devices capable of receiving and presenting video on a display increases, bandwidth requirements for digital video use are expected to continue to grow.

Раскрытие сущности изобретения Disclosure of the invention

Настоящий документ описывает различные варианты и способы управления буфером и кодирования с использованием блочного вектора для режима внутрикадрового копирования блоков при декодировании и кодировании видео и изображений.This document describes various options and methods for buffer management and block vector encoding for intra-frame block copy mode in video and image decoding and encoding.

Согласно одному примерному аспекту предложен способ обработки визуальных медиаданных. Способ содержит этапы, на которых определяют, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением текущего видеоблока в виде потока битов данных, блочный вектор (BVx,BVy), причем действительность блочного вектора (BVx, BVy) не зависит от (1) позиции (P, Q) блока отсчетов, и/или от того (2), реконструирован ли отсчет в позиции (P,Q), и/или от (3) позиции текущего видеоблока, при этом блочный вектор (BVx, BVy) представляет смещение пикселей между текущим видеоблоком и указанным блоком отсчетов; и выполняют, с использованием блочного вектора, преобразование в режиме внутрикадрового копирования блоков на основе реконструированного блока, расположенного в той же видеообласти, что и текущий видеоблок, содержащий опорные отсчеты, используемые для определения прогнозируемого блока для текущего видеоблока, при этом в процессе преобразования прогнозируемый отсчет в позиции (A, B) из опорных отсчетов в буфере определяется по меньшей мере в соответствии с размером буфера и/или блочным вектором (BVx, BVy).In one exemplary aspect, a method for processing visual media data is provided. The method comprises the steps of determining, for conversion between the current video block of the current visual media image and the data bit stream representation of the current video block, a block vector (BVx,BVy), wherein the validity of the block vector (BVx, BVy) is independent of (1) position (P, Q) of the sample block, and/or on (2) whether the sample is reconstructed at position (P,Q), and/or on (3) the position of the current video block, wherein the block vector (BVx, BVy) represents pixel displacement between the current video block and the specified block of samples; and performing, using the block vector, an intra-frame block copy transformation based on a reconstructed block located in the same video area as the current video block containing reference samples used to determine a predicted block for the current video block, wherein in the process of transformation the predicted sample at position (A, B) from the reference samples in the buffer is determined according to at least the buffer size and/or the block vector (BVx, BVy).

Согласно другому примерному аспекту предложен другой способ обработки визуальных медиаданных. Способ содержит этапы, на которых определяют, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением визуальных медиаданных в виде потока битов данных, является ли блочный вектор (BVx, BVy), соответствующий текущему видеоблоку, действительным в соответствии с некоторым правилом, причем блочный вектор (BVx, BVy) представляет смещение пикселей между текущим видеоблоком и блоком отсчетов; и выполняют, с использованием блочного вектора, преобразование на основе опорной области из текущего изображения, содержащей опорные отсчеты, используемые для определения прогнозируемого блока для текущего видеоблока, причем указанное правило определяет, что блочный вектор (BVx, BVy) действителен в случае, когда (1) один или более отсчетов из блока отсчетов находятся вне текущего изображения, и/или (2) один или более отсчетов из блока отсчетов находятся по меньшей мере вне одной единицы дерева кодирования (CTU), ассоциированной с текущим видеоблоком, и/или (3) один или более отсчетов из блока отсчетов не удалось реконструироватьAccording to another exemplary aspect, another method for processing visual media data is provided. The method comprises determining, for conversion between a current video block of a current visual media image and a representation of the visual media data as a stream of data bits, whether a block vector (BVx, BVy) corresponding to the current video block is valid in accordance with some rule, wherein the block vector the vector (BVx, BVy) represents the pixel offset between the current video block and the sample block; and performing, using the block vector, a transformation based on a reference region from the current image containing reference samples used to determine a prediction block for the current video block, said rule specifying that the block vector (BVx, BVy) is valid when (1 ) one or more samples from the sample block are outside the current picture, and/or (2) one or more samples from the sample block are outside at least one coding tree unit (CTU) associated with the current video block, and/or (3) one or more samples from the block of samples could not be reconstructed

Согласно еще одному примерному аспекту предложен другой способ обработки визуальных медиаданных. Способ содержит этап, на котором выполняют преобразование между текущим видеоблоком текущего изображения визуальных медиаданных и представлением визуальных медиаданных в виде потока битов данных, причем преобразование выполняется на основе опорной области из текущего изображения, содержащей опорные отсчеты, используемые для определения прогнозируемого блока для текущего видеоблока, и виртуальный буфер заданного размера используется для отслеживания доступности опорных отсчетов для определения прогнозируемого блока.According to yet another exemplary aspect, another method for processing visual media data is provided. The method comprises performing a conversion between a current video block of a current visual media image and a representation of the visual media data as a stream of data bits, wherein the conversion is performed based on a reference region from the current image containing reference samples used to determine a predicted block for the current video block, and a virtual buffer of a given size is used to track the availability of reference samples to determine the prediction block.

Согласно еще одному примерному аспекту предложен другой способ обработки видео. Способ содержит этап, на котором поддерживают, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением визуальных медиаданных в виде потока битов данных, буфер, сохраняющий опорные отсчеты из текущего изображения для формирования прогнозируемого блока для текущего видеоблока, причем один или более отсчетов в буфере, которые маркированы как недоступные для получения, имеют значения вне диапазона значений пикселей.According to yet another exemplary aspect, another video processing method is proposed. The method comprises maintaining, for conversion between a current video block of a current visual media image and a representation of the visual media data as a stream of data bits, a buffer storing reference samples from the current image to form a prediction block for the current video block, the one or more samples in the buffer , which are marked as unavailable for retrieval, have values outside the range of pixel values.

Согласно другому примерному аспекту предложен другой способ обработки видео. Способ содержит этап, на котором выполняют преобразование между текущим видеоблоком текущего изображения визуальных медиаданных и представлением визуальных медиаданных в виде потока битов данных, с использованием буфера, содержащего опорные отсчеты из текущего изображения для получения прогнозируемого блока для текущего видеоблока, причем преобразование основано на правиле, определяющим, что, для того чтобы представление в виде потока битов данных удовлетворяло указанному правилу, опорный отсчет в буфере должен удовлетворять ограничению на соответствие потока битов данных.According to another exemplary aspect, another video processing method is provided. The method comprises performing a transformation between a current video block of a current visual media image and a representation of the visual media data as a stream of data bits, using a buffer containing reference samples from the current image to obtain a predicted block for the current video block, wherein the transformation is based on a rule defining , that in order for the data bitstream representation to satisfy the specified rule, the reference sample in the buffer must satisfy the data bitstream compliance constraint.

Согласно еще одному примерному аспектупредложено устройство для кодирования или декодирования видео, содержащее процессор, выполненный с возможностью выполнения описываемого выше способа. According to yet another exemplary aspect, a video encoding or decoding apparatus is provided, comprising a processor configured to perform the method described above.

Согласно другому примерному аспекту предложен читаемый компьютером носитель программы. Носитель хранит код, содержащий исполняемые процессором команды для выполнения одного из описываемых способов. In another exemplary aspect, a computer-readable program medium is provided. The medium stores code containing processor-executable commands to perform one of the described methods.

Эти и другие аспекты описаны в настоящем документе более подробно. These and other aspects are described in more detail herein.

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

Фиг. 1 показывает пример привязки текущего изображения к опоре или видео с внутрикадровым копированием блоков или способа кодирования изображения. Fig. 1 shows an example of linking the current image to a support or video with intra-frame block copying or an image encoding method.

Фиг. 2 показывает пример динамической опорной области.Fig. 2 shows an example of a dynamic reference region.

Фиг. 3 показывает пример кодирования блока, начиная от точки (x,y).Fig. 3 shows an example of encoding a block starting from point (x,y).

Фиг. 4 показывает примеры возможных альтернативных способов выбора ранее кодированных блоков размером 64×64. Fig. 4 shows examples of possible alternative methods for selecting previously encoded 64x64 blocks.

Фиг. 5 показывает пример возможного альтернативного способа изменения порядка кодирования/декодирования блоков размером 64×64.Fig. 5 shows an example of a possible alternative method for changing the encoding/decoding order of 64x64 blocks.

Фиг. 6 представляет логическую схему примера способа обработки видео или изображения. Fig. 6 is a logic diagram of an example of a video or image processing method.

Фиг. 7 представляет блок-схему аппаратной платформы для кодирования или декодирования видео или изображений. Fig. 7 is a block diagram of a hardware platform for encoding or decoding video or images.

Фиг. 8 показывает другой возможный альтернативный способ выбора ранее кодированных блоков размером 64×64, когда порядок декодирования для блоков размером 64x64 установлен сверху вниз, слева направо.Fig. 8 shows another possible alternative method for selecting previously encoded 64x64 blocks when the decoding order for the 64x64 blocks is set from top to bottom, left to right.

Фиг. 9 показывает другой возможный альтернативный способ выбора ранее кодированных блоков размером 64×64.Fig. 9 shows another possible alternative method for selecting previously encoded 64x64 blocks.

Фиг. 10 показывает пример логической схемы процедуры декодирования с переформированием. Fig. 10 shows an example of a logic diagram of a reshaping decoding procedure.

Фиг. 11 показывает другой возможный альтернативный способ выбора ранее кодированных блоков размером 64×64, когда порядок декодирования для блоков размером 64x64 установлен слева направо, сверху вниз.Fig. 11 shows another possible alternative method for selecting previously encoded 64x64 blocks when the decoding order for the 64x64 blocks is set from left to right, top to bottom.

Фиг. 12 показывает иллюстрацию статуса опорного буфера для режима копирования IBC, где блок обозначает единицу CTU размером 64x64.Fig. 12 shows an illustration of the status of the reference buffer for the IBC copy mode, where a block denotes a 64x64 CTU.

Фиг. 13 показывает один вариант расположения опорной области для режима копирования IBC.Fig. 13 shows one arrangement of the reference area for the IBC copy mode.

Фиг. 14 показывает другой вариант расположения опорной области для режима копирования IBC.Fig. 14 shows another arrangement of the reference area for the IBC copy mode.

Фиг. 15 показывает другой вариант расположения опорной области для режима копирования IBC, когда текущая единица данных виртуального конвейера (VPDU) находится на правой стороне границы изображения.Fig. 15 shows another reference region location for the IBC copy mode when the current virtual pipeline data unit (VPDU) is on the right side of the image boundary.

Фиг. 16 показывает пример статуса виртуального буфера, когда единицы VPDU в строке единиц CTU декодируют последовательно.Fig. 16 shows an example of the virtual buffer status when VPDUs in a line of CTUs are decoded sequentially.

Фиг. 17 представляет блок-схему примера системы обработки видео, в которой могут быть реализованы описываемые способы. Fig. 17 is a block diagram of an example video processing system in which the described methods may be implemented.

Фиг. 18 предлагает логическую схему примера способа обработки визуальных медиаданных.Fig. 18 provides a logic diagram of an example method for processing visual media data.

Фиг. 19 предлагает логическую схему примера способа обработки визуальных медиаданных.Fig. 19 provides a logic diagram of an example method for processing visual media data.

Фиг. 20 предлагает логическую схему примера способа обработки визуальных медиаданных.Fig. 20 provides a logic diagram of an example method for processing visual media data.

Фиг. 21 предлагает логическую схему примера способа обработки визуальных медиаданных.Fig. 21 provides a logic diagram of an example method for processing visual media data.

Фиг. 22 предлагает логическую схему примера способа обработки визуальных медиаданных.Fig. 22 provides a logic diagram of an example method for processing visual media data.

Осуществление изобретенияCarrying out the invention

Заголовки разделов используются в настоящем документе для облегчения понимания и не ограничивают объем вариантов, описываемых в каждом разделе, только этим разделом. Настоящий документ описывает разнообразные варианты и способы управления буфером и кодирования блочного вектора в режиме с внутрикадровым копированием блоков для декодирования или кодирования видео или изображений.Section headings are used herein to aid understanding and do not limit the scope of the options described in each section to that section only. This document describes various options and methods for buffer management and block vector encoding in intra-frame block copy mode for decoding or encoding video or images.

1. Краткое изложение существа изобретения1. Brief summary of the invention

Настоящий патентный документ относится к способам кодирования видео. В частности, он относится к внутрикадровому копированию блоков при кодировании видео. Это может быть применено к стандартам, находящимся в стадии разработки, например, к стандарту «Универсального видео кодирования» (Versatile Video Coding). Это может быть также применимо к стандартам кодирования видео или к видео кодекам будущего.This patent document relates to video encoding methods. In particular, it relates to intra-frame block copying during video encoding. This can be applied to standards under development, such as the Versatile Video Coding standard. This may also apply to video coding standards or future video codecs.

2. Краткое обсуждение2. Brief discussion

Стандарты кодирования видео развивались главным образом через разработку хорошо известных стандартов ITU-T и ISO/IEC. Союз ITU-T выпустил стандарты H.261 и H.263, организация ISO/IEC выпустила стандарты MPEG-1 и MPEG-4 Visual, а также эти две организации совместно выпустили стандарты H.262/MPEG-2 Video и H.264/MPEG-4 Advanced Video Coding (AVC) (усовершенствованное видео кодирование) и H.265/HEVC. Со времени стандарта H.262, стандарты кодирования видео основаны на гибридной структуре кодирования видео, использующей временное прогнозирование плюс трансформационное кодирование. Для исследований в области технологий кодирования видео будущего, которые будут разработаны после технологии кодирования HEVC, группа экспертов по кодированию видео (VCEG) и группа экспертов по кинематографии (MPEG) в 2015 г. совместно основали Объединенную группу исследований в области видео (Joint Video Exploration Team (JVET)). С тех пор группа JVET разработала множество новых способов и ввела их в эталонное программное обеспечение, называемое Совместной исследовательской моделью (Joint Exploration Model (JEM)). В апреле 2018 г. группа VCEG (Q6/16) и отдел ISO/IEC JTC1 SC29/WG11 (MPEG) создали объединенную группу экспертов в области видео (Joint Video Expert Team (JVET)) для работ над стандартом VVC, имея целью добиться снижения требуемой скорости передачи битов данных на 50% по сравнению с кодированием HEVC Video coding standards have evolved primarily through the development of the well-known ITU-T and ISO/IEC standards. ITU-T has released H.261 and H.263, ISO/IEC has released MPEG-1 and MPEG-4 Visual, and the two have jointly released H.262/MPEG-2 Video and H.264/ MPEG-4 Advanced Video Coding (AVC) and H.265/HEVC. Since the H.262 standard, video coding standards have been based on a hybrid video coding structure using time prediction plus transformation coding. To research future video encoding technologies that will be developed after HEVC encoding technology, the Video Coding Experts Group (VCEG) and the Motion Picture Experts Group (MPEG) jointly founded the Joint Video Exploration Team in 2015 (JVET)). Since then, the JVET team has developed many new techniques and incorporated them into reference software called the Joint Exploration Model (JEM). In April 2018, VCEG (Q6/16) and ISO/IEC JTC1 SC29/WG11 (MPEG) formed the Joint Video Expert Team (JVET) to work on the VVC standard, with the goal of reducing 50% reduction in required data bit rate compared to HEVC encoding

2.1 Межкадровое прогнозирование в стандарте HEVC/H.2652.1 Inter-frame prediction in HEVC/H.265 standard

Каждая единица межкадрового прогнозирования PU (prediction unit (единица прогнозирования)) имеет параметры движения для одного или двух списков опорных изображений. Совокупность параметров движения содержит вектор движения и индекс опорного изображения. Об использовании одного или двух списков опорных изображений может быть также передано в виде сигнализации с применением параметра inter_pred_idc. Векторы движения могут быть в явной форме закодированы в виде приращений относительно предикторов.Each PU prediction unit has motion parameters for one or two reference picture lists. The set of motion parameters contains a motion vector and a reference image index. The use of one or two reference picture lists may also be signaled using the inter_pred_idc parameter. Motion vectors can be explicitly encoded as increments relative to the predictors.

Когда единица CU (coding unit (единица кодирования)) кодирована в режиме пропуска, с этой единицей CU ассоциирована одна единица PU, и при этом нет ни значительных коэффициентов остатка, ни кодированного приращения вектора движения или индекса опорного изображения. Режим объединения специфицирован таким образом, что параметры движения для текущей единицы PU получают из соседних единиц PU, включая пространственные и временные кандидаты. Режим объединения может быть применен к любой единице PU межкадрового прогнозирования, не только в режиме пропуска. Альтернативой для режима объединения является передача параметров движения в явном виде, где векторы движения (более точно, разницы векторов движения (motion vector difference (MVD)) относительно предиктора вектора движения), соответствующий индекс опорного изображения для каждого списка опорных изображений и показатель использования списка опорных изображений передают в виде сигнализации в явной форме для каждой единицы PU. Этот тип режима называется в этом документе усовершенствованным прогнозированием вектора движения (advanced motion vector prediction (AMVP)). When a CU (coding unit) is encoded in the skip mode, there is one PU associated with this CU, and there are neither significant remainder coefficients nor coded increment of motion vector or reference picture index. The fusion mode is specified such that the motion parameters for the current PU are obtained from neighboring PUs, including spatial and temporal candidates. The combining mode can be applied to any inter-prediction PU, not just the skip mode. An alternative to the fusion mode is to pass the motion parameters explicitly, where the motion vectors (more precisely, the motion vector difference (MVD) relative to the motion vector predictor), the corresponding reference picture index for each reference picture list, and the reference list usage rate images are explicitly signaled for each PU. This type of mode is referred to in this document as advanced motion vector prediction (AMVP).

Когда сигнализация указывает, что следует использовать один из двух списков опорных изображений, единицу PU создают из одного блока отсчетов. Это называется «однонаправленным прогнозированием» (‘uni-prediction’). Однонаправленное прогнозирование доступно для срезов обоих видов – P-среза (P-slice) или среза со ссылкой на предыдущий срез (предсказанного среза) и B-среза (B-slice) или среза со ссылками на предыдущий и последующий срезы (или двунаправлено интерполированного среза). When signaling indicates that one of the two reference picture lists should be used, a PU is created from one block of samples. This is called 'uni-prediction'. Unidirectional prediction is available for both types of slices - P-slice or slice with reference to the previous slice (predicted slice) and B-slice or slice with reference to previous and subsequent slices (or bidirectionally interpolated slice ).

Когда сигнализация указывает, что следует использовать оба списка опорных изображений, единицу PU создают из двух блоков отсчетов. Это называется «двунаправленной интерполяцией (прогнозированием)» (‘bi-prediction’). Двунаправленная интерполяция доступна только для B-срезов.When signaling indicates that both reference picture lists should be used, a PU is created from two sample blocks. This is called 'bi-prediction'. Bidirectional interpolation is only available for B-slices.

Следующий текст содержит подробности относительно режимов межкадрового прогнозирования, специфицированных в стандарте кодирования HEVC. Описание начнется с режима объединения.The following text contains details regarding the inter-frame prediction modes specified in the HEVC coding standard. The description will begin with the merge mode.

2.2 Использование текущего изображения в качестве опоры 2.2 Using the current image as a reference

Режим использования текущего изображения в качестве опоры (Current Picture Referencing (CPR)), или, как он был когда-то назван, Внутрикадровое копирование блоков (Intra Block Copy (IBC)) был принят в расширениях кодирования контента экрана (HEVC Screen Content Coding extensions (HEVC-SCC)) и в тестовой модели сегодняшней версии стандарта кодирования VVC. Принцип копирования IBC расширяет концепцию компенсации движения от кодирования с межкадровым прогнозированием на кодирование с внутрикадровым прогнозированием. Как показано на фиг. 1, когда применяется режим CPR, текущий блок прогнозируют на основе опорного блока из того же самого изображения. Отсчеты из опорного блока должны быть уже реконструированы прежде, чем текущий блок будет кодирован или декодирован. Хотя режим CPR не является таким уж эффективным для большинства захватываемых видеокамерой последовательностей, он демонстрирует значительный выигрыш по кодированию контента экрана. Причиной этого является наличие больших групп из повторяющихся структур, таких как иконки и текстовые символы, в изображении контента экрана. Режим CPR может эффективно устранить избыточность между этими повторяющимися структурами. В стандарте HEVC-SCC, единица кодирования (coding unit (CU)) с применением межкадрового прогнозирования может применить режим CPR, если она выберет текущее изображение в качестве опорного изображения. В этом случае вектор движения (MV) переименовывают в блочный вектор (block vector (BV)), причем этот вектор BV всегда имеет точность до целого пикселя. Для обеспечения совместимости с главным профилем кодирования HEVC, текущее изображение маркируют как «долговременное» (“long-term”) опорное изображение в буфере декодированных изображений (Decoded Picture Buffer (DPB)). Следует отметить, что аналогично, в стандартах многовидового/3D кодирования видео, межвидовое опорное изображение также маркируют в качестве «долговременного» опорного изображения.Current Picture Referencing (CPR), or as it was once called Intra Block Copy (IBC), has been adopted by HEVC Screen Content Coding extensions (HEVC-SCC)) and in the test model of today's version of the VVC coding standard. The IBC copy principle extends the concept of motion compensation from inter-prediction coding to intra-prediction coding. As shown in FIG. 1, when the CPR mode is applied, the current block is predicted based on a reference block from the same image. The samples from the reference block must already be reconstructed before the current block is encoded or decoded. Although CPR mode is not that effective for most camera sequences, it does show significant gains in encoding screen content. The reason for this is the presence of large groups of repeating structures, such as icons and text characters, in the display of screen content. The CPR mode can effectively eliminate the redundancy between these repeating structures. In the HEVC-SCC standard, a coding unit (CU) using inter-picture prediction can apply the CPR mode if it selects the current picture as the reference picture. In this case, the motion vector (MV) is renamed a block vector (BV), and this BV is always accurate to an entire pixel. To ensure compatibility with the main HEVC encoding profile, the current picture is marked as a “long-term” reference picture in the Decoded Picture Buffer (DPB). It should be noted that similarly, in multi-view/3D video coding standards, an inter-view reference picture is also labeled as a “long-term” reference picture.

Следуя за вектором BV, чтобы найти опорный блок, прогнозирование можно генерировать путем копирования опорного блока. Остаток может быть получен путем вычитания опорных пикселей из исходных сигналов. Затем может быть применена трансформация и квантование, как и в других режимах кодирования.By following the BV vector to find the reference block, the prediction can be generated by copying the reference block. The remainder can be obtained by subtracting the reference pixels from the original signals. Transformation and quantization can then be applied, as in other encoding modes.

На фиг. 1 представлен пример, иллюстрирующий использование текущего изображения в качестве опоры.In fig. Figure 1 shows an example illustrating the use of the current image as a reference.

Однако когда опорный блок находится вне изображения, либо накладывается на текущий блок, либо находится вне реконструированной области, либо находится вне действительной области, ограниченной некоторыми ограничивающими факторами, часть или все значения пикселей не определены. В основном имеются два технических решения для работы с такой проблемой. Одно решение состоит в том, чтобы не допустить такой ситуации, например, в соответствии потоков битов данных. Другое решение состоит в том, чтобы применить заполнение для таких неопределенных значений пикселей. Следующие подразделы описывают эти технические решения подробно.However, when the reference block is outside the image, or superimposed on the current block, or outside the reconstructed region, or outside the actual region limited by some limiting factors, some or all of the pixel values are undefined. There are basically two technical solutions to deal with this problem. One solution is to prevent this situation from happening, for example by matching data bit streams. Another solution is to apply padding to such undefined pixel values. The following subsections describe these technical solutions in detail.

2.3 Режим CPR в расширениях HEVC Screen Content Coding 2.3 CPR mode in HEVC Screen Content Coding extensions

В расширениях с кодированием контента экрана в стандарте кодирования HEVC, когда какой-либо блок использует текущее изображение в качестве опоры, он должен гарантировать, что весь опорный блок находится в пределах доступной реконструированной области, как это обозначено в следующем специальном тексте (жирный):In extensions with screen content encoding in the HEVC encoding standard, when any block uses the current image as a reference, it must ensure that the entire reference block is within the available reconstructed region, as indicated by the following special text (bold):

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

offsetX = ( ChromaArrayType = = 0 ) ? 0 : ( mvCLX[ 0 ] & 0x7 ? 2 : 0 ) (8-104)offsetX = ( ChromaArrayType = = 0 ) ? 0 : ( mvCLX[ 0 ] & 0x7 ? 2 : 0 ) (8-104)

offsetY = ( ChromaArrayType = = 0 ) ? 0 : ( mvCLX[ 1 ] & 0x7 ? 2 : 0 ) (8-105)offsetY = ( ChromaArrayType = = 0 ) ? 0 : ( mvCLX[ 1 ] & 0x7 ? 2 : 0 ) (8-105)

Одно из требований соответствия потоков битов данных состоит в том, что когда опорное изображение является текущим изображеннием, вектор mvLX движения яркостной составляющей должен подчиняться следующим ограниченниям:One of the requirements for data bitstream matching is that when the reference image is the current image, the luminance motion vector mvLX must be subject to the following constraints:

- Когда процедура вывода для доступности блоков в порядке z-сканирования, как это специфицировано в статье 6.4.1, привлекается при ( xCurr, yCurr ), установленных равным ( xCb, yCb ), и соседнем положении яркостной составляющей ( xNbY, yNbY ), установленном равным ( xPb + (mvLX[ 0 ] >> 2) − offsetX, yPb + ( mvLX[ 1 ] >> 2 ) − offsetY ), в качестве входных данных, выходной сигнал должен иметь значение «Истинно» (TRUE).- When the inference procedure for block availability in z-scan order, as specified in clause 6.4.1, is invoked with ( xCurr, yCurr ) set equal to ( xCb, yCb ), and the adjacent luminance component position ( xNbY, yNbY ) set equal to ( xPb + (mvLX[ 0 ] >> 2) − offsetX, yPb + ( mvLX[ 1 ] >> 2 ) − offsetY ) as input, the output must be TRUE.

- Когда процедура вывода для доступности блоков в порядке z-сканирования, как это специфицировано в статье 6.4.1, привлекается при ( xCurr, yCurr ), установленных равным ( xCb, yCb ), и соседнем положении яркостной составляющей ( xNbY, yNbY ), установленном равным ( xPb + (mvLX[ 0 ] >> 2) + nPbW − 1 + offsetX, yPb + (mvLX[ 1 ] >> 2) + nPbH − 1 + offsetY), в качестве входных данных, выходной сигнал должен иметь значение «Истинно» (TRUE).- When the inference procedure for block availability in z-scan order, as specified in clause 6.4.1, is invoked with ( xCurr, yCurr ) set equal to ( xCb, yCb ), and the adjacent luminance component position ( xNbY, yNbY ) set equal to ( xPb + (mvLX[ 0 ] >> 2) + nPbW − 1 + offsetX, yPb + (mvLX[ 1 ] >> 2) + nPbH − 1 + offsetY), as input data, the output signal should have the value " True" (TRUE).

- Одно или оба из следующим условий должно быть «истинным»: - One or both of the following conditions must be true:

- Значение ( mvLX[ 0 ] >> 2 ) + nPbW + xB1 + offsetX не больше 0.- Value ( mvLX[ 0 ] >> 2 ) + nPbW + xB1 + offsetX is not greater than 0.

- Значение ( mvLX[ 1 ] >> 2 ) + nPbH + yB1 + offsetY не больше 0.- Value ( mvLX[ 1 ] >> 2 ) + nPbH + yB1 + offsetY is not greater than 0.

- Следующее условие должно быть истинным: - The following condition must be true:

( xPb + ( mvLX[ 0 ] >> 2 ) + nPbSw − 1 + offsetX) / CtbSizeY − xCb / CtbSizeY <= yCb/CtbSizeY − ( yPb + ( mvLX[ 1 ] >> 2 ) + nPbSh − 1 + offsetY ) / CtbSizeY (8-106)( xPb + ( mvLX[ 0 ] >> 2 ) + nPbSw − 1 + offsetX) / CtbSizeY − xCb / CtbSizeY <= yCb/CtbSizeY − ( yPb + ( mvLX[ 1 ] >> 2 ) + nPbSh − 1 + offsetY ) /CtbSizeY (8-106)

Таким образом, случай, когда опорный блок накладывается на текущий блок или опорный блок находится вне изображения, не возникнет. Поэтому, нет необходимости «заполнять» опорный или прогнозируемый блок.Thus, the case where the reference block overlaps the current block or the reference block is outside the image will not occur. Therefore, there is no need to “fill in” the reference or forecast block.

2.4 Примеры кодирования с копированием блоков CPR/IBC2.4 Copying examples of CPR/IBC blocks

В сегодняшней тестовой модели кодирования VVC, весь опорный блок должен быть с текущей единицей дерева кодирования (current coding tree unit (CTU)) и не должен накладываться на текущий блок. Таким образом, нет необходимости «заполнять» опорный или прогнозируемый блок.In today's VVC encoding test model, the entire reference block must be with the current coding tree unit (CTU) and must not overlap the current block. Thus, there is no need to "fill in" the reference or forecast block.

Когда активизировано двойное дерево, структура разбиения может быть различной для единиц CTU яркостной составляющей и единиц CTU цветностной составляющей. Поэтому, для цветового формата 4:2:0 один блок цветностной составляющей (например, единица CU) может соответствовать одной расположенной в этом же месте области яркостной составляющей, которая была разбита на несколько единиц CU яркостной составляющей.When dual tree is enabled, the partitioning structure may be different for luma CTUs and chrominance CTUs. Therefore, for a 4:2:0 color format, one chrominance block (eg, CU) may correspond to one colocated luminance region that has been divided into multiple luminance CUs.

Блок цветностной составляющей может быть кодирован только в режиме CPR, когда следующие условия должны быть истинными:A chrominance block can only be encoded in CPR mode when the following conditions must be true:

1. каждая из единиц CU яркостной составляющей, находящаяся в пределах расположенного в этом же месте блока яркостной составляющей, должна быть кодирована в режиме CPR 1. each luminance CU located within a luminance block located at the same location must be encoded in CPR mode

2. вектор BV для каждого из блоков яркостной составляющей размером 4×4 сначала преобразуют в вектор BV для блока цветностной составляющей, и этот вектор BV для блока цветностной составляющей является действительным вектором BV.2. The BV vector for each of the 4x4 luma blocks is first converted into a BV vector for the chroma block, and this BV vector for the chrominance block is a real BV vector.

Если какое-либо из этих двух условий является ложным, рассматриваемый блок цветностной составляющей не следует кодировать в режиме CPR.If either of these two conditions is false, the chroma block in question should not be encoded in CPR mode.

Следует отметить, что определение «действительный вектор BV» имеет следующие ограничения:It should be noted that the definition of "real BV vector" has the following limitations:

1. все отсчеты в пределах опорного блока, идентифицированного вектором BV, должны находиться в пределах ограниченного диапазона поиска (например, должны быть в пределах одной и той же единицы CTU в сегодняшней редакции стандарта кодирования VVC).1. all samples within the reference block identified by the BV vector must be within the limited search range (for example, must be within the same CTU in today's edition of the VVC coding standard).

2. все отсчеты в пределах опорного блока, идентифицированного вектором BV, уже были реконструированы к текущему моменту.2. all samples within the reference block identified by the BV vector have already been reconstructed by the current moment.

2.5 Примеры кодирования с копированием блоков CPR/IBC 2.5 Copying examples of CPR/IBC blocks

В некоторых примерах, опорная область для режима CPR/IBC ограничена текущей единицей CTU, которая имеет размер до 128x128. Опорная область изменяется динамически для повторного использования памяти с целью сохранения опорных отсчетов для режима CPR/IBC, так что блок, прогнозируемый в режиме CPR/IBC, может иметь больше опорных кандидатов, тогда как опорный буфер для режима CPR/IBC может сохранять размер или быть редуцирован от одной единицы CTU.In some examples, the reference area for CPR/IBC mode is limited to the current CTU, which is up to 128x128 in size. The reference area is modified dynamically to reuse memory to maintain reference samples for CPR/IBC mode, so that a block predicted in CPR/IBC mode may have more reference candidates, while the reference buffer for CPR/IBC mode may maintain the size or be reduced from one CTU unit.

На фиг. 2 показан способ, где блок имеет размер 64x64 и единица CTU содержит 4 блока размером 64x64. При кодировании блока размером 64x64 предыдущие 3 блока размером 64x64 могут быть использованы в качестве опоры. При таком подходе декодирующему устройству необходимо просто сохранять 4 блока размером 64x64 для поддержки режима CPR/IBC.In fig. 2 shows a method where the block size is 64x64 and the CTU contains 4 blocks of size 64x64. When encoding a 64x64 block, the previous 3 64x64 blocks can be used as a reference. With this approach, the decoder simply needs to store 4 64x64 blocks to support CPR/IBC mode.

Предположим, что позиция текущей единицы CU яркостной составляющей относительно верхнего-левого угла изображения имеет координаты (x, y) и блочный вектор равен (BVx, BVy). В текущей конфигурации, является ли вектор BV действительным, может быть сообщено тем фактом, что позиция яркостной составляющей ((x+BVx)>>6<<6+(1<<7), (y+BVy)>>6<<6) не была реконструирована, и ((x+BVx)>>6<<6+(1<<7), (y+BVy)>>6<<6) не равно (x>>6<<6, y>>6<<6).Suppose that the position of the current luminance component CU unit relative to the top-left corner of the image has coordinates (x, y) and the block vector is equal to (BVx, BVy). In the current configuration, whether the BV vector is valid can be indicated by the fact that the position of the luminance component ((x+BVx)>>6<<6+(1<<7), (y+BVy)>>6<< 6) was not reconstructed, and ((x+BVx)>>6<<6+(1<<7), (y+BVy)>>6<<6) is not equal to (x>>6<<6, y>>6<<6).

2.6. Внутриконтурное переформирование (ILR) 2.6. Intra-loop reformation (ILR)

Основная идея внутриконтурного переформирования (ILR) состоит в преобразовании исходного (в первой области) сигнала (прогнозируемого/реконструированного сигнала) во вторую область (переформированную область). The basic idea of in-loop reshaping (ILR) is to transform the original (in the first region) signal (predicted/reconstructed signal) into a second region (reshaped region).

Внутриконтурное устройство для переформирования яркостной составляющей реализовано в виде пары преобразовательных таблиц (look-up table (LUT)), но только об одной из этих двух таблиц LUT необходимо сообщить посредством сигнализации, тогда как другая таблица может быть вычислена на основе сообщенной таблицы LUT. Каждая таблица LUT является одномерной, 10-битовой, таблицей отображения с 1024 входными позициями (1D-LUT). Одна таблица LUT является таблицей LUT для прямого преобразования (прямая таблица LUT), FwdLUT, которая преобразует значения входного цветностного кода в измененные значения : . Другая таблица LUT является таблицей LUT для обратного преобразования (обратная таблица LUT), InvLUT, которая преобразует измененные кодовые значения в значения : . ( представляет реконструированные значения .). The in-loop luminance reshaping device is implemented as a pair of look-up tables (LUTs), but only one of the two LUTs needs to be signaled, while the other table can be calculated based on the reported LUT. Each LUT is a one-dimensional, 10-bit, mapping table with 1024 input positions (1D-LUT). One LUT is a direct conversion LUT (direct LUT), FwdLUT, which converts the values input chrominance code into modified values : . The other LUT is the inverse LUT (inverse LUT), InvLUT, which converts the changed code values in meaning : . ( represents reconstructed values .).

2.6.1 Кусочно-линейная (PWL) модель2.6.1 Piecewise linear (PWL) model

Концептуально, кусочно-линейная модель (piece-wise linear (PWL)) реализуется следующим образом:Conceptually, the piece-wise linear (PWL) model is implemented as follows:

Пусть x1, x2 являются двумя входными опорными точками, а y1, y2 являются соответствующими выходными опорными точками для одного отрезка. Выходное значение y для какого-либо входного значения x между значениями x1 и x2 может быть интерполирована посредством следующего уравнения:Let x1, x2 be two input anchor points and y1, y2 be the corresponding output anchor points for one line segment. The output value y for any input value x between x1 and x2 can be interpolated using the following equation:

y = ((y2-y1)/(x2-x1)) * (x-x1) + y1y = ((y2-y1)/(x2-x1)) * (x-x1) + y1

В варианте реализации с фиксированной точкой это уравнение может быть переписано как:In a fixed-point implementation, this equation can be rewritten as:

y = ((m * x + 2FP_PREC-1) >> FP_PREC) + cy = ((m * x + 2 FP_PREC-1 ) >> FP_PREC) + c

где m обозначает скаляр, c обозначает сдвиг и FP_PREC представляет собой константу для специфицирования точности.where m denotes a scalar, c denotes a shift, and FP_PREC is a constant for specifying precision.

В некоторых примерах, модель PWL используется для предварительного вычисления имеющих по 1024 входных позиций каждая таблиц прямого FwdLUT и обратного InvLUT отображения; но модель PWL также позволяет создать реализации для вычисления идентичных отображаемых значений в реальном времени без предварительного вычисления таблиц LUT.In some examples, the PWL model is used to precompute the 1024-input forward FwdLUT and inverse InvLUT mapping tables; but the PWL model also allows implementations to be created to calculate identical display values in real time without first computing the LUTs.

2.6.2.1 Переформирование яркостной составляющей2.6.2.1 Reshaping the brightness component

Способ внутриконтурного переформирования яркостной составляющей создает конвейер меньшей сложности, который также исключает задержку декодирования для поблочного внутрикадрового прогнозирования при реконструкции среза при межкадровом прогнозировании. Внутрикадровое прогнозирование осуществляется в переформированной области для срезов обоих типов – с внутрикадровым и с межкадровым прогнозированием.The method of in-loop reformation of the luminance component creates a pipeline of less complexity, which also eliminates the decoding delay for block-by-block intra-frame prediction during slice reconstruction during inter-frame prediction. Intra-frame prediction is carried out in a reshaped area for slices of both types - with intra-frame and inter-frame prediction.

Внутрикадровое прогнозирование всегда осуществляется в переформированной области независимо от типа среза. В такой конфигурации процесс внутрикадрового прогнозирования может начинаться сразу же после завершения реконструкции предыдущей единицы преобразования TU. Такая конфигурация может также предложить унифицированную процедуру для внутрикадрового прогнозирования вместо процедуры, зависимой от конкретного среза. На фиг. 10 показана блок-схема процедуры CE12-2 декодирования на основе режима.Intra-frame prediction is always performed in the reshaped region, regardless of the slice type. In such a configuration, the intra-prediction process may begin immediately after the reconstruction of the previous TU is completed. Such a configuration may also offer a unified procedure for intra-frame prediction instead of a slice-specific procedure. In fig. 10 is a flowchart of a mode-based decoding procedure CE12-2.

16-элементные кусочно-линейные (PWL) модели подвергают тестированию для масштабирования остатков яркостной и цветностной составляющих вместо 32-элементных моделей PWL.16-element piecewise linear (PWL) models are tested to scale luma and chroma residuals instead of 32-element PWL models.

Реконструкция среза при внутрикадровом прогнозировании с применением устройства внутриконтурного переформирования яркостной составляющей (заштрихованные светло-зеленым блоки обозначают сигнал в переформированной области: остаток яркостной составляющей; яркостную составляющую при внутрикадровом прогнозировании; реконструированную яркостную составляющую при внутрикадровом прогнозировании). Reconstruction of a slice during intra-frame prediction using a device for intra-circuit reformation of the brightness component (blocks shaded in light green indicate the signal in the reformed area: the remainder of the brightness component; the brightness component during intra-frame prediction; the reconstructed luminance component during intra-frame prediction).

2.6.2.2 Зависящее от яркостной составляющей масштабирование остатка цветностной составляющей2.6.2.2 Luminance-dependent scaling of the remaining chrominance component

Зависящее от яркостной составляющей масштабирование остатка цветностной составляющей является мультипликативным процессом, реализуемым целочисленной операцией с фиксированной запятой. Масштабирование остатка цветностной составляющей компенсирует взаимодействие яркостного сигнала с цветностным сигналом. Масштабирование остатка цветностной составляющей применяется на уровне единиц TU. Более конкретно, применяется следующее:The luminance component-dependent scaling of the chroma residual is a multiplicative process implemented by a fixed-point integer operation. Scaling the remaining chrominance component compensates for the interaction of the luminance signal with the chrominance signal. Chroma residual scaling is applied at the TU level. More specifically, the following applies:

Для внутрикадрового прогнозирования, усредняют реконструированную яркостную составляющую. For intra-frame prediction, the reconstructed luminance component is averaged.

Для межкадрового прогнозирования, усредняют прогнозируемую яркостную составляющую.For interframe prediction, the predicted luminance component is averaged.

Усреднение используется для идентификации индекса в модели PWL. Этот индекс идентифицирует масштабный коэффициент cScaleInv. Остаток цветностной составляющей умножают на этот коэффициент.Averaging is used to identify the index in the PWL model. This index identifies the scale factor cScaleInv. The remainder of the color component is multiplied by this coefficient.

Отметим, что масштабный коэффициент для цветностной составляющей вычисляют на основе отображенных в прямом направлении значений яркостной составляющей вместо реконструированных значений яркостной составляющей. Note that the scale factor for the chrominance component is calculated based on the forward-mapped luminance component values instead of the reconstructed luminance component values.

2.6.2.3 Передача сигнализации дополнительной информации о переформировании ILR 2.6.2.3 Signaling additional information about ILR reconfiguration

Эти параметры передают (в настоящий момент) в заголовке группы плиток (аналогично фильтрации ALF). Эти сообщения занимают 40 – 100 бит.These parameters are passed (currently) in the tile group header (similar to ALF filtering). These messages occupy 40 – 100 bits.

В некоторых примерах, добавленный синтаксис выделен курсивом.In some examples, added syntax is italicized.

В 7.3.2.1 Синтаксис набора параметров последовательности RBSP B 7.3.2.1 RBSP Sequence Parameter Set Syntax

seq_parameter_set_rbsp( ) {seq_parameter_set_rbsp() { ДескрипторDescriptor sps_seq_parameter_set_idsps_seq_parameter_set_id ue(v)ue(v) ... sps_triangle_enabled_flagsps_triangle_enabled_flag u(1)u(1) sps_ladf_enabled_flagsps_ladf_enabled_flag u(1)u(1) if ( sps_ladf_enabled_flag ) {if ( sps_ladf_enabled_flag ) { sps_num_ladf_intervals_minus2sps_num_ladf_intervals_minus2 u(2)u(2) sps_ladf_lowest_interval_qp_offsetsps_ladf_lowest_interval_qp_offset se(v)se(v) for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) {for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) { sps_ladf_qp_offset[ i ]sps_ladf_qp_offset[ i ] se(v)se(v) sps_ladf_delta_threshold_minus1[ i ]sps_ladf_delta_threshold_minus1[ i ] ue(v)ue(v) }} }} sps_reshaper_enabled_flagsps_reshaper_enabled_flag u(1)u(1) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

В 7.3.3.1 Синтаксис общего заголовка группы плитокB 7.3.3.1 Tile Group General Header Syntax

tile_group_header( ) {tile_group_header() { ДескрипторDescriptor ... if( num_tiles_in_tile_group_minus1 > 0 ) {if( num_tiles_in_tile_group_minus1 > 0 ) { offset_len_minus1offset_len_minus1 ue(v)ue(v) for( i = 0; i < num_tiles_in_tile_group_minus1; i++ )for( i = 0; i < num_tiles_in_tile_group_minus1; i++ ) entry_point_offset_minus1[ i ]entry_point_offset_minus1[ i ] u(v)u(v) }} if ( sps_reshaper_enabled_flag ) {if ( sps_reshaper_enabled_flag ) { tile_group_reshaper_model_present_flagtile_group_reshaper_model_present_flag u(1)u(1) if ( tile_group_reshaper_model_present_flag )if (tile_group_reshaper_model_present_flag) tile_group_reshaper_model ( )tile_group_reshaper_model ( ) tile_group_reshaper_enable_flagtile_group_reshaper_enable_flag u(1)u(1) if ( tile_group_reshaper_enable_flag && (!( qtbtt_dual_tree_intra_flag && tile_group_type == I ) ) )if ( tile_group_reshaper_enable_flag && (!( qtbtt_dual_tree_intra_flag && tile_group_type == I ) ) ) tile_group_reshaper_chr oma_residual_scale_flagtile_group_reshaper_chr oma_residual_scale_flag u(1)u(1) }} byte_alignment( )byte_alignment( ) }}

Добавление новой модели устройства переформирования группы плиток в синтаксической таблице:Adding a new model of the tile group reformation device in the syntax table:

tile_group_reshaper_model () {tile_group_reshaper_model() { ДескрипторDescriptor reshaper_model_min_bin_idxreshaper_model_min_bin_idx ue(v)ue(v) reshaper_model_delta_max_bin_idxreshaper_model_delta_max_bin_idx ue(v)ue(v) reshaper_model_bin_delta_abs_cw_prec_minus1reshaper_model_bin_delta_abs_cw_prec_minus1 ue(v)ue(v) for ( i = reshaper_model_min_bin_idx; i <= reshaper_model_max_bin_idx; i++ ) {for ( i = reshaper_model_min_bin_idx; i <= reshaper_model_max_bin_idx; i++ ) {   reshape_model_bin_delta_abs_CW [ i ]reshape_model_bin_delta_abs_CW [ i ] u(v)u(v) if ( reshaper_model_bin_delta_abs_CW[ i ] ) > 0 )if ( reshaper_model_bin_delta_abs_CW[ i ] ) > 0 )   reshaper_model_bin_delta_sign_CW_flag[ i ]reshaper_model_bin_delta_sign_CW_flag[ i ] u(1)u(1) }}   }}

В общую семантику набора параметров последовательности RBSP добавление следующей семантики:Adding the following semantics to the general semantics of the RBSP sequence parameter set:

Флаг sps_reshaper_enabled_flag, равный 1, специфицирует, что устройство переформирования используется в кодированной последовательности видео (coded video sequence (CVS)). Флаг sps_reshaper_enabled_flag, равный 0, специфицирует, что устройство переформирования не используется в последовательности.The sps_reshaper_enabled_flag equal to 1 specifies that the reshaper is used in the coded video sequence (CVS). The sps_reshaper_enabled_flag equal to 0 specifies that the reshaper is not used in the sequence.

В синтаксисе заголовка группы плиток, добавление следующей семантики In the tile group header syntax, adding the following semantics

Флаг tile_group_reshaper_model_present_flag, равный 1, специфицирует, что параметр tile_group_reshaper_model()присутствует в заголовке группы плиток. Флаг tile_group_reshaper_model_present_flag, равный 0, специфицирует, что параметр tile_group_reshaper_model() не присутствует в заголовке группы плиток. Когда флаг tile_group_reshaper_model_present_flag, не присутствует, его считают равным 0.The tile_group_reshaper_model_present_flag equal to 1 specifies that the tile_group_reshaper_model() parameter is present in the tile group header. The tile_group_reshaper_model_present_flag equal to 0 specifies that the tile_group_reshaper_model() parameter is not present in the tile group header. When the tile_group_reshaper_model_present_flag flag is not present, it is considered to be 0.

Флаг tile_group_reshaper_enabled_flag, равный 1, специфицирует, что устройство переформирования активизировано для текущей группы плиток. Флаг tile_group_reshaper_enabled_flag, равный 0, специфицирует, что устройство переформирования не активизировано для текущей группы плиток. Когда флаг tile_group_reshaper_enable_flag не присутствует, его считают равным 0.The tile_group_reshaper_enabled_flag equal to 1 specifies that the reshaper is enabled for the current tile group. The tile_group_reshaper_enabled_flag equal to 0 specifies that the reshaper is not enabled for the current tile group. When the tile_group_reshaper_enable_flag is not present, it is considered to be 0.

Флаг tile_group_reshaper_chroma_residual_scale_flag, равный 1, специфицирует, что масштабирование остатка цветностной составляющей активизировано для текущей группы плиток. Флаг tile_group_reshaper_chroma_residual_scale_flag, равный 0, специфицирует, что масштабирование остатка цветностной составляющей не активизировано для текущей группы плиток. Когда флаг tile_group_reshaper_chroma_residual_scale_flag не присутствует, его считают равным 0.The tile_group_reshaper_chroma_residual_scale_flag flag equal to 1 specifies that chroma residual scaling is enabled for the current tile group. The tile_group_reshaper_chroma_residual_scale_flag equal to 0 specifies that chroma residual scaling is not enabled for the current tile group. When the tile_group_reshaper_chroma_residual_scale_flag is not present, it is treated as 0.

Добавление синтаксиса tile_group_reshaper_model( ) Adding tile_group_reshaper_model() syntax

Индекс reshape_model_min_bin_idx специфицирует индекс минимального разряда (или отрезка) для использования в процессе конструирования устройства для переформирования. Значение этого индекса reshape_model_min_bin_idx должно быть в диапазоне от 0 до параметра MaxBinIdx, включительно. Значение параметра MaxBinIdx должно быть равно 15. The reshape_model_min_bin_idx index specifies the minimum bit (or bin) index to use during the reshaping device design process. The value of this index, reshape_model_min_bin_idx, must be in the range from 0 to the MaxBinIdx parameter, inclusive. The MaxBinIdx parameter value must be equal to 15.

Индекс reshape_model_delta_max_bin_idx специфицирует индекс максимального допустимого разряда (или отрезка) MaxBinIdx минус максимальный индекс разряда для использования в процессе конструирования устройства для переформирования. Значение индекса reshape_model_max_bin_idx устанавливают равным MaxBinIdx – reshape_model_delta_max_bin_idx.The reshape_model_delta_max_bin_idx index specifies the maximum allowable bit (or slice) index MaxBinIdx minus the maximum bit index to use in the reshaping device design process. The reshape_model_max_bin_idx index value is set equal to MaxBinIdx – reshape_model_delta_max_bin_idx.

Параметр reshaper_model_bin_delta_abs_cw_prec_minus1 плюс 1 специфицирует число битов, используемое для представления синтаксиса reshape_model_bin_delta_abs_CW[ i ]. The reshaper_model_bin_delta_abs_cw_prec_minus1 plus 1 parameter specifies the number of bits used to represent the reshape_model_bin_delta_abs_CW[ i ] syntax.

Параметр reshape_model_bin_delta_abs_CW[ i ] специфицирует абсолютное значение кодового слова приращения (дельта) для i-го разряда. The reshape_model_bin_delta_abs_CW[ i ] parameter specifies the absolute value of the increment codeword (delta) for the i-th bit.

Параметр reshaper_model_bin_delta_sign_CW_flag[ i ] специфицирует знак параметра reshape_model_bin_delta_abs_CW[ i ] следующим образом:The reshaper_model_bin_delta_sign_CW_flag[ i ] parameter specifies the sign of the reshape_model_bin_delta_abs_CW[ i ] parameter as follows:

– Если флаг reshape_model_bin_delta_sign_CW_flag[ i ] равен 0, соответствующая переменная RspDeltaCW[ i ] имеет положительное значение.– If the reshape_model_bin_delta_sign_CW_flag[ i ] flag is 0, the corresponding RspDeltaCW[ i ] variable has a positive value.

– В противном случае ( reshape_model_bin_delta_sign_CW_flag[ i ] не равен 0 ), соответствующая переменная RspDeltaCW[ i ] имеет отрицательное значение.– Otherwise ( reshape_model_bin_delta_sign_CW_flag[ i ] is not equal to 0 ), the corresponding variable RspDeltaCW[ i ] has a negative value.

Когда флаг reshape_model_bin_delta_sign_CW_flag[ i ] не присутствуют, его считают равным 0.When the reshape_model_bin_delta_sign_CW_flag[ i ] flag is not present, it is considered equal to 0.

Переменная RspDeltaCW[ i ] = (1 2*reshape_model_bin_delta_sign_CW [ i ]) * reshape_model_bin_delta_abs_CW [ i ];Variable RspDeltaCW[ i ] = (1 2*reshape_model_bin_delta_sign_CW [ i ]) * reshape_model_bin_delta_abs_CW [ i ];

Переменную RspCW[ i ] определяют посредством следующих этапов:The variable RspCW[ i ] is determined through the following steps:

Переменную OrgCW устанавливают равной (1 << BitDepthY ) / ( MaxBinIdx + 1). The OrgCW variable is set to (1 << BitDepth Y ) / ( MaxBinIdx + 1 ).

– Если reshaper_model_min_bin_idx < = i <= reshaper_model_max_bin_idx – If reshaper_model_min_bin_idx <= i <= reshaper_model_max_bin_idx

RspCW[ i ] = OrgCW + RspDeltaCW[ i ].RspCW[ i ] = OrgCW + RspDeltaCW[ i ].

– В противном случае, RspCW[ i ] = 0.– Otherwise, RspCW[ i ] = 0.

Значение RspCW [ i ] должна быть в диапазоне от 32 до 2 * OrgCW – 1, если значение BitDepthY равна 10. The value of RspCW[i] must be in the range from 32 to 2 * OrgCW – 1 if the BitDepth Y value is 10.

Переменные InputPivot[ i ] с i в диапазоне от 0 до MaxBinIdx + 1, включительно, формируют следующим образом InputPivot[ i ] variables with i in the range from 0 to MaxBinIdx + 1, inclusive, are formed as follows

Переменную ReshapePivot[ i ] для i в диапазоне от 0 до MaxBinIdx + 1, включительно, переменную ScaleCoef[ i ] и переменную InvScaleCoeff[ i ] при i в диапазоне от 0 до MaxBinIdx , включительно, определяют следующим образом:The ReshapePivot[ i ] variable for i in the range from 0 to MaxBinIdx + 1, inclusive, the ScaleCoef[ i ] variable and the InvScaleCoeff[ i ] variable for i in the range from 0 to MaxBinIdx, inclusive, are defined as follows:

InputPivot[ i ] = i * OrgCWInputPivot[ i ] = i * OrgCW

shiftY = 14
ReshapePivot[ 0 ] = 0;
shiftY = 14
ReshapePivot[ 0 ] = 0;

for( i = 0; i <= MaxBinIdx ; i++) {
ReshapePivot[ i + 1 ] = ReshapePivot[ i ] + RspCW[ i ]
for( i = 0; i <= MaxBinIdx ; i++) {
ReshapePivot[ i + 1 ] = ReshapePivot[ i ] + RspCW[ i ]

ScaleCoef[ i ] = ( RspCW[ i ] * (1 << shiftY) + (1 << (Log2(OrgCW) - 1))) >> (Log2(OrgCW))
if ( RspCW[ i ] == 0 )
InvScaleCoeff[ i ] = 0
else
InvScaleCoeff[ i ] = OrgCW * (1 << shiftY) / RspCW[ i ]
}
ScaleCoef[ i ] = ( RspCW[ i ] * (1 << shiftY) + (1 << (Log2(OrgCW) - 1))) >> (Log2(OrgCW))
if ( RspCW[ i ] == 0 )
InvScaleCoeff[ i ] = 0
else
InvScaleCoeff[ i ] = OrgCW * (1 << shiftY) / RspCW[ i ]
}

Переменную ChromaScaleCoef[ i ] при i в диапазоне от 0 до MaxBinIdx, включительно, определяют следующим образом:The variable ChromaScaleCoef[ i ] with i in the range from 0 to MaxBinIdx, inclusive, is defined as follows:

ChromaResidualScaleLut[64] = {16384, 16384, 16384, 16384, 16384, 16384, 16384, 8192, 8192, 8192, 8192, 5461, 5461, 5461, 5461, 4096, 4096, 4096, 4096, 3277, 3277, 3277, 3277, 2731, 2731, 2731, 2731, 2341, 2341, 2341, 2048, 2048, 2048, 1820, 1820, 1820, 1638, 1638, 1638, 1638, 1489, 1489, 1489, 1489, 1365, 1365, 1365, 1365, 1260, 1260, 1260, 1260, 1170, 1170, 1170, 1170, 1092, 1092, 1092, 1092, 1024, 1024, 1024, 1024}; ChromaResidualScaleLut[64] = {16384, 16384, 16384, 16384, 16384, 16384, 16384, 8192, 8192, 8192, 8192, 5461, 5461, 5461, 5461, 4096, 4096 , 4096, 4096, 3277, 3277, 3277, 3277, 2731, 2731, 2731, 2731, 2341, 2341, 2341, 2048, 2048, 2048, 1820, 1820, 1820, 1638, 1638, 1638, 1638, 1489, 1489, 148 9, 1489, 1365, 1365, 1365, 1365, 1260, 1260, 1260, 1260, 1170, 1170, 1170, 1170, 1092, 1092, 1092, 1092, 1024, 1024, 1024, 1024};

shiftC = 11shiftC = 11

– если ( RspCW[ i ] == 0 )– if ( RspCW[ i ] == 0 )

ChromaScaleCoef [ i ] = (1 << shiftC) ChromaScaleCoef [ i ] = (1 << shiftC)

– В противном случае (RspCW[ i ] != 0), ChromaScaleCoef[ i ] = ChromaResidualScaleLut[RspCW[ i ] >> 1]– Otherwise (RspCW[ i ] != 0), ChromaScaleCoef[ i ] = ChromaResidualScaleLut[RspCW[ i ] >> 1]

2.6.2.4 Использование переформирования ILR2.6.2.4 Using ILR reframing

На стороне кодирующего устройства каждое изображение (или группу плиток) сначала преобразуют в переформированную область. И всю процедуру кодирования осуществляют в переформированной области. Для внутрикадрового прогнозирования соседний блок находится в переформированной области; для межкадрового прогнозирования опорные блоки (генерируемые из исходной области из буфера декодированного изображения) сначала преобразуют в переформированную область. Затем остаток генерируют и кодируют в потоке битов данных. On the encoder side, each image (or group of tiles) is first converted into a reshaped region. And the entire coding procedure is carried out in the reformed area. For intra-frame prediction, the adjacent block is in the reshaped region; For inter-frame prediction, reference blocks (generated from the original region from the decoded image buffer) are first converted into a reshaped region. The remainder is then generated and encoded in the data bitstream.

После завершения кодирования/декодирования полного изображения (или группы плиток) отсчеты в переформированной области преобразуют в исходную область и затем применяют деблокирующий фильтр и другие фильтры.After encoding/decoding of the entire image (or group of tiles) is completed, the samples in the reshaped region are converted to the original region and then the deblocking filter and other filters are applied.

Процедура прямого переформирования в прогнозируемый сигнал не активизирована в следующих случаях:The procedure for direct conversion to a predicted signal is not activated in the following cases:

Текущий блок кодирован с применением внутрикадрового прогнозированияThe current block is encoded using intra-frame prediction

Текущий блок кодирован с использованием текущего изображения в качестве опоры (CPR (current picture referencing)) (также называется внутрикадровым копированием блоков, IBC) The current block is encoded using the current picture as a reference (CPR (current picture referencing)) (also called intra-block copying, IBC)

Текущий блок кодирован с применением комбинированного режима с внутрикадровым и межкадровым прогнозированием (combined inter-intra mode (CIIP)), а процедура прямого переформирования не активизирована для блока с внутрикадровым прогнозированием The current block is encoded using a combined inter-intra mode (CIIP) and direct reframing is not enabled for the intra-prediction block

3. Примеры проблем решаемых различными вариантами 3. Examples of problems solved by various options

В сегодняшнем варианте кодирования в режиме CPR/IBC существуют несколько проблем.There are several problems with today's CPR/IBC coding.

1. Опорные области изменяются динамически, что делает процедуру кодирования/декодирования усложненной.1. The reference areas change dynamically, which makes the encoding/decoding procedure complicated.

2. Легко образуются недействительные блочные векторы, которые трудно проверить, что усложняет и кодирующее устройство, и декодирующее устройство.2. Invalid block vectors are easily generated and are difficult to verify, which complicates both the encoder and the decoder.

3. Нерегулярная опорная область ведет к неэффективному кодированию блочного вектора.3. Irregular reference region leads to inefficient block vector encoding.

4. Неясно, как работать с единицами CTU размером меньше 128x128.4. It is unclear how to handle CTUs smaller than 128x128.

5. В процессе определения, является ли вектор BV действительным или недействительным, для блоков цветностной составляющей, решение принимают на основе доступности отсчета яркостной составляющей, что может привести к неверным решениям из-за структуры разбиения двойного дерева.5. In the process of determining whether the BV vector is valid or invalid for chrominance blocks, the decision is made based on the availability of the luminance component sample, which may lead to incorrect decisions due to the splitting structure of the double tree.

4. Примеры вариантов4. Examples of options

В некоторых вариантах, регулярный буфер может быть использован для создания опоры для блока в режиме CPR/IBC.In some embodiments, a regular buffer may be used to support a block in CPR/IBC mode.

Определена функция isRec(x,y) для индикации, был ли реконструирован пиксель с координатами (x,y) для использования в качестве опоры в режиме копирования IBC. Когда точка (x,y) находится вне изображения, другого среза/плитки/блока, функция isRec(x,y) имеет значение «ложно»; когда пиксель в точке (x,y) еще не был реконструирован, функция isRec(x,y) имеет значение «ложно». В другом примере, когда отсчет в точке (x,y) уже был реконструирован, но удовлетворяются некоторые другие условия, он также может быть маркирован как недоступный, например, как находящийся вне опорной области/в другой единице VPDU, и функция isRec(x,y) имеет значение «ложно».The isRec(x,y) function is defined to indicate whether a pixel at (x,y) coordinates has been reconstructed for use as a reference in IBC copy mode. When point (x,y) is outside the image, another slice/tile/block, isRec(x,y) is false; when the pixel at (x,y) has not yet been reconstructed, isRec(x,y) is false. In another example, when the sample at point (x,y) has already been reconstructed but some other conditions are met, it may also be marked as unavailable, for example as being outside the reference region/in another VPDU, and the function isRec(x, y) has the value "false".

Функция isRec(c, x,y) определена для индикации, является ли отсчет в точке (x,y) для составляющей c доступным. Например, если отсчет в точке (x, y) еще не был реконструирован, его маркируют как недоступный. В другом примере, когда отсчет в точке (x,y) уже был реконструирован, но удовлетворяются некоторые другие условия, он также может быть маркирован как недоступный, например, как находящийся вне изображения/в другом срезе/плитке/блоке/в другой единице VPDU, вне допустимой опорной области. Функция isRec(c, x,y) имеет значение «ложно», когда отсчет в точке (x, y) недоступен, в противном случае, она имеет значение «истинно».The function isRec(c, x,y) is defined to indicate whether the sample at point (x,y) for the c component is available. For example, if the sample at point (x, y) has not yet been reconstructed, it is marked as unavailable. In another example, when the sample at point (x,y) has already been reconstructed but some other conditions are met, it may also be marked as unavailable, for example, as being outside the image/in another slice/tile/block/in another VPDU , outside the permissible support area. The isRec(c, x,y) function evaluates to false when a sample at (x, y) is not available, otherwise it evaluates to true.

В последующем обсуждении, опорные отсчеты могут представлять собой реконструированные отсчеты. Отметим, что термин «буфер пикселей» может обозначать «буфер одной цветовой составляющей» или «буфер нескольких цветовых составляющих».In the following discussion, the reference samples may be reconstructed samples. Note that the term “pixel buffer” can mean “single color component buffer” or “multiple color component buffer.”

Опорный буфер для режима CPR/IBCReference buffer for CPR/IBC mode

1. Предлагается использовать буфер пикселей размером M×N для сохранения опорных отсчетов цветностной составляющей для режима CPR/IBC. 1. It is proposed to use a pixel buffer of M×N size to save reference samples of the chrominance component for the CPR/IBC mode.

- В одном из примеров размер буфера равен 64x64.- In one example, the buffer size is 64x64.

- В одном из примеров размер буфера равен 128x128.- In one example, the buffer size is 128x128.

- В одном из примеров размер буфера равен 64x128.- In one example, the buffer size is 64x128.

- В одном из примеров размер буфера равен 128x64.- In one example, the buffer size is 128x64.

- В одном из примеров, N равно высоте единицы CTU.- In one example, N is equal to the height of the CTU unit.

- В одном из примеров, N=nH, где H – высота единицы CTU, n – положительное целое число.- In one example, N=nH, where H is the height of the CTU unit, n is a positive integer.

- В одном из примеров, M равно ширине единицы CTU.- In one example, M is equal to the width of the CTU unit.

- В одном из примеров, M=mW, где W – ширина единицы CTU, m – положительное целое число.- In one example, M=mW, where W is the width of the CTU unit, m is a positive integer.

- В одном из примеров размер буфера, такой как 96x128 или 128x96, не равен размеру единицы CTU.- In one example, the buffer size, such as 96x128 or 128x96, is not equal to the CTU size.

- В одном из примеров размер буфера равен размеру единицы CTU - In one example, the buffer size is equal to the size of the CTU unit

- В одном из примеров, M=mW и N=H, где W и H обозначают ширину и высоту единицы CTU, m – положительное целое число.- In one example, M=mW and N=H, where W and H represent the width and height of the CTU, m is a positive integer.

- В одном из примеров, M=W и N=nH, где W и H обозначают ширину и высоту единицы CTU, n – положительное целое число.- In one example, M=W and N=nH, where W and H represent the width and height of the CTU, n is a positive integer.

- В одном из примеров, M=mW и N=nH, где W и H обозначают ширину и высоту единицы CTU, m и n – положительные целые числа.- In one example, M=mW and N=nH, where W and H represent the width and height of the CTU, m and n are positive integers.

- В приведенном выше примере, m и n могут зависеть от размера единицы CTU.- In the above example, m and n may depend on the size of the CTU unit.

- В одном из примеров, когда размер единицы CTU равен 128x128, m=1 и n=1.- In one example, when the CTU size is 128x128, m=1 and n=1.

- В одном из примеров, когда размер единицы CTU равен 64x64, m=4 и n=1.- In one example, when the CTU size is 64x64, m=4 and n=1.

- В одном из примеров, когда размер единицы CTU равен 32x32, m=16 и n=1.- In one example, when the CTU size is 32x32, m=16 and n=1.

- В одном из примеров, когда размер единицы CTU равен 16x16, m=64 и n=1.- In one example, when the CTU size is 16x16, m=64 and n=1.

- В качестве альтернативы, размер буфера соответствует размеру единицы CTU.- Alternatively, the buffer size corresponds to the CTU size.

- В качестве альтернативы, размер буфера соответствует размеру единицы данных виртуального конвейера (VPDU).- Alternatively, the buffer size corresponds to the size of the virtual pipeline data unit (VPDU).

- Значения M и/или N могут быть сообщены в виде сигнализации от кодирующего устройства декодирующему устройству, например в составе набора VPS/набора SPS/набора PPS/заголовка изображения/заголовка среза/заголовка группы плиток.- The M and/or N values may be signaled from an encoder to a decoder, for example as part of a VPS set/SPS set/PPS set/picture header/slice header/tile group header.

23. Значения M и/или N могут быть различными в разных профилях/уровнях/ярусах, определяемых стандартом. Предлагается использовать другой буфер пикселей размером Mc×Nc для сохранения опорных отсчетов цветностной составляющей для режима CPR/IBC.23. The values of M and/or N may be different in different profiles/levels/tiers defined by the standard. It is proposed to use another pixel buffer of size Mc×Nc to save reference samples of the chrominance component for the CPR/IBC mode.

- В одном из примеров, Mc = M/2 и Nc = N/2 для формата 4:2:0 видео- In one example, Mc = M/2 and Nc = N/2 for 4:2:0 video

- В одном из примеров, Mc = M и Nc = N для формата 4:4:4 видео- In one example, Mc = M and Nc = N for 4:4:4 video

- В одном из примеров, Mc = M и Nc = N/2 для формата 4:2:2 видео- In one example, Mc = M and Nc = N/2 for 4:2:2 video

- В качестве альтернативы, Mc и Nc могут быть независимы от M и N.- Alternatively, Mc and Nc may be independent of M and N.

- В одном из примеров, буфер цветностной составляющей содержит два канала, соответствующих составляющим Cb и Cr.- In one example, the chrominance buffer contains two channels corresponding to the Cb and Cr components.

- В одном из примеров, Mc=M и Nc=N.- In one example, Mc=M and Nc=N.

30. Предлагается использовать буфер отсчетов размером M×N для сохранения опорных отсчетов в формате RGB для режима CPR/IBC30. It is proposed to use a sample buffer of M×N size to save reference samples in RGB format for CPR/IBC mode

- В одном из примеров размер буфера равен 64x64.- In one example, the buffer size is 64x64.

- В одном из примеров размер буфера равен 128x128.- In one example, the buffer size is 128x128.

- В одном из примеров размер буфера равен 64x128.- In one example, the buffer size is 64x128.

- В одном из примеров размер буфера равен 128x64.- In one example, the buffer size is 128x64.

- В качестве альтернативы, размер буфера соответствует размеру единицы CTU.- Alternatively, the buffer size corresponds to the CTU size.

- В качестве альтернативы, размер буфера соответствует размеру единицы данных виртуального конвейера (VPDU).- Alternatively, the buffer size corresponds to the size of the virtual pipeline data unit (VPDU).

37. Предлагается, чтобы буфер мог сохранять реконструированные пиксели прежде контурной фильтрации. Контурная фильтрация может относиться к использованию деблокирующего фильтра, адаптивного контурного фильтра (adaptive loop filter (ALF)), нелинейного фильтра с адаптивным смещением (sample adaptive offset (SAO)), кросс-компонентного фильтра ALF или каких-либо других фильтров.37. It is proposed that the buffer can store the reconstructed pixels before contour filtering. Loop filtering can refer to the use of a deblocking filter, an adaptive loop filter (ALF), a sample adaptive offset (SAO) filter, a cross-component ALF filter, or some other filter.

- В одном из примеров, буфер может сохранять отсчеты текущей единицы CTU.- In one example, the buffer may store samples of the current CTU.

- В одном из примеров, буфер может сохранять отсчеты вне текущей единицы CTU.- In one example, the buffer may store samples outside the current CTU.

- В одном из примеров, буфер может сохранять отсчеты из любой части текущего изображения.- In one example, the buffer can store samples from any part of the current image.

- В одном из примеров, буфер может сохранять отсчеты из других изображений.- In one example, the buffer can store samples from other images.

42. Предлагается, чтобы буфер мог сохранять реконструированные пиксели после контурной фильтрации. Контурная фильтрация может относиться к использованию деблокирующего фильтра, адаптивного контурного фильтра (ALF), нелинейного фильтра с адаптивным смещением (SAO), кросс-компонентного фильтра ALF или каких-либо других фильтров.42. It is proposed that the buffer can store the reconstructed pixels after contour filtering. Loop filtering may refer to the use of a deblocking filter, an adaptive loop filter (ALF), a nonlinear adaptive offset filter (SAO), a cross-component ALF filter, or some other filters.

- В одном из примеров, буфер может сохранять отсчеты текущей единицы CTU.- In one example, the buffer may store samples of the current CTU.

- В одном из примеров, буфер может сохранять отсчеты вне текущей единицы CTU.- In one example, the buffer may store samples outside the current CTU.

- В одном из примеров, буфер может сохранять отсчеты из любой части текущего изображения.- In one example, the buffer can store samples from any part of the current image.

- В одном из примеров, буфер может сохранять отсчеты из других изображений.- In one example, the buffer can store samples from other images.

47. Предлагается, чтобы буфер мог сохранять реконструированные пиксели и прежде контурной фильтрации, и после контурной фильтрации. Контурная фильтрация может относиться к использованию деблокирующего фильтра, адаптивного контурного фильтра (ALF), нелинейного фильтра с адаптивным смещением (SAO), кросс-компонентного фильтра ALF или каких-либо других фильтров.47. It is proposed that the buffer can store reconstructed pixels both before and after contour filtering. Loop filtering may refer to the use of a deblocking filter, an adaptive loop filter (ALF), a nonlinear adaptive offset filter (SAO), a cross-component ALF filter, or some other filters.

- В одном из примеров, буфер может сохранять и отсчеты из текущего изображения, и отсчеты из других изображений, в зависимости от доступности этих отсчетов.- In one example, the buffer may store both samples from the current image and samples from other images, depending on the availability of those samples.

- В одном из примеров, опорные отсчеты из других изображений являются отсчетами из совокупности реконструированных отсчетов после контурной фильтрации.- In one example, the reference samples from other images are samples from a pool of reconstructed samples after contour filtering.

- В одном из примеров, опорные отсчеты из других изображений являются отсчетами из совокупности реконструированных отсчетов прежде контурной фильтрации.- In one example, the reference samples from other images are samples from a pool of reconstructed samples before contour filtering.

51. Предлагается, чтобы буфер мог сохранять отсчеты с заданной битовой глубиной, которая может отличаться от битовой глубины кодированных данных видео.51. It is proposed that the buffer can store samples at a given bit depth, which may be different from the bit depth of the encoded video data.

- В одном из примеров, битовая глубина буфера реконструкции/кодированных данных видео больше битовой глубины опорных отсчетов для режима копирования IBC, сохраненных в буфере.- In one example, the bit depth of the reconstruction buffer/encoded video data is greater than the bit depth of the IBC copy mode reference samples stored in the buffer.

- В одном из примеров, даже если внутренняя битовая глубина отличается от входной битовой глубины для последовательности видео, например, (10 бит против 8 бит), опорные отсчеты для режима копирования IBC сохраняют так, чтобы совместить с входной битовой глубиной. - In one example, even if the internal bit depth is different from the input bit depth for the video sequence, for example, (10 bits vs. 8 bits), the reference samples for the IBC copy mode are stored to be aligned with the input bit depth.

- В одном из примеров, битовая глубина идентична битовой глубине буфера реконструкции.- In one example, the bit depth is identical to the bit depth of the reconstruction buffer.

- В одном из примеров, битовая глубина идентична битовой глубине входного изображения/видео.- In one example, the bit depth is identical to the bit depth of the input image/video.

- В одном из примеров, битовая глубина идентична заданному числу.- In one example, the bit depth is identical to the given number.

- В одном из примеров, битовая глубина зависит от профиля стандарта.- In one example, the bit depth depends on the standard profile.

- В одном из примеров, битовая глубина или разность битовых глубин по сравнению с выходной битовой глубиной/входной битовой глубиной/внутренней битовой глубиной может быть сообщена в виде сигнализации в наборе SPS/наборе PPS/заголовке последовательности /заголовке изображения/заголовке среза/заголовке группы плиток/заголовке плитки или во входных данных видео других типов.- In one example, the bit depth or difference of bit depths compared to the output bit depth/input bit depth/internal bit depth may be signaled in the SPS set/PPS set/sequence header/picture header/slice header/group header tiles/tile title or in other types of video inputs.

- Предлагаемые способы могут быть применены с использованием предлагаемых определений буфера, отмеченных в других разделах, в качестве альтернативы, это может быть также применимо к существующему варианту режима с копированием IBC.- The proposed methods can be applied using the proposed buffer definitions noted in other sections, alternatively, it can also be applied to the existing IBC copy mode variant.

- Битовая глубина каждой цветовой составляющей в буфере может отличаться от других составляющих.- The bit depth of each color component in the buffer may be different from other components.

Инициализация буфераBuffer initialization

61. Предлагается инициализировать буфер с использованием заданного значения 61. It is suggested to initialize the buffer using a given value

- В одном из примеров, буфер инициализируют с использованием заданного значения.- In one example, the buffer is initialized using a given value.

- В одном из примеров, указанное заданное значение может зависеть от входной битовой глубины и/или внутренней битовой глубины.- In one example, said target value may depend on the input bit depth and/or the internal bit depth.

- В одном из примеров, буфер инициализируют с использованием среднего уровня серого, например, 128 для 8-битового сигнала или 512 для 10-битового сигнала.- In one example, the buffer is initialized using an average gray level, for example, 128 for an 8-bit signal or 512 for a 10-bit signal.

- В одном из примеров, буфер инициализируют с использованием значения forwardLUT(m), когда используется переформирование ILR. Например, m= 1<<(Bitdepth-1).- In one example, the buffer is initialized using the value forwardLUT(m) when ILR reshaping is used. For example, m= 1<<(Bitdepth-1).

- В качестве альтернативы, буфер инициализируют с использованием значения, сообщаемой в виде сигнализации в наборе SPS/наборе VPS/наборе APS/наборе PPS/заголовке последовательности/заголовке группы плиток/заголовке изображения/плитке/единице/CTU/единице кодирования/единице VPDU/области.- Alternatively, the buffer is initialized using the value reported as signaling in the SPS set/VPS set/APS set/PPS set/sequence header/tile group header/picture header/tile/unit/CTU/coding unit/VPDU unit/ areas.

- В одном из примеров, указанное заданное значение может быть выведено из отсчетов ранее декодированных изображений или срезов, или строк единиц CTU или единиц CTU или единиц CU.- In one example, said target value may be derived from samples of previously decoded pictures or slices, or strings of CTUs or CTUs or CUs.

- Указанное заданное значение может быть различной для разных цветовых составляющих.- The specified target value may be different for different color components.

69. В качестве альтернативы, предлагается инициализировать буфер с использованием декодированных пикселей из ранее декодированных блоков.69. As an alternative, it is proposed to initialize the buffer using decoded pixels from previously decoded blocks.

- В одном из примеров, в качестве декодированных пикселей используют пиксели прежде внутриконтурной фильтрации.- In one example, pixels before in-loop filtering are used as decoded pixels.

- В одном из примеров, когда размер буфера равен размеру единицы CTU, этот буфер инициализируют с использованием декодированных пикселей из ранее декодированной единицы CTU, если таковая доступна.- In one example, when the buffer size is equal to the size of the CTU, the buffer is initialized using decoded pixels from a previously decoded CTU, if available.

- В одном из примеров, когда буфера размер равен 64x64, буфер этого размера инициализируют с использованием декодированных пикселей из ранее декодированного блока размером 64x64, если таковой доступен.- In one example, when the buffer size is 64x64, the buffer of that size is initialized using decoded pixels from a previously decoded 64x64 block, if available.

- В качестве альтернативы, кроме того, если нет доступных ранее кодированных блоков, может быть применен способ из п. 8.- Alternatively, if there are no previously encoded blocks available, the method from paragraph 8 can be applied.

Ссылки на буферBuffer links

74. Блок, которому нужно использовать буфер в качестве опоры, может использовать позицию (x,y), x=0,1,2,…,M-1;y=0,1,2,…,N-1, в буфере для индикации, откуда взять опору.74. A block that needs to use a buffer as a support can use the position (x,y), x=0,1,2,…,M-1;y=0,1,2,…,N-1, in buffer to indicate where to get the support from.

75. В качестве альтернативы, опорная позиция может быть обозначена как l = y*M+x, l=0,1,…,M*N-1.75. Alternatively, the reference position can be denoted as l = y*M+x, l=0,1,…,M*N-1.

76. Когда верхняя-левая позиция блока, относящегося к текущей единице CTU, обозначена (x0,y0), блочный вектор (BVx,BVy)=(x-x0,y-y0) может быть передан декодирующему устройству для индикации, где взять опору в буфере.76. When the top-left position of a block related to the current CTU is designated (x0,y0), the block vector (BVx,BVy)=(x-x0,y-y0) can be passed to the decoder to indicate where to take the support in the buffer.

77. В качестве альтернативы, блочный вектор (BVx,BVy) может быть определен как (x-x0+Tx,y-y0+Ty), где Tx и Ty представляют собой заданные сдвиги.77. Alternatively, the block vector (BVx,BVy) can be defined as (x-x0+Tx,y-y0+Ty), where Tx and Ty represent the specified offsets.

78. Для любого пикселя в точке (x0, y0) и вектора (BVx, BVy), соответствующая опора в буфере может быть найдена в точке (x0+BVx, y0+BVy)78. For any pixel at point (x0, y0) and vector (BVx, BVy), the corresponding support in the buffer can be found at point (x0+BVx, y0+BVy)

- В одном из примеров, когда точка (x0+BVx, y0+BVy) находится вне буфера, она должна быть усечена до границы.- In one example, when the point (x0+BVx, y0+BVy) is outside the buffer, it should be truncated to the boundary.

- В качестве альтернативы, когда точка (x0+BVx, y0+BVy) находится вне буфера, ее опорное значение заранее определяют, как заданное значение, например, средний уровень серого.- Alternatively, when the point (x0+BVx, y0+BVy) is outside the buffer, its reference value is predetermined to be a specified value, for example, the average gray level.

- В качестве альтернативы, опорную позицию определяют как ((x0+BVx) mod M, (y0+BVy) mod N), так что она всегда находится в буфере.- Alternatively, the reference position is defined as ((x0+BVx) mod M, (y0+BVy) mod N), so that it is always in the buffer.

82. Для любого пикселя (x0, y0) и (BVx, BVy), когда точка (x0+BVx, y0+BVy) находится вне буфера, ее опорное значение может быть выведено из значений в буфере.82. For any pixel (x0, y0) and (BVx, BVy), when the point (x0+BVx, y0+BVy) is outside the buffer, its reference value can be inferred from the values in the buffer.

- В одном из примеров, это значение выводят из отсчета ((x0+BVx) mod M, (y0+BVy) mod N) в буфере.- In one example, this value is derived from the sample ((x0+BVx) mod M, (y0+BVy) mod N) in the buffer.

- В одном из примеров, это значение выводят из отсчета ((x0+BVx) mod M, clip(y0+BVy, 0, N-1)) в буфере.- In one example, this value is derived from the sample ((x0+BVx) mod M, clip(y0+BVy, 0, N-1)) in the buffer.

- В одном из примеров, это значение выводят из отсчета (clip(x0+BVx, 0, M-1), (y0+BVy) mod N) в буфере.- In one example, this value is derived from the sample (clip(x0+BVx, 0, M-1), (y0+BVy) mod N) in the buffer.

- В одном из примеров, это значение выводят из отсчета (clip(x0+BVx, 0, M-1), clip(y0+BVy, 0, N-1)) в буфере.- In one example, this value is derived from the sample (clip(x0+BVx, 0, M-1), clip(y0+BVy, 0, N-1)) in the buffer.

87. Могут быть не допустимы определенные координаты вне диапазона буфера 87. Certain coordinates outside the buffer range may not be allowed

- В одном из примеров, для любого пикселя в точке (x0, y0) относительно верхнего-левого угла единицы CTU и блочного вектора (BVx, BVy), имеется ограничение для потока битов данных, что точка y0+BVy должна находиться в диапазоне [0,…,N-1].- In one example, for any pixel at point (x0, y0) relative to the top-left corner of the CTU unit and the block vector (BVx, BVy), there is a constraint on the data bit stream that point y0+BVy must be in the range [0 ,…,N-1].

- В одном из примеров, для любого пикселя в точке (x0, y0) относительно верхнего-левого угла единицы CTU и блочного вектора (BVx, BVy), имеется ограничение для потока битов данных, что точка x0+BVx должна находиться в диапазоне [0,…,M-1].- In one example, for any pixel at point (x0, y0) relative to the top-left corner of the CTU unit and the block vector (BVx, BVy), there is a constraint on the data bit stream that point x0+BVx must be in the range [0 ,…,M-1].

- В одном из примеров, для любого пикселя в точке (x0, y0) относительно верхнего-левого угла единицы CTU и блочного вектора (BVx, BVy), имеется ограничение для потока битов данных, что точка y0+BVy должна находиться в диапазоне [0,…,N-1] и точка x0+BVx должна находиться в диапазоне [0,…,M-1].- In one example, for any pixel at point (x0, y0) relative to the top-left corner of the CTU unit and the block vector (BVx, BVy), there is a constraint on the data bit stream that point y0+BVy must be in the range [0 ,…,N-1] and point x0+BVx must be in the range [0,…,M-1].

91. Когда принятый в виде сигнализации или выведенный блочный вектор для одного блока указывает в некоторое место вне буфера, может быть применено соответствующее заполнение буфера.91. When a signaled or inferred block vector for one block points to some location outside the buffer, appropriate buffer padding may be applied.

- В одном из примеров, значение любого отсчета вне буфера определено с использованием заданного значения.- In one example, the value of any sample outside the buffer is determined using a given value.

- В одном из примеров, это значение может быть 1<<(Bitdepth-1), например 128 для 8-битовых сигналов и 512 для 10-битовых сигналов. - In one example, this value could be 1<<(Bitdepth-1), such as 128 for 8-bit signals and 512 for 10-bit signals.

- В одном из примеров, это значение может быть forwardLUT(m), когда используется переформирование ILR. Например m= 1<<(Bitdepth-1). - In one example, this value could be forwardLUT(m) when ILR reshaping is used. For example m= 1<<(Bitdepth-1).

- В качестве альтернативы, индикация указанной заданного значения может быть сообщена в виде сигнализации или обозначена в наборе SPS/наборе PPS/заголовке последовательности/заголовке изображения/заголовке среза/заголовке плитки/единице CTU/на уровне единицы CU.- Alternatively, the indication of the specified set value may be signaled or indicated in the SPS set/PPS set/sequence header/picture header/slice header/tile header/CTU unit/CU unit level.

- В одном из примеров, любой отсчет вне буфера определяют как значение ближайшего отсчета в буфере.- In one example, any sample outside the buffer is defined as the value of the nearest sample in the buffer.

97. Способы обработки опоры из буфера могут различаться в горизонтальном направлении и вертикальном направлении, либо могут различаться в соответствии с положением текущего блока (например, близко к границе изображения или нет).97. The way the support is processed from the buffer may differ in the horizontal direction and the vertical direction, or may differ according to the position of the current block (for example, close to the image border or not).

- В одном из примеров, когда точка y0+BVy находится вне интервала [0, N-1], значению отсчета в точке (x0+BVx, y0+BVy) назначают заданное значение.- In one example, when the point y0+BVy is outside the interval [0, N-1], the sample value at the point (x0+BVx, y0+BVy) is assigned a specified value.

- В одном из примеров, когда точка x0+BVx находится вне интервала [0, M-1], значению отсчета в точке (x0+BVx, y0+BVy) назначают заданное значение.- In one example, when the point x0+BVx is outside the interval [0, M-1], the sample value at the point (x0+BVx, y0+BVy) is assigned a specified value.

- В качестве альтернативы, значению отсчета в точке (x0+BVx, y0+BVy) назначают значение ((x0+BVx)mod M, y0+BVy), что может привлекать другой способ для дальнейшего вывода, если ((x0+BVx)mod M, y0+BVy) по-прежнему находится вне буфера.- Alternatively, the sample value at point (x0+BVx, y0+BVy) is assigned the value ((x0+BVx)mod M, y0+BVy), which may involve another method for further inference if ((x0+BVx) mod M, y0+BVy) is still outside the buffer.

- В качестве альтернативы, значению отсчета в точке (x0+BVx, y0+BVy) назначают значение (x0+BVx, (y0+BVy) mod N), что может привлекать другой способ для дальнейшего вывода, если (x0+BVx, (y0+BVy) mod N) по-прежнему находится вне буфера.- Alternatively, the sample value at point (x0+BVx, y0+BVy) is assigned the value (x0+BVx, (y0+BVy) mod N), which may involve another method for further inference if (x0+BVx, ( y0+BVy) mod N) is still outside the buffer.

Представление блочного вектораBlock vector representation

102. Каждый компонент блочного вектора (BVx, BVy) или один из этих компонентов может быть нормирован в некоторый диапазон.102. Each component of a block vector (BVx, BVy) or one of these components can be normalized to some range.

- В одном из примеров, компонент BVx может быть заменен компонентом (BVx mod M).- In one example, the BVx component can be replaced by the (BVx mod M) component.

- В качестве альтернативы, компонент BVx может быть заменен компонентом ((BVx+X) mod M)-X, где X – заданное значение.- Alternatively, the BVx component can be replaced by the ((BVx+X) mod M)-X component, where X is the specified value.

- В одном из примеров, X равно 64.- In one example, X is equal to 64.

- В одном из примеров, X равно M/2;- In one example, X is equal to M/2;

- В одном из примеров, X равно горизонтальной координате блока относительно текущей единицы CTU. - In one example, X is equal to the horizontal coordinate of the block relative to the current CTU.

- В одном из примеров, компонент BVy может быть заменен компонентом (BVy mod N).- In one example, the component BVy can be replaced by the component (BVy mod N).

- В качестве альтернативы, компонент BVy может быть заменен компонентом ((BVy+Y) mod N)-Y, где Y – заданное значение.- Alternatively, the BVy component can be replaced by the ((BVy+Y) mod N)-Y component, where Y is the specified value.

- В одном из примеров, Y равно 64.- In one example, Y is 64.

- В одном из примеров, Y равно N/2;- In one example, Y is equal to N/2;

- В одном из примеров, Y равно вертикальной координате блока относительно текущей единицы CTU.- In one example, Y is equal to the vertical coordinate of the block relative to the current CTU.

113. Компоненты BVx и BVy могут иметь разные нормированные диапазоны.113. Components BVx and BVy may have different normalized ranges.

114. Разность блочных векторов (BVDx, BVDy) может быть нормирована в некоторый диапазон.114. The difference of block vectors (BVDx, BVDy) can be normalized to a certain range.

- В одном из примеров, компонент BVDx может быть заменен компонентом (BVDx mod M), где результатом функции взятия по модулю (mod) является остаток.- In one example, the component BVDx can be replaced by the component (BVDx mod M), where the result of the modulo function (mod) is the remainder.

- В качестве альтернативы, компонент BVDx может быть заменен компонентом ((BVDx+X) mod M)-X, где X – заданное значение.- Alternatively, the BVDx component can be replaced by the ((BVDx+X) mod M)-X component, where X is the specified value.

- В одном из примеров, X равно 64.- In one example, X is equal to 64.

- В одном из примеров, X равно M/2;- In one example, X is equal to M/2;

- В одном из примеров, компонент BVy может быть заменен компонентом (BVDy mod N).- In one example, the component BVy can be replaced by the component (BVDy mod N).

- В качестве альтернативы, компонент BVy может быть заменен компонентом ((BVDy+Y) mod N)-Y, где Y – заданное значение.- Alternatively, the BVy component can be replaced by the ((BVDy+Y) mod N)-Y component, where Y is the specified value.

- В одном из примеров, Y равно 64.- In one example, Y is 64.

- В одном из примеров, Y равно N/2;- In one example, Y is equal to N/2;

123. Компоненты BVDx и BVDy могут иметь разные нормированные диапазоны.123. The components BVDx and BVDy may have different normalized ranges.

Проверка действительности для блочного вектораValidity check for block vector

Обозначим ширину и высоту буфера для режима копирования IBC как Wbuf и Hbuf. Для блока размером WxH (это может быть блок яркостной составляющей, блок цветностной составляющей, единица CU, единица TU, субблок размером 4x4, 2x2 или другие субблоки), начиная от точки (X, Y) относительно верхнего левого угла изображения, следующее может быть применено для сообщения, действителен блочный вектор (BVx, BVy) или нет. Пусть Wpic и Hpic обозначают ширину и высоту изображения и; Wctu и Hctu обозначают ширину и высоту единицы CTU. Результатом функции floor(x) является наибольшее целое число не больше x. Функция isRec(x, y) определяет, был ли отсчет в точке (x, y) реконструирован.Let's denote the width and height of the buffer for the IBC copy mode as W buf and H buf . For a WxH block (this could be a luma block, a chroma block, a CU unit, a TU unit, a 4x4 sub-block, 2x2 or other sub-blocks) starting from a point (X,Y) relative to the top left corner of the image, the following can be applied to report whether the block vector (BVx, BVy) is valid or not. Let W pic and H pic denote the width and height of the image and; W ctu and H ctu denote the width and height of the CTU unit. The result of the function floor(x) is the largest integer not greater than x. The function isRec(x, y) determines whether the sample at point (x, y) has been reconstructed.

124. Блочный вектор (BVx, BVy) может быть установлен действительным, даже если какая-либо опорная позиция находится вне границ изображения.124. A block vector (BVx, BVy) can be set valid even if any reference position is outside the image boundaries.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если X+BVx < 0.- In one example, a block vector can be set to real even if X+BVx < 0.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если X+W+BVx > Wpic.- In one example, a block vector can be set to real even if X+W+BVx > W pic .

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если Y+BVy < 0.- In one example, a block vector can be set to real even if Y+BVy < 0.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если Y+H+BVy > Hpic.- In one example, a block vector can be set to real even if Y+H+BVy > H pic .

129. Блочный вектор (BVx, BVy) может быть установлен как действительный, даже если какая-либо опорная позиция находится вне текущей строки единиц CTU.129. A block vector (BVx, BVy) can be set as valid even if any reference position is outside the current line of CTU units.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если Y+BVy<floor(Y/ Hctu)* Hctu.- In one example, a block vector can be set to real even if Y+BVy<floor(Y/ H ctu )* H ctu .

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если Y+H+BVy>=floor(Y/ Hctu)*Hctu+ Hctu.- In one example, a block vector can be set to real even if Y+H+BVy>=floor(Y/ H ctu )*H ctu + H ctu .

132. Блочный вектор (BVx, BVy) может быть установлен как действительный, даже если какая-либо опорная позиция находится вне текущей и (n-1) левых единиц CTU, где n обозначает число единиц CTU (включая или исключая текущую единицу CTU), которые могут быть использованы в качестве опорной области для режима копирования IBC.132. A block vector (BVx, BVy) can be set as valid even if any reference position is outside the current and (n-1) left CTUs, where n denotes the number of CTUs (including or excluding the current CTU), which can be used as a reference area for the IBC copy mode.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если X+BVx<floor(X/Wctu)* Wctu - (n-1)* Wctu.- In one example, a block vector can be set to real even if X+BVx<floor(X/W ctu )* W ctu - (n-1)* W ctu .

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если X+W+BVx > floor(X/Wctu)* Wctu + Wctu - In one example, a block vector can be set to real even if X+W+BVx > floor(X/W ctu )* W ctu + W ctu

135. Блочный вектор (BVx, BVy) может быть установлен как действительный, даже если какой-то определенный отсчет еще не был реконструирован.135. A block vector (BVx, BVy) can be set to be valid even if a particular sample has not yet been reconstructed.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если функция isRec(X+BVx, Y+ BVy) является ложной.- In one example, a block vector can be set to real even if the function isRec(X+BVx, Y+ BVy) is false.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если функция isRec(X+BVx +W-1, Y+BVy) является ложной.- In one example, a block vector can be set to real even if the function isRec(X+BVx +W-1, Y+BVy) is false.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если функция isRec(X+BVx, Y+BVy +H-1) является ложной.- In one example, a block vector can be set to real even if the function isRec(X+BVx, Y+BVy +H-1) is false.

- В одном из примеров, блочный вектор может быть установлен как действительный, даже если функция isRec(X+BVx +W-1, Y+BVy +H-1) является ложной.- In one example, a block vector can be set to real even if the function isRec(X+BVx +W-1, Y+BVy +H-1) is false.

140. Блочный вектор (BVx, BVy) может быть всегда установлен как действительный, когда блок не является 1-ой единицей CTU в строке единиц CTU.140. A block vector (BVx, BVy) can always be set to valid when the block is not the 1st CTU in a row of CTUs.

- В качестве альтернативы, блочный вектор может быть всегда установлен как действительный.- Alternatively, the block vector can be set to always real.

142. Блочный вектор (BVx, BVy) может быть всегда установлен как действительный, когда удовлетворяются следующие 3 условия 142. A block vector (BVx, BVy) can always be set as valid when the following 3 conditions are satisfied

- X + BVx >= 0- X + BVx >= 0

- Y + BVy >= floor(Y / Hctu)- Y + BVy >= floor(Y / H ctu )

- isRec(X + BVx + W - 1, Y + BVy + H - 1) == true (истинно)- isRec(X + BVx + W - 1, Y + BVy + H - 1) == true (true)

- В качестве альтернативы, когда удовлетворяются все три условия для блока 1-ой единицы CTU в строке единиц CTU, блочный вектор может быть всегда установлен как действительный.- Alternatively, when all three conditions are satisfied for the 1st CTU block in a row of CTUs, the block vector can be set to always be valid.

144. Когда блочный вектор (BVx, BVy) действителен, копирование отсчетов для соответствующего блока может быть основано на этом блочном векторе.144. When a block vector (BVx, BVy) is valid, copying samples for the corresponding block can be based on this block vector.

- В одном из примеров, прогнозирование отсчета (X, Y) может быть осуществлено от ((X+BVx)%Wbuf, (Y+BVy)%Hbuf)- In one example, the prediction of the sample (X, Y) can be carried out from ((X+BVx)%W buf , (Y+BVy)%H buf )

Обновление буфераBuffer update

146. При кодировании нового изображения или плитки, может быть произведен сброс буфера.146. When encoding a new image or tile, the buffer may be reset.

- Термин «сброс» может означать, что буфер инициализируют.- The term "reset" can mean that the buffer is being initialized.

- Термин «сброс» может обозначать, что всем отсчетам/пикселям в буфере присваивают заданное значение (например, 0 или -1).- The term "reset" can mean that all samples/pixels in the buffer are assigned a given value (eg 0 or -1).

149. При завершении кодирования единицы VPDU, буфер может быть обновлен реконструированными значениями этой единицы VPDU.149. Upon completion of encoding of a VPDU, the buffer may be updated with the reconstructed values of that VPDU.

150. При завершении кодирования единицы CTU, буфер может быть обновлен реконструированными значениями этой единицы CTU.150 When encoding of a CTU is completed, the buffer may be updated with the reconstructed values of that CTU.

- В одном из примеров, когда буфер не заполнен целиком, этот буфер может быть обновлен последовательно одна единица CTU за другой.- In one example, when the buffer is not completely full, this buffer can be updated sequentially one CTU unit after another.

- В одном из примеров, когда буфер заполнен целиком, будут обновлять область буфера, соответствующую самой старой единице CTU.- In one example, when the buffer is completely full, the buffer area corresponding to the oldest CTU will be updated.

- В одном из примеров, когда M=mW и N=H (W и H обозначают размеры единицы CTU; M и N обозначают размеры буфера) и ранее обновленная область начинается с (kW, 0), следующая стартовая позиция для обновления будут ((k+1)W mod M, 0).- In one example, when M=mW and N=H (W and H denote CTU unit sizes; M and N denote buffer sizes) and the previously updated area starts at (kW, 0), the next starting position for update will be (( k+1)W mod M, 0).

154. Сброс буфера может производиться в начале каждой строки единиц CTU.154. A buffer flush can occur at the beginning of each line of CTUs.

- В качестве альтернативы, сброс буфера может производиться в начале декодирования каждой единицы CTU.- Alternatively, a buffer flush may occur at the start of decoding of each CTU.

- В качестве альтернативы, сброс буфера может производиться в начале декодирования одной плитки.- Alternatively, a buffer flush can be performed at the start of decoding one tile.

- В качестве альтернативы, сброс буфера может производиться в начале декодирования одной группы плиток/изображения.- Alternatively, a buffer flush can be performed at the start of decoding one group of tiles/image.

158. При завершении кодирования блока, начиная с точки (x,y), соответствующая область буфера, начиная с этой точки (x,y), будет обновлена реконструированными данными этого блока.158. When encoding of a block starting at point (x,y) is completed, the corresponding buffer region starting at that point (x,y) will be updated with the reconstructed data of that block.

- В одном из примеров, координаты (x,y) обозначают позицию относительно верхнего-левого угла единицы CTU.- In one example, the (x,y) coordinates indicate a position relative to the top-left corner of the CTU.

160. При завершении кодирования блока относительно изображения соответствующая область буфера будет обновлена реконструированными данными этого блока.160. When encoding of a block relative to an image is completed, the corresponding buffer area will be updated with the reconstructed data of that block.

- В одном из примеров, значение в позиции (x mod M, y mod N) в буфере может быть обновлено реконструированным значением пикселя из позиции (x, y) относительно верхнего-левого угла изображения.- In one example, the value at position (x mod M, y mod N) in the buffer can be updated with the reconstructed pixel value at position (x, y) relative to the top-left corner of the image.

- В одном из примеров, значение в позиции (x mod M, y mod N) в буфере может быть обновлено реконструированным значением пикселя из позиции (x, y) относительно верхнего-левого угла текущей плитки.- In one example, the value at position (x mod M, y mod N) in the buffer can be updated with the reconstructed pixel value at position (x, y) relative to the top-left corner of the current tile.

- В одном из примеров, значение в позиции (x mod M, y mod N) в буфере может быть обновлено реконструированным значением пикселя из позиции (x, y) относительно верхнего-левого угла текущей строки единиц CTU.- In one example, the value at position (x mod M, y mod N) in the buffer can be updated with the reconstructed pixel value at position (x, y) relative to the top-left corner of the current string of CTUs.

- В одном из примеров, значение в буфере может быть обновлено реконструированными значениями пикселей после совмещения битовой глубины.- In one example, the value in the buffer may be updated with the reconstructed pixel values after bit depth alignment.

165. При завершении кодирования блока, начиная с точки (x,y), соответствующая область буфера, начиная с точки (xb,yb), будет обновлена реконструированными данными этого блока, где (xb, yb) и (x, y) являются разными координатами 165. When encoding of a block starting at point (x,y) is completed, the corresponding buffer region starting at point (xb,yb) will be updated with the reconstructed data of that block, where (xb, yb) and (x, y) are different coordinates

- В одном из примеров, координаты (x,y) представляют позицию относительно верхнего-левого угла единицы CTU, и координаты (xb, yb) равны (x+update_x, y+update_y), где приращения update_x и update_y указывают на обновляемую позицию в буфере.- In one example, the coordinates (x,y) represent the position relative to the top-left corner of the CTU, and the coordinates (xb, yb) are equal to (x+update_x, y+update_y), where the increments update_x and update_y indicate the position being updated in buffer.

167. В приведенных выше примерах, реконструированные значения блока могут указывать реконструированные значения прежде применения фильтров (например, деблокирующего фильтра).167. In the above examples, the reconstructed block values may indicate the reconstructed values before applying filters (eg, a deblocking filter).

- В качестве альтернативы, реконструированные значения блока могут указывать реконструированные значения после применения фильтров (например, деблокирующего фильтра).- Alternatively, the reconstructed block values may indicate the reconstructed values after applying filters (eg, a deblocking filter).

169. При обновлении буфера с использованием реконструированных отсчетов, эти реконструированные отсчеты могут быть сначала модифицированы прежде сохранения, так что битовая глубина отсчетов может быть изменена.169. When updating a buffer using reconstructed samples, these reconstructed samples may be first modified before being stored so that the bit depth of the samples may be changed.

- В одном из примеров, буфер обновляют значением реконструированного отсчета после выравнивания битовой глубины отсчета с битовой глубиной буфера.- In one example, the buffer is updated with the value of the reconstructed sample after aligning the bit depth of the sample with the bit depth of the buffer.

- В одном из примеров, значением в буфере обновляют в соответствии с значением {p+[1<<(b-1)]}>>b, где p обозначает значение реконструированного отсчета, b обозначает заданное значение сдвига битов.- In one example, the value in the buffer is updated according to the value {p+[1<<(b-1)]}>>b, where p denotes the value of the reconstructed sample, b denotes the specified bit shift value.

- В одном из примеров, значение в буфере обновляют в соответствии со значением clip({p+[1<<(b-1)]}>>b, 0, (1<<bitdepth)-1), где p обозначает значение реконструированного отсчета, b обозначает заданное значение сдвига битов, bitdepth обозначает битовую глубину буфера.- In one example, the value in the buffer is updated according to the value of clip({p+[1<<(b-1)]}>>b, 0, (1<<bitdepth)-1), where p denotes the value of the reconstructed count, b denotes the specified bit shift value, bitdepth denotes the bit depth of the buffer.

- В одном из примеров, значение в буфере обновляют в соответствии со значением {p+[1<<(b-1)-1]}>>b, где p обозначает значение реконструированного отсчета, b обозначает заданное значение сдвига битов.- In one example, the value in the buffer is updated according to the value {p+[1<<(b-1)-1]}>>b, where p denotes the value of the reconstructed sample, b denotes the specified bit shift value.

- В одном из примеров, значение в буфере обновляют в соответствии со значением clip({p+[1<<(b-1)-1]}>>b, 0, (1<<bitdepth)-1), где p обозначает значение реконструированного отсчета, b обозначает заданное значение сдвига битов, bitdepth обозначает битовую глубину буфера.- In one example, the value in the buffer is updated according to the value of clip({p+[1<<(b-1)-1]}>>b, 0, (1<<bitdepth)-1), where p denotes the value of the reconstructed sample, b denotes the specified bit shift value, bitdepth denotes the bit depth of the buffer.

- В одном из примеров, значение в буфере обновляют в соответствии со значением p>>b.- In one example, the value in the buffer is updated according to the value of p>>b.

- В одном из примеров, значение в буфере обновляют в соответствии со значением clip(p>>b, 0, (1<<bitdepth)-1), где bitdepth обозначает битовую глубину буфера.- In one example, the value in the buffer is updated according to the value clip(p>>b, 0, (1<<bitdepth)-1), where bitdepth denotes the bit depth of the buffer.

- В приведенных выше примерах число b может быть равно битовой глубине реконструированных отсчетов минус битовая глубина входного отсчета.- In the above examples, the number b may be equal to the bit depth of the reconstructed samples minus the bit depth of the input sample.

178. При использовании отсчетов из буфера для формирования прогнозирования может быть применена предварительная обработка.178. When using samples from a buffer to generate a prediction, preprocessing may be applied.

- В одном из примеров, прогнозируемое значение соответствует p<<b, где p обозначает значение отсчета в буфере, и b обозначает заданное значение.- In one example, the predicted value corresponds to p<<b, where p denotes the sample value in the buffer, and b denotes the target value.

- В одном из примеров, прогнозируемое значение соответствует clip(p<<b, 0, 1<<bitdepth), где bitdepth обозначает битовое значение для реконструированных отсчетов.- In one example, the predicted value corresponds to clip(p<<b, 0, 1<<bitdepth), where bitdepth denotes the bit value for the reconstructed samples.

- В одном из примеров, прогнозируемое значение соответствует (p<<b)+(1<<(bitdepth-1)), где p обозначает значение отсчета в буфере, и b обозначает заданное значение, bitdepth обозначает битовую глубину для реконструированных отсчетов.- In one example, the predicted value corresponds to (p<<b)+(1<<(bitdepth-1)), where p denotes the value of the sample in the buffer, and b denotes the target value, bitdepth denotes the bit depth for the reconstructed samples.

- В приведенных выше примерах число b может быть равно битовой глубине реконструированных отсчетов минус битовая глубина входного отсчета.- In the above examples, the number b may be equal to the bit depth of the reconstructed samples minus the bit depth of the input sample.

183. Буфер может быть обновлен в некотором конкретном порядке.183. The buffer may be updated in some specific order.

- В одном из примеров, буфер может быть обновлен последовательно.- In one example, the buffer can be updated sequentially.

- В одном из примеров, буфер может быть обновлен в соответствии с порядком реконструированных блоков.- In one example, the buffer may be updated according to the order of the reconstructed blocks.

186. Когда буфер заполнен целиком, отсчеты в буфере могут быть заменены самыми последними реконструированными отсчетами.186. When the buffer is completely full, the samples in the buffer can be replaced with the most recently reconstructed samples.

- В одном из примеров, обновление отсчетов может происходить по принципу «первый пришел - первый ушел».- In one example, updating of readings can occur on a first-in, first-out basis.

- В одном из примеров, могут быть заменены самые старые отсчеты.- In one example, the oldest samples may be replaced.

- В одном из примеров, отсчетам может быть назначен приоритет, и замена может осуществляться в соответствии с приоритетом.- In one example, samples may be assigned a priority, and replacement may be carried out according to priority.

- В одном из примеров, отсчеты могут быть маркированы как «долговременные» (“long-term”), так что первыми будут заменять другие отсчеты.- In one example, samples can be marked as “long-term”, so that other samples will be replaced first.

- В одном из примеров, вместе с блоком может быть передан флаг для индикации высокого приоритета.- In one example, a flag may be sent along with the block to indicate high priority.

- В одном из примеров, вместе с блоком может быть передан номер для индикации приоритета.- In one example, a number may be transmitted along with the block to indicate priority.

- В одном из примеров, отсчетам из реконструированного блока с некоторой характеристикой может быть назначен более высокий приоритет, так что другие отсчеты будут заменять первыми.- In one example, samples from a reconstructed block with some characteristic may be given higher priority so that other samples are replaced first.

- В одном из примеров, когда доля отсчетов, кодируемых в режиме с копированием IBC, больше некоторого порогового значения, всем отсчетам такого блока может быть назначен высокий приоритет.- In one example, when the proportion of samples encoded in IBC copy mode is greater than a certain threshold, all samples in that block can be assigned high priority.

- В одном из примеров, когда доля отсчетов, кодируемых в режиме палитры, больше некоторого порогового значения, всем отсчетам такого блока может быть назначен высокий приоритет.- In one example, when the proportion of samples encoded in palette mode is greater than some threshold value, all samples of such a block can be assigned high priority.

- В одном из примеров, когда доля отсчетов, кодируемых в режиме с копированием IBC или в режиме палитры, больше некоторого порогового значения, всем отсчетам такого блока может быть назначен высокий приоритет.- In one example, when the proportion of samples encoded in IBC copy mode or palette mode is greater than a certain threshold, all samples in that block can be assigned high priority.

- В одном из примеров, когда доля отсчетов, кодируемых в режиме с пропуском преобразования, больше некоторого порогового значения, всем отсчетам такого блока может быть назначен высокий приоритет.- In one example, when the proportion of samples encoded in skip-transform mode is greater than a certain threshold value, all samples of such a block can be assigned high priority.

- Указанное пороговое значение может быть различным в соответствии с размером блока, цветовой составляющей, размером единицы CTU.- The specified threshold value may vary according to block size, color component, CTU size.

- Пороговое значение можно сообщить в виде сигнализации в наборе SPS/наборе PPS/заголовке последовательности /заголовке среза/в группе плиток/на уровне плиток/в области.- The threshold value can be reported as an alarm in the SPS set/PPS set/sequence header/slice header/tile group/tile level/area.

- В одном из примеров, тот факт, что буфер заполнен целиком, может означать, что число доступных отсчетов в буфере не меньше конкретного порогового значения.- In one example, the fact that the buffer is completely full may mean that the number of available samples in the buffer is not less than a particular threshold.

- В одном из примеров, когда число доступных отсчетов в буфере не меньше 64x64x3 отсчетов яркостной составляющей, буфер может быть признан заполненным целиком.- In one example, when the number of available samples in the buffer is not less than 64x64x3 samples of the luminance component, the buffer can be considered completely filled.

Альтернативная комбинация буфераAlternative Buffer Combination

202. Вместо того чтобы всегда использовать три ранее кодированных блока размером 64x64 каждый в качестве опорной области, предлагается адаптивно изменять эту конфигурацию на основе расположения текущего блока (или единицы VPDU).202. Instead of always using three previously encoded blocks of size 64x64 each as a reference area, it is proposed to adaptively change this configuration based on the location of the current block (or VPDU).

- В одном из примеров, при кодировании/декодировании блока размером 64×64, предыдущие 3 блока размером 64×64 могут быть использованы в качестве опоры. По сравнению с фиг. 2, могут быть применены больше видов комбинаций предшествующих блоков размером 64×64. На фиг. 2 показан пример различных комбинаций предыдущих блоков размером 64×64.- In one example, when encoding/decoding a block of size 64x64, the previous 3 blocks of size 64x64 can be used as a reference. Compared to FIG. 2, more kinds of combinations of previous 64×64 blocks can be applied. In fig. Figure 2 shows an example of various combinations of previous 64x64 blocks.

204. Вместо использования порядка z-scan сканирования может быть использован вертикальный порядок сканирования.204. Instead of using a z-scan scan order, a vertical scan order may be used.

- В одном из примеров, когда один блок разбит на 4 единицы VPDU с индексами 0..3 в порядке z-scan, порядок кодирования/декодирования имеет вид 0, 2, 1, 3.- In one example, when one block is divided into 4 VPDUs with indices 0..3 in z-scan order, the encoding/decoding order is 0, 2, 1, 3.

- В одном из примеров, при кодировании/декодировании блоков размером 64×64 предшествующие 3 блока размером 64×64 каждый могут быть использованы в качестве опоры. По сравнению с фиг. 2, могут быть применены больше типов порядков кодирования/декодирования блоков размером 64×64. На фиг. 4 показан пример другого порядка кодирования/декодирования блоков размером 64×64.- In one example, when encoding/decoding blocks of size 64x64, the previous 3 blocks of size 64x64 each can be used as a reference. Compared to FIG. 2, more types of encoding/decoding orders of 64x64 blocks can be applied. In fig. Figure 4 shows an example of a different encoding/decoding order for 64x64 blocks.

- В качестве альтернативы, способы, приведенные выше, могут быть применены только для кодирования контента экрана - Alternatively, the methods above can only be applied to encode screen content

- В качестве альтернативы, способы, приведенные выше, могут быть применены только тогда, когда режим CPR активизирован для одной плитки/группы/плиток/изображения. - Alternatively, the methods above can only be applied when CPR mode is activated for a single tile/group/tiles/image.

- В качестве альтернативы, способы, приведенные выше, могут быть применены только тогда, когда режим CPR активизирован для одной единицы CTU или одной строки единиц CTU. - Alternatively, the methods above can only be applied when CPR mode is enabled for one CTU or one row of CTUs.

Виртуальный буфер для режима с копированием IBC Virtual buffer for IBC copy mode

В последующем, ширина и высота единицы VPDU обозначены как WVPDU (например, 64) и HVPDU (например, 64), соответственно в отсчетах яркостной составляющей. В качестве альтернативы, символы WVPDU и/или HVPDU могут обозначать ширину и/или высоту другой единицы видео (например, единицы CTU).In the following, the width and height of the VPDU unit are designated as W VPDU (eg, 64) and H VPDU (eg, 64), respectively, in luminance component counts. Alternatively, the W VPDU and/or H VPDU symbols may indicate the width and/or height of another video unit (eg, a CTU).

210. Виртуальный буфер можно поддерживать для отслеживания статуса опорной области для режима с копированием IBC.210. A virtual buffer may be maintained to monitor the status of the reference area for IBC copy mode.

- В одном из примеров, виртуальный буфер имеет размер m WVPDU x n HVPDU.- In one example, the virtual buffer has a size of m W VPDU xn H VPDU .

- В одном из примеров, m равно 3 и n равно 2.- In one example, m is 3 and n is 2.

- В одном из примеров, параметры m и/или n могут зависеть от разрешения изображения, размеров единиц CTU.- In one example, the parameters m and/or n may depend on the image resolution, CTU sizes.

- В одном из примеров, параметры m и/или n могут быть переданы в виде сигнализации или предварительно заданы.- In one example, parameters m and/or n may be signaled or preset.

- В одном из примеров, способы, описываемые в приведенных выше разделах и подразделах, могут быть применены к виртуальному буферу.- In one example, the techniques described in the sections and subsections above can be applied to a virtual buffer.

- В одном из примеров, отсчет в точке (x, y) относительно верхнего-левого угла изображения/среза/плитки/кирпича, может быть отображен на (x%(mWVPDU), y%(nHVPDU))- In one example, the reading at point (x, y) relative to the top-left corner of the image/slice/tile/brick can be mapped to (x%(mW VPDU ), y%(nH VPDU ))

214. Для отслеживания доступности каждого отсчета, ассоциированного с виртуальным буфером, может быть использован некий массив.214. An array can be used to track the availability of each sample associated with a virtual buffer.

- В одном из примеров, с отсчетом в виртуальном буфере может быть ассоциирован флаг для спецификации, может ли этот отсчет в буфере быть использован в качестве опоры для режима с копированием IBC, или нет.- In one example, a flag may be associated with a sample in the virtual buffer to specify whether the sample in the buffer can be used as a reference for IBC copy mode or not.

- В одном из примеров, каждый блок размером 4x4, содержащий отсчеты яркостной составляющей и цветностной составляющей может совместно использовать флаг для индикации, могут ли какие-либо отсчеты, ассоциированные с рассматриваемым блоком, быть использованы в качестве опоры для режима с копированием IBC, или нет.- In one example, each 4x4 block containing luma and chrominance samples may share a flag to indicate whether any samples associated with the block in question can be used as a reference for IBC copy mode or not .

- В одном из примеров, массив, соответствующий 3x2 VPDU, (например, каждый блок размером 4x4 может совместно использовать один и тот же флаг доступности) поддерживают для отслеживания доступности опорных отсчетов для режима копирования IBC.- In one example, an array corresponding to 3x2 VPDUs (eg, each 4x4 block can share the same availability flag) is maintained to track the availability of reference samples for the IBC copy mode.

- В одном из примеров, массив, соответствующий 4x2 VPDU, (например, каждый блок размером 4x4 может совместно использовать один и тот же флаг доступности) поддерживают для отслеживания доступности опорных отсчетов для режима копирования IBC.- In one example, an array corresponding to 4x2 VPDUs (eg, each 4x4 block can share the same availability flag) is maintained to track the availability of reference samples for the IBC copy mode.

219. После завершения декодирования единицы VPDU или единицы видео некоторые отсчеты, ассоциированные с виртуальным буфером, могут быть маркированы в качестве недоступных для опоры в режиме с копированием IBC.219. After decoding of a VPDU or video unit has completed, some samples associated with the virtual buffer may be marked as unavailable for reference in IBC copy mode.

- В одном из примеров, какие именно отсчеты могут быть маркированы в качестве недоступных, зависит от расположения самой последней декодированной единицы VPDU.- In one example, which samples may be marked as unavailable depends on the location of the most recently decoded VPDU.

- Когда один отсчет маркирован как недоступный, прогнозирование от этого отсчета не допускается.- When one sample is marked as unavailable, prediction from that sample is not allowed.

- В качестве альтернативы, другие способы (например, использование значений по умолчанию) могут быть далее применены для вывода предиктора для замены недоступного отсчета.- Alternatively, other methods (eg using default values) can be further applied to output a predictor to replace the unavailable sample.

223. Положение самой последней по времени декодированной единицы VPDU может быть записано с целью помочь идентифицировать, какие отсчеты, ассоциированные с виртуальным буфером, могут быть маркированы в качестве недоступных.223. The position of the most recently decoded VPDU may be recorded to help identify which samples associated with the virtual buffer may be marked as unavailable.

- В одном из примеров, в начале декодирования единицы VPDU, некоторые отсчеты, ассоциированные с виртуальным буфером, могут быть маркированы как недоступные в соответствии с расположением самой последней декодированной единицы VPDU.- In one example, at the beginning of decoding a VPDU, some samples associated with the virtual buffer may be marked as unavailable according to the location of the most recently decoded VPDU.

- В одном из примеров, если обозначить (xPrevVPDU, yPrevVPDU) как верхнюю-левую позицию относительно верхнего-левого угла изображения/среза/плитки/кирпича/другой единицы обработки видео из самой последней декодированной единицы VPDU, и если yPrevVPDU%(n HVPDU) равно 0, некоторые позиции (x, y) могут быть маркированы как недоступные.- In one example, if we designate (xPrevVPDU, yPrevVPDU) as the top-left position relative to the top-left corner of the image/slice/tile/brick/other video processing unit from the most recently decoded VPDU, and if yPrevVPDU%(n H VPDU ) is 0, some positions (x, y) may be marked as unavailable.

- В одном из примеров, x может быть в таком диапазоне, что [xPrevVPDU - 2WVPDU + 2mWVPDU)% mWVPDU, ((xPrevVPDU – 2 WVPDU + 2m WVPDU)% mWVPDU)-1+WVPDU]; - In one example, x may be in the range such that [xPrevVPDU - 2W VPDU + 2mW VPDU )% mW VPDU , ((xPrevVPDU – 2 W VPDU + 2m W VPDU )% mW VPDU )-1+W VPDU ];

- В одном из примеров, y может быть в таком диапазоне, что [yPrevVPDU%(n HVPDU), (yPrevVPDU%(n HVPDU))-1+HVPDU];- In one example, y may be in the range such that [yPrevVPDU%(n H VPDU ), (yPrevVPDU%(n H VPDU ))-1+H VPDU ];

- В одном из примеров, x может быть в таком диапазоне, что [xPrevVPDU - 2WVPDU + 2mWVPDU)% mWVPDU, ((xPrevVPDU - 2WVPDU + 2mWVPDU)% mWVPDU)-1+WVPDU], и y может быть в таком диапазоне, что [yPrevVPDU%(n HVPDU), (yPrevVPDU%(n HVPDU))-1+HVPDU].- In one example, x may be in the range such that [xPrevVPDU - 2W VPDU + 2mW VPDU )% mW VPDU , ((xPrevVPDU - 2W VPDU + 2mW VPDU )% mW VPDU )-1+W VPDU ], and y may be in the range such that [yPrevVPDU%(n H VPDU ), (yPrevVPDU%(n H VPDU ))-1+H VPDU ].

- В одном из примеров, если обозначить (xPrevVPDU, yPrevVPDU) как верхнюю-левую позицию относительно верхнего-левого угла изображения/среза/плитки/кирпича/другой единицы обработки видео из самой последней декодированной единицы VPDU, и если yPrevVPDU%(n HVPDU) не равно 0, некоторые позиции (x, y) могут быть маркированы как недоступные.- In one example, if we designate (xPrevVPDU, yPrevVPDU) as the top-left position relative to the top-left corner of the image/slice/tile/brick/other video processing unit from the most recently decoded VPDU, and if yPrevVPDU%(n H VPDU ) is not equal to 0, some positions (x, y) may be marked as unavailable.

- В одном из примеров, x может быть в таком диапазоне, что [xPrevVPDU - WVPDU + 2mWVPDU)% mWVPDU, ((xPrevVPDU - WVPDU + 2mWVPDU)% mWVPDU)-1+WVPDU]; - In one example, x may be in the range such that [xPrevVPDU - W VPDU + 2mW VPDU )% mW VPDU , ((xPrevVPDU - W VPDU + 2mW VPDU )% mW VPDU )-1+W VPDU ];

- В одном из примеров, y может быть в таком диапазоне, что [yPrevVPDU%(n HVPDU), (yPrevVPDU%(n HVPDU))-1+HVPDU]- In one example, y may be in the range such that [yPrevVPDU%(n H VPDU ), (yPrevVPDU%(n H VPDU ))-1+H VPDU ]

- В одном из примеров, x может быть в таком диапазоне, что [xPrevVPDU - WVPDU + 2mWVPDU)% mWVPDU, ((xPrevVPDU - WVPDU + 2mWVPDU)% mWVPDU)-1+WVPDU], и y может быть в таком диапазоне, что [yPrevVPDU%(n HVPDU), (yPrevVPDU%(n HVPDU))-1+HVPDU].- In one example, x may be in the range such that [xPrevVPDU - W VPDU + 2mW VPDU )% mW VPDU , ((xPrevVPDU - W VPDU + 2mW VPDU )% mW VPDU )-1+W VPDU ], and y may be in the range such that [yPrevVPDU%(n H VPDU ), (yPrevVPDU%(n H VPDU ))-1+H VPDU ].

233. Когда единица CU содержит несколько единиц VPDU, вместо применения процедуры маркировки доступности опоры для режима с копированием IBC в соответствии с единицей VPDU, процедура маркировки доступности опоры для режима с копированием IBC может быть выполнена в соответствии с единицей CU233. When a CU contains multiple VPDUs, instead of applying a support availability marking procedure for IBC copy mode according to the VPDU, a support availability marking procedure for IBC copy mode may be performed according to the CU.

- В одном из примеров, в начале декодирования единицы CU, содержащей несколько единиц VPDU, процедура маркировки доступности опоры для режима с копированием IBC может быть применена для каждой единицы VPDU прежде, чем единица VPDU в пределах единицы CU будет декодирована.- In one example, at the beginning of decoding a CU containing multiple VPDUs, a support availability marking procedure for IBC copy mode may be applied to each VPDU before a VPDU within the CU is decoded.

- В таком случае, в режиме с копированием IBC блоки размером 128x64 и 64x128 могут быть недопустимы.- In this case, 128x64 and 64x128 blocks may not be valid in IBC copy mode.

- В одном из примеров, флаг pred_mode_ibc_flag для единиц CU размером 128x64 и 64x128 может не быть передан и может быть признан (выведен) равным 0.- In one example, the pred_mode_ibc_flag for CUs of size 128x64 and 64x128 may not be transmitted and may be set to 0.

237. Для опорного блока или субблока, может не быть необходимо проверять статус доступности опоры для верхнего-левого угла, чтобы сообщить, действителен ли блочный вектор, ассоциированный с опорным блоком, или нет.237. For a reference block or sub-block, it may not be necessary to check the support availability status for the top-left corner to indicate whether the block vector associated with the reference block is valid or not.

- В одном из примеров, только верхний-левый, нижний-левый и нижний-правый углы блока/субблока нужно проверять, чтобы сообщить, является ли соответствующий блочный вектор действительным или нет.- In one example, only the top-left, bottom-left and bottom-right corners of a block/sub-block need to be checked to report whether the corresponding block vector is valid or not.

239. Размер буфера для режима с копированием IBC может зависеть от размера единицы VPDU (где отношение ширина/высота обозначено как vSize) и/или размер CTB/CTU (где отношение ширина/высота обозначено как ctbSize)239. The buffer size for IBC copy mode may depend on the VPDU unit size (where the width/height ratio is denoted as vSize) and/or the CTB/CTU size (where the width/height ratio is denoted as ctbSize)

- В одном из примеров, высота буфера может быть равна ctbSize.- In one example, the buffer height could be equal to ctbSize.

- В одном из примеров, ширина буфера может зависеть от min(ctbSize, 64)- In one example, the buffer width may depend on min(ctbSize, 64)

- В одном из примеров, ширина буфера может быть (128*128/vSize, min(ctbSize, 64 ))- In one example, the buffer width could be (128*128/vSize, min(ctbSize, 64 ))

243. Буфер режима с копированием IBC может содержать значения вне диапазона пикселей, что указывает, что эта позиция может не быть доступна для опоры для режима с копированием IBC, например, может не использоваться для прогнозирования других отсчетов.243. The IBC copy mode buffer may contain values outside the pixel range, indicating that this position may not be available for reference for the IBC copy mode, for example, may not be used to predict other samples.

- Значение отсчета может быть установлено равным значению, обозначающему, что отсчет является недоступным. - The count value can be set to a value indicating that the count is not available.

- В одном из примеров, это значение может быть равно -1.- In one example, this value could be -1.

- В одном из примеров, указанное значение может быть равно какому-либо значению вне диапазона [0, 1<<(internal_bit_depth) – 1], где параметр internal_bit_depth представляет собой положительное целое число. Например, параметр internal_bit_depth обозначает внутреннюю битовую глубину, используемую для кодирования/декодирования отсчета для цветовой составляющей. - In one example, the specified value may be equal to any value outside the range [0, 1<<(internal_bit_depth) – 1], where internal_bit_depth is a positive integer. For example, the internal_bit_depth parameter denotes the internal bit depth used for encoding/decoding the color component sample.

- В одном из примеров, указанное значение может быть равно какому-либо значению вне диапазона [0, 1<<(input_bit_depth) – 1] где параметр input_bit_depth представляет собой положительное целое число. Например, input_bit_depth обозначает входную битовую глубину, используемую для кодирования/декодирования отсчета для цветовой составляющей.- In one example, the specified value may be equal to any value outside the range [0, 1<<(input_bit_depth) – 1] where input_bit_depth is a positive integer. For example, input_bit_depth denotes the input bit depth used for encoding/decoding the sample for the color component.

248. Маркировка доступности для отсчетов в буфере для режима с копированием IBC может зависеть от позиции текущего блока, размера текущего блока, размера единицы/блока CTU/CTB и размера единицы VPDU. В одном из примеров, пусть (xCb, yCb) обозначает позицию блока относительно верхнего-левого угла изображения; параметр ctbSize представляет размер (т.е. ширина и/или высота) единицы/блока CTU/CTB; vSize= min(ctbSize, 64); wIbcBuf и hIbcBuf обозначают ширину и высоту буфера для режима с копированием IBC.248. The availability marking for samples in the buffer for IBC copy mode may depend on the current block position, current block size, CTU/CTB unit/block size, and VPDU unit size. In one example, let (xCb, yCb) denote the position of the block relative to the top-left corner of the image; the ctbSize parameter represents the size (i.e. width and/or height) of the CTU/CTB unit/block; vSize= min(ctbSize, 64); wIbcBuf and hIbcBuf indicate the width and height of the buffer for IBC copy mode.

- В одном из примеров, если параметр (xCb%vSize) равен 0 и параметр (yCb%vSize) равен 0, определенный набор позиций в буфере для режима с копированием IBC может быть маркирован как недоступный.- In one example, if parameter (xCb%vSize) is 0 and parameter (yCb%vSize) is 0, a certain set of buffer positions for IBC copy mode may be marked as unavailable.

- В одном из примеров, когда размер текущего блока меньше размера единицы VPDU, т.е. min(ctbSize, 64), область, маркированная как недоступная, может быть определена в соответствии с размером единицы VPDU.- In one example, when the current block size is less than the VPDU unit size, i.e. min(ctbSize, 64), the area marked as unreachable can be determined according to the size of the VPDU unit.

- В одном из примеров, когда размер текущего блока больше размера единицы VPDU, т.е. min(ctbSize, 64), область, маркированная как недоступная, может быть определена в соответствии с размером единицы CU.- In one example, when the current block size is larger than the VPDU unit size, i.e. min(ctbSize, 64), the area marked as unreachable can be determined according to the size of the CU unit.

252. В начале декодирования единицы видео (например, VPDU (xV, yV)) относительно верхней-левой позиции изображения, соответствующей позициям в буфере для режима с копированием IBC может быть присвоено значение вне диапазона пикселей. 252. At the start of decoding of a video unit (eg, VPDU (xV, yV)), the top-left image position corresponding to the positions in the buffer for the IBC copy mode may be assigned a value out of the pixel range.

- В одном из примеров, отсчетам в буфере, расположенным в позиции (x%wIbcBuf, y%hIbcBuf) в буфере, при x = xV, …,xV+ctbSize-1 и y=yV,…,yV+ctbSize-1, будет присвоено значение -1. Здесь параметры wIbcBuf и hIbcBuf представляют собой ширину и высоту буфера для режима копирования IBC, параметр ctbSize представляет собой ширину единицы/блока CTU/CTB.- In one example, samples in the buffer located at position (x%wIbcBuf, y%hIbcBuf) in the buffer, with x = xV, …,xV+ctbSize-1 and y=yV,…,yV+ctbSize-1, will be assigned the value -1. Here parameters wIbcBuf and hIbcBuf represent the width and height of the buffer for IBC copy mode, parameter ctbSize represents the width of the CTU/CTB unit/block.

- В одном из примеров, параметр hIbcBuf может быть равен параметру ctbSize.- In one example, the hIbcBuf parameter may be equal to the ctbSize parameter.

255. Ограничение соответствия потока битов данных может быть установлено в соответствии со значением отсчета в буфере режима с копированием IBC 255. The data bit stream compliance limit can be set according to the sample value in the IBC copy mode buffer

- В одном из примеров, если опорный блок, ассоциированный с блочным вектором в буфере режима с копированием IBC, содержит значение вне диапазона пикселей, поток битов данных может быть недопустимым.- In one example, if a reference block associated with a block vector in an IBC copy mode buffer contains a value out of the pixel range, the data bit stream may be invalid.

257. Ограничение соответствия потока битов данных может быть установлено в соответствии с индикацией доступности в буфере режима с копированием IBC.257. The data bit stream compliance limit may be set in accordance with the availability indication in the IBC copy mode buffer.

- В одном из примеров, если какой-либо из опорных отсчетов яркостной составляющей, отображаемый в буфер режима с копированием IBC для кодирования/декодирования блока, маркирован как недоступный, поток битов данных может быть недопустимым.- In one example, if any of the luminance reference samples mapped to the IBC copy mode buffer for block encoding/decoding is marked as unavailable, the data bit stream may be invalid.

- В одном из примеров, когда используется одиночное дерево, если какой-либо из опорных отсчетов яркостной составляющей, отображаемый в буфер режима с копированием IBC для кодирования/декодирования блока, маркирован как недоступный, поток битов данных может быть недопустимым.- In one example, when a single tree is used, if any of the luminance reference samples mapped to the IBC copy mode buffer for block encoding/decoding is marked as unavailable, the data bit stream may be invalid.

- Соответствующий поток битов данных может удовлетворять тому, что для блока, кодированного в режиме с копированием IBC, ассоциированный блочный вектор может указывать на опорный блок, отображаемый в буфер режима с копированием IBC, и каждый из опорных отсчетов яркостной составляющей, расположенных в буфере режима с копированием IBC для кодирования/декодирования блока, должен быть маркирован как недоступный, (например, значения отсчетов находятся в пределах диапазона [K0, K1], где, например, K0 устанавливают равным 0 и K1 устанавливают равным (1<<BitDepth-1) где BitDepth обозначает внутреннюю битовую глубину или входную битовую глубину).- The corresponding data bitstream may be such that, for a block encoded in the IBC copy mode, the associated block vector may point to a reference block mapped to the IBC copy mode buffer and each of the luminance reference samples located in the IBC copy mode buffer. copying the IBC for block encoding/decoding must be marked as unavailable, (e.g. sample values are within the range [K0, K1], where, for example, K0 is set to 0 and K1 is set to (1<<BitDepth-1) where BitDepth stands for internal bit depth or input bit depth).

261. Ограничения соответствия потока битов данных могут зависеть от типов дерева разбиения и типа дерева кодирования для текущей единицы 261. Data bitstream compliance constraints may depend on the types of partitioning tree and the type of encoding tree for the current unit

- В одном из примеров, если на высоком уровне (например, срез/изображение/кирпич/плитка) допускается двойное дерево, а текущий блок видео (например, единица CU/единица PU/блок CB/блок PB) кодирован с использованием единичного дерева, ограничения потоков битов данных могут нуждаться в проверке, все ли позиции компонентов, отображенных в буфер режима с копированием IBC, маркированы как недоступные, или нет.- In one example, if a dual tree is allowed at a high level (eg slice/image/brick/tile) and the current video block (eg CU unit/PU unit/CB unit/PB unit) is encoded using a single tree, Data bit stream constraints may need to check whether all component positions mapped to the IBC copy mode buffer are marked as unavailable or not.

- В одном из примеров, если на высоком уровне (например, срез/изображение/кирпич/плитка) допускается двойное дерево, и текущий блок яркостной составляющей видео (например, единица CU/единица PU/блок CB/блок PB) кодирован с использованием двойного дерева, ограничения потоков битов данных могут пренебрегать позициями цветностных составляющих, отображенных в буфер режима с копированием IBC, маркированы ли они как недоступные, или нет.- In one example, if a dual tree is allowed at a high level (e.g., slice/image/brick/tile), and the current video luminance block (e.g., CU/PU/CB/PB) is encoded using dual tree, data bitstream constraints may override the positions of chrominance components mapped to the IBC copy mode buffer, whether they are marked as unavailable or not.

- В качестве альтернативы, в таком случае, ограничения потоков битов данных могут все равно проверять все позиции компонентов, отображенные в буфер режима с копированием IBC, маркированы ли они как недоступные, или нет.- Alternatively, in such a case, the data bit stream constraints may still check all component positions mapped to the IBC copy mode buffer to see if they are marked as unavailable or not.

- В одном из примеров, если используется одиночное дерево, ограничения потоков битов данных могут пренебрегать позициями цветностных составляющих, отображенных в буфер режима с копированием IBC, маркированы ли они как недоступные, или нет.- In one example, if a single tree is used, the data bitstream constraints may override the positions of chrominance components mapped to the IBC copy mode buffer, whether they are marked as unavailable or not.

Усовершенствования сегодняшнего варианта стандарта VTM Improvements to today's VTM standard

266. Прогнозирование для режима с копированием IBC может иметь более низкую точность, чем реконструкция.266. Prediction for IBC copy mode may have lower accuracy than reconstruction.

- В одном из примеров, прогнозируемое значение определяют в соответствии со значением clip{{p+[1<<(b-1)]}>>b,0,(1<<bitdepth)-1}<<b, где p обозначает значение реконструированного отсчета, b обозначает заданное значение сдвига битов, bitdepth обозначает битовую глубину прогнозируемого отсчета.- In one example, the predicted value is determined according to the value clip{{p+[1<<(b-1)]}>>b,0,(1<<bitdepth)-1}<<b, where p denotes the value of the reconstructed sample, b denotes the specified bit shift value, bitdepth denotes the bit depth of the predicted sample.

- В одном из примеров, прогнозируемое значение определяют в соответствии со значением clip{{p+[1<<(b-1)-1]}>>b,0,(1<<bitdepth)-1}<<b, где p обозначает значение реконструированного отсчета, b обозначает заданное значение сдвига битов.- In one example, the predicted value is determined according to the value clip{{p+[1<<(b-1)-1]}>>b,0,(1<<bitdepth)-1}<<b, where p denotes the reconstructed sample value, b denotes the specified bit shift value.

- В одном из примеров, прогнозируемое значение определяют в соответствии со значением ((p>>b)+(1<<(bitdepth-1)))<<b, где bitdepth обозначает битовую глубину прогнозируемого отсчета.- In one example, the predicted value is determined according to the value ((p>>b)+(1<<(bitdepth-1)))<<b, where bitdepth denotes the bit depth of the predicted sample.

- В одном из примеров, прогнозируемое значение определяют в соответствии со значением (clip((p>>b),0,(1<<(bitdepth-b)))+(1<<(bitdepth-1)))<<b, где bitdepth обозначает битовую глубину прогнозируемого отсчета.- In one example, the predicted value is determined according to the value of (clip((p>>b),0,(1<<(bitdepth-b)))+(1<<(bitdepth-1)))<< b, where bitdepth denotes the bit depth of the predicted sample.

- В одном из примеров, прогнозируемое занчение подвергают усечению различными способами в зависимости от того, применяется ли переформирование ILR или нет.- In one example, the forecast value is truncated in different ways depending on whether ILR reformation is applied or not.

- В приведенных выше примерах, b может быть равно битовой глубине реконструированных отсчетов минус битовая глубина входных отсчетов.- In the examples above, b may be equal to the bit depth of the reconstructed samples minus the bit depth of the input samples.

- В одном из примеров, битовая глубина или разность битовых глубин по сравнению с выходной битовой глубиной/входной битовой глубиной/внутренней битовой глубиной может быть сообщена в виде сигнализации в наборе SPS/наборе PPS/заголовке последовательности/заголовке изображения/заголовке среза/заголовке группы плиток/заголовке плитки или в единицах данных видео других типов.- In one example, the bit depth or difference of bit depths compared to the output bit depth/input bit depth/internal bit depth may be signaled in the SPS set/PPS set/sequence header/picture header/slice header/group header tiles/tile title or other types of video data units.

267. Часть прогнозирования в режиме с копированием IBC может иметь более низкую точность, а другая часть имеет такую же точность, как реконструкция.267. Part of the IBC copy mode prediction may have lower accuracy, while another part has the same accuracy as reconstruction.

- В одном из примеров, допустимая опорная область может содержать отсчеты с различными точностями (например, битовой глубиной).- In one example, the valid reference region may contain samples with different accuracies (eg, bit depth).

- В одном из примеров, опора из блоков размером 64x64, отличных от декодируемого в текущий момент блока размером 64x64, имеет низкую точность, а опора из текущего блока размером 64x64 имеет такую же точность, как реконструкция.- In one example, a support from 64x64 blocks other than the 64x64 block currently being decoded has low accuracy, but a support from the current 64x64 block has the same accuracy as the reconstruction.

- В одном из примеров, опора из единиц CTU, отличных от декодируемой в текущий момент единицы CTU, имеет низкую точность, а опора из текущей единицы CTU имеет такую же точность, как реконструкция.- In one example, a reference from CTUs other than the currently decoded CTU has low accuracy, and a reference from the current CTU has the same accuracy as the reconstruction.

- В одном из примеров, опора из некоторой группы цветовых составляющих имеет низкую точность, а опора из других цветовых составляющих имеет такую же точность, как реконструкция.- In one example, a support from a certain group of color components has low accuracy, and a support from other color components has the same accuracy as the reconstruction.

268. Когда единица CTU имеет размер MxM и размер опорной области равен nMxnM, опорная область представляет собой ближайшую доступную единицу CTU размером nxn в строке единиц CTU.268. When the CTU is of size MxM and the size of the reference area is nMxnM, the reference area is the nearest available nxn CTU in the string of CTUs.

- В одном из примеров, когда размер опорной области равен 128x128 и размер единицы CTU равен 64x64, ближайшие доступные 4 единицы CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, when the reference area size is 128x128 and the CTU size is 64x64, the nearest available 4 CTUs in the CTU row can be used as the reference for IBC copy mode.

- В одном из примеров, когда размер опорной области равен 128x128 и размер единицы CTU равен 32x32, ближайшие доступные 16 единиц CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, when the reference area size is 128x128 and the CTU size is 32x32, the nearest available 16 CTUs in the CTU row can be used as the reference for IBC copy mode.

269. Когда размер единицы CTU равен M и размер опорной области равен nM, опорная область является ближайшими доступными n-1 единицами CTU в строке единиц CTU/плитке.269. When the CTU size is M and the size of the reference region is nM, the reference region is the nearest available n-1 CTUs in the CTU string/tile.

- В одном из примеров, когда размер опорной области равен 128x128 или 256x64 и размер единицы CTU равен 64x64, ближайшие доступные 3 единицы CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, when the reference area size is 128x128 or 256x64 and the CTU size is 64x64, the nearest available 3 CTUs in the CTU row can be used as the reference for IBC copy mode.

- В одном из примеров, когда размер опорной области равен 128x128 или 512x32 и размер единицы CTU равен 32x32, ближайшие доступные 15 единиц CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, when the reference area size is 128x128 or 512x32 and the CTU size is 32x32, the nearest available 15 CTUs in the CTU row can be used as the reference for IBC copy mode.

270. Когда размер единицы CTU равен M, размер единицы VPDU равен kM и размер опорной области равен nM, и опорная область является ближайшими доступными n-k единицами CTU в строке единиц CTU/плитке.270. When the CTU size is M, the VPDU size is kM and the size of the reference area is nM, and the reference area is the nearest available n-k CTUs in the CTU string/tile.

- В одном из примеров, размер единицы CTU равен 64x64, размер единицы VPDU также равен 64x64, размер опорной области равен 128x128, ближайшие 3 единицы CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, the CTU size is 64x64, the VPDU size is also 64x64, the reference area size is 128x128, the nearest 3 CTUs in a row of CTUs can be used as a reference for IBC copy mode.

- В одном из примеров, размер единицы CTU равен 32x32, размер единицы VPDU равен 64x64, размер опорной области равен 128x128, ближайшие (16-4)=12 единиц CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, the CTU size is 32x32, the VPDU size is 64x64, the reference area size is 128x128, the nearest (16-4)=12 CTUs in a string of CTUs can be used as a reference for IBC copy mode.

271. Для блока размером w x h и с верхним-левым углом в точке (x, y) с использованием режима с копированием IBC, имеются ограничения, которые удерживают опорный блок из некоторой области для повторного использования памяти, где w и h обозначают ширину и высоту текущего блока.271. For a block of size w x h and top-left corner at (x, y) using IBC copy mode, there are constraints that keep the reference block out of some region for memory reuse, where w and h denote the width and height of the current block.

- В одном из примеров, когда размер единицы CTU равен 128x128 и (x, y)=(m x 64,n x 64), опорный блок не может накладываться на область размером 64x64, начиная от ((m-2)x64, n x 64).- In one example, when the CTU size is 128x128 and (x, y)=(m x 64,n x 64), the reference block cannot overlap a 64x64 area starting from ((m-2)x64, n x 64) .

- В одном из примеров, когда размер единицы CTU равен 128x128, опорный блок не может накладываться на блок размером w x h с верхним-левым углом в точке (x-128, y).- In one example, when the CTU size is 128x128, the reference block cannot overlap a w x h block with a top-left corner at (x-128, y).

- В одном из примеров, когда размер единицы CTU равен 128x128, точка (x+BVx, y+BVy) не может быть в пределах блока размером w*h с верхним-левым углом в точке (x-128, y), где BVx и BVy обозначают блочный вектор для текущего блока.- In one example, when the CTU size is 128x128, the point (x+BVx, y+BVy) cannot be within a block of size w*h with the top-left corner at the point (x-128, y) where BVx and BVy denote the block vector for the current block.

- В одном из примеров, когда размер единицы CTU равен M x M и размер буфера для режима с копированием IBC равен k x M x M, опорный блок не может накладываться на блок размером w x h с верхним-левым углом в точке (x-k x M, y), где BVx и BVy обозначают блочный вектор для текущего блока.- In one example, when the CTU size is M x M and the IBC copy mode buffer size is k x M x M, the reference block cannot overlap a block of size w x h with the top-left corner at (x-k x M, y ), where BVx and BVy denote the block vector for the current block.

- В одном из примеров, когда размер единицы CTU равен M x M и размер буфера для режима с копированием IBC равен k x M x M, точка (x+BVx, y+BVy) не может быть в пределах блока размером w x h с верхним-левым углом в точке (x-k x M, y), где BVx и BVy обозначают блочный вектор для текущего блока.- In one example, when the CTU size is M x M and the IBC copy mode buffer size is k x M x M, the point (x+BVx, y+BVy) cannot be within a block of size w x h with top-left angle at (x-k x M, y), where BVx and BVy denote the block vector for the current block.

272. Когда размер единицы CTU не равен M x M и размер опорной области равен nM x nM, опорная область является ближайшими доступными nxn-1 единицами CTU в строке единиц CTU.272. When the CTU size is not M x M and the size of the reference area is nM x nM, the reference area is the nearest available nxn-1 CTUs in the string of CTUs.

- В одном из примеров, когда размер опорной области равен 128x128 и размер единицы CTU равен 64x64, ближайшие доступные 3 единицы CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, when the reference area size is 128x128 and the CTU size is 64x64, the nearest available 3 CTUs in the CTU row can be used as the reference for IBC copy mode.

- В одном из примеров, когда размер опорной области равен 128x128 и размер единицы CTU равен 32x32, ближайшие доступные 15 единиц CTU в строке единиц CTU могут быть использованы в качестве опоры для режима с копированием IBC.- In one example, when the reference area size is 128x128 and the CTU size is 32x32, the nearest available 15 CTUs in the CTU row can be used as the reference for IBC copy mode.

273. Для единицы CU в пределах блока размером 64x64, начиная от (2m*64, 2n*64), т.е. верхнего-левого блока размером 64x64 в единице CTU размером 128x128, прогнозируемая область в режиме копирования IBC может быть составлена из реконструированных отсчетов в блоке размером 64x64, начиная от ((2m-2)*64, 2n*64), блоке размером 64x64, начиная от ((2m-1)*64, 2n*64), блоке размером 64x64, начиная от ((2m-1)*64, (2n+1)*64), и в текущем блоке размером 64x64.273. For a CU unit within a block of size 64x64, starting from (2m*64, 2n*64), i.e. top-left 64x64 block in a 128x128 CTU, the predicted region in IBC copy mode can be composed of reconstructed samples in a 64x64 block starting from ((2m-2)*64, 2n*64), a 64x64 block starting from ((2m-1)*64, 2n*64), a 64x64 block starting from ((2m-1)*64, (2n+1)*64), and in the current 64x64 block.

274. Для единицы CU в пределах блока размером 64x64, начиная от ((2m+1)*64, (2n+1)*64), т.е. нижнего-правого блока размером 64x64 в единице CTU размером 128x128, прогнозируемая область в режиме копирования IBC может быть составлена из текущей единицы CTU размером 128x128.274. For a CU within a 64x64 block, starting from ((2m+1)*64, (2n+1)*64), i.e. lower-right 64x64 block in a 128x128 CTU, the forecast area in IBC copy mode can be composed of the current 128x128 CTU.

275. Для единицы CU в пределах блока размером 64x64, начиная от ((2m+1)*64, 2n*64), т.е. верхнего-правого блока размером 64x64 в единице CTU размером 128x128, прогнозируемая область в режиме копирования IBC может быть составлена из реконструированных отсчетов в блоке размером 64x64, начиная от ((2m-1)*64, 2n*64), блоке размером 64x64, начиная от ((2m-1)*64, (2n+1)*64), блоке размером 64x64, начиная от (2m*64, 2n*64), и в текущем блоке размером 64x64.275. For a CU within a 64x64 block, starting from ((2m+1)*64, 2n*64), i.e. top-right 64x64 block in a 128x128 CTU, the predicted region in IBC copy mode can be composed of reconstructed samples in a 64x64 block starting from ((2m-1)*64, 2n*64), a 64x64 block starting from ((2m-1)*64, (2n+1)*64), a 64x64 block starting from (2m*64, 2n*64), and in the current 64x64 block.

- В качестве альтернативы, если текущий блок размером 64x64, начиная от (2m*64, (2n+1)*64), был реконструирован, прогнозируемая область в режиме копирования IBC может быть составлена из реконструированных отсчетов в блоке размером 64x64, начиная от ((2m-1)*64, 2n*64), блоке размером 64x64, начиная от (2m*64, 2n*64), блоке размером 64x64, начиная от (2m*64, (2n+1)*64), и в текущем блоке размером 64x64.- Alternatively, if the current 64x64 block starting from (2m*64, (2n+1)*64) was reconstructed, the predicted region in IBC copy mode can be composed of the reconstructed samples in the 64x64 block starting from ( (2m-1)*64, 2n*64), a 64x64 block starting from (2m*64, 2n*64), a 64x64 block starting from (2m*64, (2n+1)*64), and in the current block size 64x64.

276. Для единицы CU в пределах блока размером 64x64, начиная от (2m*64, (2n+1)*64), т.е. нижнего-левого блока размером 64x64 в единице CTU размером 128x128, прогнозируемая область в режиме копирования IBC может быть составлена из реконструированных отсчетов в блоке размером 64x64, начиная от ((2m-1)*64, (2n+1)*64), блоке размером 64x64, начиная от (2m*64, 2n*64); блоке размером 64x64, начиная от ((2m+1)*64, 2n*64), и в текущем блоке размером 64x64.276. For a CU unit within a block of size 64x64, starting from (2m*64, (2n+1)*64), i.e. bottom-left 64x64 block in a 128x128 CTU, the predicted region in IBC copy mode can be composed of reconstructed samples in a 64x64 block starting from ((2m-1)*64, (2n+1)*64), block size 64x64, starting from (2m*64, 2n*64); block of size 64x64, starting from ((2m+1)*64, 2n*64), and in the current block of size 64x64.

- В качестве альтернативы, если текущий блок размером 64x64, начиная от ((2m+1)*64, 2n*64), не был реконструирован, прогнозируемая область в режиме копирования IBC может быть составлена из реконструированных отсчетов в блоке размером 64x64, начиная от ((2m-1)*64, 2n*64), блоке размером 64x64, начиная от ((2m-1)*64, (2n+1)*64), блоке размером 64x64, начиная от (2m*64, 2n*64), и в текущем блоке размером 64x64.- Alternatively, if the current 64x64 block starting from ((2m+1)*64, 2n*64) has not been reconstructed, the predicted region in IBC copy mode can be composed of the reconstructed samples in the 64x64 block starting from ((2m-1)*64, 2n*64), block size 64x64, starting from ((2m-1)*64, (2n+1)*64), block size 64x64, starting from (2m*64, 2n *64), and in the current block size 64x64.

277. Предлагается регулировать опорную область на основе того, каким блокам размером 64x64 принадлежит текущая единица CU.277. It is proposed to adjust the reference area based on which 64x64 blocks the current CU belongs to.

- В одном из примеров, для единицы CU, начиная от (x,y), когда (y>>6)&1 == 0, два или до двух предшествующих блоков размером 64x64, начиная от ((x>>6<<6)-128, y>>6<<6) и ((x>>6<<6)-64, y>>6<<6), могут быть опорными в режиме с копированием IBC.- In one example, for a CU unit starting from (x,y), when (y>>6)&1 == 0, two or up to two preceding 64x64 blocks starting from ((x>>6<<6 )-128, y>>6<<6) and ((x>>6<<6)-64, y>>6<<6), can be reference in IBC copy mode.

- В одном из примеров, для единицы CU, начиная от (x,y), когда (y>>6)&1 == 1, один предшествующий блок размером 64x64, начиная от ((x>>6<<6)-64, y>>6<<6), может быть опорным в режиме с копированием IBC.- In one example, for a CU unit starting from (x,y) when (y>>6)&1 == 1, one preceding block of size 64x64 starting from ((x>>6<<6)-64 , y>>6<<6), can be a reference in IBC copy mode.

278. Для блока, начиная с точки (x,y), и с блочным вектором (BVx, BVy), если isRec(((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+(x%64), ((y+BVy)>>6<<6) +(y%64)) является истинным, этот блочный вектор недействителен.278. For a block starting from a point (x,y), and with a block vector (BVx, BVy), if isRec(((x+BVx)>>6<<6)+128-(((y+BVy) >>6)&1)*64+(x%64), ((y+BVy)>>6<<6) +(y%64)) is true, this block vector is invalid.

- В одном из примеров, рассматриваемый блок является блоком яркостной составляющей.- In one example, the block in question is a luminance component block.

- В одном из примеров, рассматриваемый блок является блоком цветностной составляющей в формате 4:4:4.- In one example, the block in question is a chrominance block in 4:4:4 format.

- В одном из примеров, рассматриваемый блок содержит и яркостную, и цветностную составляющие.- In one example, the block in question contains both luma and chrominance components.

279. Для блока цветностной составляющей в формате 4:2:0, начиная от (x,y), и с блочным вектором (BVx, BVy), если isRec(((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) является истинным, этот блочный вектор недействителен.279. For a chroma block in 4:2:0 format, starting from (x,y), and with a block vector (BVx, BVy), if isRec(((x+BVx)>>5<<5)+64 -(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) is true, this block vector is invalid .

280. Определение, является ли вектор BV недействительным или нет, для блока составляющей c может опираться на доступность отсчетов составляющей X, вместо проверки только отсчета яркостной составляющей.280. Determining whether the BV vector is invalid or not for a component block c may rely on the availability of X component samples, instead of checking only the luminance component sample.

- Для блока составляющей c, начиная с точки (x,y), и с блочным вектором (BVx, BVy), если isRec(c, ((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+(x%64), ((y+BVy)>>6<<6) +(y%64)) является истинным, этот блочный вектор можно считать недействительным.- For a block of component c, starting at point (x,y), and with a block vector (BVx, BVy), if isRec(c, ((x+BVx)>>6<<6)+128-(((y +BVy)>>6)&1)*64+(x%64), ((y+BVy)>>6<<6) +(y%64)) is true, this block vector can be considered invalid.

- В одном из примеров, рассматриваемый блок является блоком яркостной составляющей (например, c является яркостной составляющей или зеленой (G) составляющей для кодирования в формате RGB).- In one example, the block in question is a luminance component block (eg, c is the luminance component or green (G) component for RGB encoding).

- В одном из примеров, рассматриваемый блок является блоком цветностной составляющей в формате 4:4:4 (например, c является составляющей cb или cr, либо синей/красной (B/R) составляющей при кодировании RGB).- In one example, the block in question is a 4:4:4 chrominance block (eg, c is the cb or cr component, or the blue/red (B/R) component in RGB encoding).

- В одном из примеров, можно проверить доступность отсчетов для обеих – яркостной и цветностной, составляющих, например, рассматриваемый блок содержит обе – яркостную и цветностную, составляющие- In one example, you can check the availability of samples for both luminance and chrominance components, for example, the block in question contains both luminance and chrominance components

- Для блока цветностной составляющей в формате 4:2:0, начиная от точки (x,y) составляющей c, и с блочным вектором (BVx, BVy), если isRec(c, ((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) является истинным, этот блочный вектор можно считать недействительным.- For a chroma block in 4:2:0 format, starting from the point (x,y) of the c component, and with a block vector (BVx, BVy), if isRec(c, ((x+BVx)>>5<< 5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) is true, this block vector can be considered invalid.

- Для блока или субблока цветностной составляющей, начиная от точки (x, y) составляющей c, и с блочным вектором (BVx, BVy), если isRec(c, x+BVx+Chroma_CTU_size, y) для цветностной составляющей является истинным, этот блочный вектор можно считать недействительным, где параметр Chroma_CTU_size является размером единицы CTU для цветностной составляющей.- For a block or sub-block of a chroma component, starting from the point (x, y) of the component c, and with a block vector (BVx, BVy), if isRec(c, x+BVx+Chroma_CTU_size, y) for the chroma component is true, that block the vector can be considered invalid, where the Chroma_CTU_size parameter is the CTU unit size for the chroma component.

- В одном из примеров, для формата 4:2:0, параметр Chroma_CTU_size может быть равен 64.- In one example, for a 4:2:0 format, the Chroma_CTU_size parameter can be equal to 64.

- В одном из примеров, субблок цветностной составляющей может быть блоком размером 2x2 в формате 4:2:0.- In one example, the chrominance subblock may be a 2x2 block in a 4:2:0 format.

- В одном из примеров, субблок цветностной составляющей может быть блоком размером 4x4 в формате 4:4:4.- In one example, the chrominance subblock may be a 4x4 block in a 4:4:4 format.

- В одном из примеров, субблок цветностной составляющей может соответствовать единице CU минимального размера в яркостной составляющей.- In one example, a chrominance subblock may correspond to a minimum size CU in the luma component.

- В качестве альтернативы, субблок цветностной составляющей может соответствовать единице CU минимального размера для цветностной составляющей.- Alternatively, the chrominance subblock may correspond to a minimum size CU for the chrominance component.

281. Для всех разделов приведенных выше, предполагается, что опорный буфер содержит несколько блоков размером MxM (M=64). Однако это можно расширить и на другие случаи, например, когда опорный буфер содержит несколько блоков размером NxM (например, N=128, M=64).281. For all sections above, it is assumed that the reference buffer contains several blocks of size MxM (M=64). However, this can be extended to other cases, such as when the reference buffer contains multiple NxM blocks (e.g. N=128, M=64).

282. Для всех разделов приведенных выше, могут быть применены дополнительные ограничения, что опорный буфер должен находиться в пределах того же самого кирпича/плитки/группы плиток/среза, как и текущий блок.282. For all sections above, additional restrictions may apply that the reference buffer must be within the same brick/tile/group of tiles/slice as the current block.

- В одном из примеров, если часть опорного буфера находится вне текущего кирпича/плитки/группы плиток/среза, режим с копированием IBC может быть не активизирован. Передача в виде сигнализации синтаксических элементов, относящихся к режиму с копированием IBC, может быть пропущена.- In one example, if part of the reference buffer is outside the current brick/tile/tile group/slice, the IBC copy mode may not be activated. Signaling of syntax elements related to IBC copy mode may be skipped.

- В качестве альтернативы, если часть опорного буфера находится вне текущего кирпича/плитки/группы плиток/среза, режим с копированием IBC может быть все равно активизирован для одного блока, однако блочный вектор, ассоциированный с этим одним блоком, может указывать только на оставшийся опорный буфер.- Alternatively, if part of the reference buffer is outside the current brick/tile/tilegroup/slice, IBC copy mode can still be enabled for one block, however the block vector associated with that one block can only point to the remaining reference buffer.

283. Предлагается иметь K1 самых последних кодированных единиц VPDU, если доступны, в 1-ой строке единиц VPDU из строки единиц/блоков CTU/CTB и K2 самых последних кодированных единиц VPDU, если доступны, во 2-ой строке единиц VPDU из строки единиц/блоков CTU/CTB в качестве опорной области для режима с копированием IBC, исключая текущую единицу VPDU.283. It is proposed to have K1 of the most recently encoded VPDUs, if available, in the 1st VPDU line from the CTU/CTB line and K2 of the most recently encoded VPDUs, if available, in the 2nd VPDU line from the units line. /CTU/CTB as the reference area for IBC copy mode excluding the current VPDU.

- В одном из примеров, K1 равно 2 и K2 равно 1.- In one example, K1 is 2 and K2 is 1.

- В одном из примеров, приведенные выше способы могут быть применены, когда размер единицы/блока CTU/CTB равен 128x128 и размер единицы VPDU равен 64x64.- In one example, the above methods can be applied when the CTU/CTB unit/block size is 128x128 and the VPDU unit size is 64x64.

- В одном из примеров, приведенные выше способы могут быть применены, когда размер единицы/блока CTU/CTB равен 64x64 и размер единицы VPDU равен 64x64 и/или 32x32.- In one example, the above methods can be applied when the CTU/CTB unit size is 64x64 and the VPDU unit size is 64x64 and/or 32x32.

- В одном из примеров, приведенные выше способы могут быть применены, когда размер единицы/блока CTU/CTB равен 32x32 и размер единицы VPDU равен 32x32 или меньше.- In one example, the above methods can be applied when the CTU/CTB unit size is 32x32 and the VPDU unit size is 32x32 or less.

49. Приведенные выше способы могут быть применены на разных этапах.49. The above methods can be applied at different stages.

- В одном из примеров, операция взятия по модулю (например, a mod b) блочных векторов (BV) может быть привлечена в процедуре проверки доступности векторов BV с целью решить, является ли такой вектор BV действительным или нет.- In one example, a modulo operation (eg, a mod b) of block vectors (BVs) may be invoked in a BV availability test procedure to decide whether such a BV is valid or not.

- В одном из примеров, операция взятия по модулю (например, a mod b) блочных векторов (BV) может быть привлечена для идентификации местонахождения опорного отсчета (например, в соответствии с операцией взятия по модулю результатов определения положения текущего отсчета и вектора BV) в виртуальном буфере для режима с копированием IBC или в буфере для реконструированного изображения (например, прежде процедуры внутриконтурной фильтрации).- In one example, a modulo operation (eg, a mod b) of block vectors (BV) can be used to identify the location of a reference sample (eg, in accordance with the modulo operation of the results of determining the position of the current sample and the BV vector) in in the virtual buffer for the IBC copy mode or in the buffer for the reconstructed image (for example, before the in-loop filtering procedure).

5. Варианты5. Options

5.1 Вариант #15.1 Option #1

Ниже описан вариант реализации буфера для режима с копированием IBC:Below is a description of the buffer implementation for IBC copy mode:

Размер буфера равен 128x128. Размер единицы CTU также равен 128x128. Для кодирования 1-ой единицы CTU в строке единиц CTU буфер инициализируют числом 128 (для 8-битового сигнала видео). Для кодирования k-ой единицы CTU в строке единиц CTU буфер инициализируют реконструированными данными прежде контурной фильтрации (k-1)-ой единицы CTU.The buffer size is 128x128. The CTU unit size is also 128x128. To encode the 1st CTU in a line of CTUs, the buffer is initialized to 128 (for an 8-bit video signal). To encode the kth CTU in a string of CTUs, the buffer is initialized with the reconstructed data before loop filtering the (k-1)th CTU.

Фиг. 3 показывает пример кодирования блока, начиная с точки с координатами (x,y).Fig. 3 shows an example of encoding a block starting from a point with coordinates (x,y).

При кодировании блока начиная с точки (x,y), относящейся к текущей единице CTU, блочный вектор (BVx, BVy) = (x-x0, y-y0) передают декодирующему устройству для индикации, что опорный блок начинается с точки (x0,y0) в буфере для режима с копированием IBC. Предположим, что ширина и высота блока равны w и h, соответственно. После завершения кодирования блока область wxh, начиная с точки (x,y), в буфере для режима с копированием IBC будет обновлена реконструированными данными блока прежде контурной фильтрации.When encoding a block starting at point (x,y) associated with the current CTU, a block vector (BVx, BVy) = (x-x0, y-y0) is sent to the decoder to indicate that the reference block starts at point (x0, y0) in the buffer for IBC copy mode. Let's assume that the width and height of the block are w and h, respectively. After block encoding is completed, the wxh region starting at point (x,y) in the IBC copy mode buffer will be updated with the reconstructed block data before loop filtering.

5.2 Вариант #25.2 Option #2

На фиг. 4 показаны примеры возможных альтернативных способов выбора ранее кодированных блоков размером 64×64.In fig. Figure 4 shows examples of possible alternative methods for selecting previously encoded 64x64 blocks.

5.3 Вариант #35.3 Option #3

На фиг. 5 показан пример возможного альтернативного способа изменения порядка кодирования/декодирования блоков размером 64×64.In fig. 5 shows an example of a possible alternative method for changing the encoding/decoding order of 64x64 blocks.

5.4 Вариант #4 5.4 Option #4

На фиг. 8 показан другой возможный альтернативный способ выбора ранее кодированных блоков размером 64×64, когда порядок декодирования блоков размером 64x64 установлен сверху вниз, слева направо.In fig. 8 shows another possible alternative method for selecting previously encoded 64x64 blocks when the decoding order of the 64x64 blocks is set from top to bottom, left to right.

5.5 Вариант #5 5.5 Option #5

На фиг. 9 показан другой возможный альтернативный способ выбора ранее кодированных блоков размером 64×64.In fig. 9 shows another possible alternative method for selecting previously encoded 64x64 blocks.

5.6 Вариант #65.6 Option #6

На фиг. 11 показан другой возможный альтернативный способ выбора ранее кодированных блоков размером 64×64, когда порядок декодирования блоков размером 64x64 установлен слева направо, сверху вниз.In fig. 11 shows another possible alternative method for selecting previously encoded 64x64 blocks when the decoding order of the 64x64 blocks is set from left to right, top to bottom.

5.7 Вариант #75.7 Option #7

Предположим, что размер единицы CTU равен WxW, тогда вариант реализации буфера для режима с копированием IBC размером mWxW и битовой глубиной B, в декодирующем устройстве описан ниже.Assuming that the size of the CTU is WxW, then the implementation of a copy mode IBC buffer of size mWxW and bit depth B in the decoder is described below.

В начале декодирования строки единиц CTU инициализируют буфер с использованием значения (1<<(B-1)) и устанавливают стартовую точку для обновления (xb, yb) равную (0,0).At the start of decoding, the CTU strings initialize the buffer using the value (1<<(B-1)) and set the starting point for updating (xb, yb) to (0,0).

Когда единицу CU, начинающуюся с точки (x, y), относящейся к верхнему-левому углу единицы CTU, и имеющую размер wxh, декодируют, область, начинающаяся с точки (xb+x, yb+y) и имеющая размер wxh, будет обновлена с использованием значений реконструированных пикселей единицы CU, после совмещения битовой глубины с B бит.When a CU starting at the point (x, y) belonging to the upper-left corner of the CTU and having size wxh is decoded, the area starting at point (xb+x, yb+y) and having size wxh will be updated using the reconstructed pixel values of the CU unit, after aligning the bit depth with B bits.

После декодирования единицы CTU стартовую точку для обновления (xb, yb) устанавливают на ((xb+W) mod mW, 0).After decoding the CTU, the starting point for updating (xb, yb) is set to ((xb+W) mod mW, 0).

При декодировании единицы CU, кодированной в режиме с копированием IBC, с блочным вектором (BVx, BVy), для любого пикселя (x, y), относящегося к верхнему-левому углу единицы CTU, прогнозируемые пиксели извлекают из буфера в позиции ((x+BVx) mod mW, (y+BVy) mode W) после совмещения битовой глубины с битовой глубиной прогнозируемых сигналов.When decoding a CU encoded in copy-mode IBC with a block vector (BVx, BVy), for any pixel (x, y) belonging to the top-left corner of the CTU, the predicted pixels are extracted from the buffer at position ((x+ BVx) mod mW, (y+BVy) mode W) after matching the bit depth with the bit depth of the predicted signals.

В одном из примеров, параметр B устанавливают равным 7 или 8, тогда как битовая глубина ввода/вывода блока может быть равна 10.In one example, parameter B is set to 7 or 8, while the block I/O bit depth may be 10.

5.8 Вариант #85.8 Option #8

Для единицы CU яркостной составляющей или объединенной единицы CU яркостной/цветностной составляющей, начиная с точки (x,y), относящейся к верхнему-левому углу изображения, и блочного вектора (BVx, BVy), этот блочный вектор является недействительным, когда функция isRec(((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+(x%64), ((y+BVy)>>6<<6) +(y%64)) является истинной.For a luma CU unit or a combined luma/chrominance CU unit, starting from a point (x,y) related to the top-left corner of the image and a block vector (BVx, BVy), this block vector is invalid when the isRec( function ((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+(x%64), ((y+BVy)>>6<<6 ) +(y%64)) is true.

Для единицы CU цветностной составляющей, начиная с точки (x,y), относящейся к верхнему-левому углу изображения, и блочного вектора (BVx, BVy), этот блочный вектор является недействительным, когда функция isRec(((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) является истинной.For a CU unit of chrominance component starting from a point (x,y) related to the top-left corner of the image and a block vector (BVx, BVy), this block vector is invalid when the function isRec(((x+BVx)>> 5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) is true.

5.9 Вариант #95.9 Option #9

Для блока или субблока цветностной составляющей, начиная с точки (x,y) в формате 4:2:0, относящейся к верхнему-левому углу изображения, и блочного вектора (BVx, BVy), этот блочный вектор является недействительным, когда функция isRec(c, (x+BVx+64, y+BVy) является истинной, где c обозначает цветностную составляющую.For a block or subblock of chrominance starting at a 4:2:0 point (x,y) at the top-left corner of the image and a block vector (BVx, BVy), that block vector is invalid when the isRec( function c, (x+BVx+64, y+BVy) is true, where c denotes the chrominance component.

Для блока или субблока цветностной составляющей, начиная от точки (x,y) в формате 4:4:4, относящейся к верхнему-левому углу изображения, и блочного вектора (BVx, BVy), этот блочный вектор является недействительным, когда функция isRec(c, (x+BVx+128, y+BVy) является истинной, где c обозначает цветностную составляющую.For a block or subblock of chrominance starting from a 4:4:4 point (x,y) at the top-left corner of the image and a block vector (BVx, BVy), that block vector is invalid when the isRec( function c, (x+BVx+128, y+BVy) is true, where c denotes the chrominance component.

5.10 Вариант #105.10 Option #10

Для единицы CU яркостной составляющей или объединенной единицы CU яркостной/цветностной составляющей, начиная с точки (x,y), относящейся к верхнему-левому углу изображения, и блочного вектора (BVx, BVy), этот блочный вектор является недействительным, когда функция isRec(((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+(x%64), ((y+BVy)>>6<<6) +(y%64)) является истинной.For a luma CU unit or a combined luma/chrominance CU unit, starting from a point (x,y) related to the top-left corner of the image and a block vector (BVx, BVy), this block vector is invalid when the isRec( function ((x+BVx)>>6<<6)+128-(((y+BVy)>>6)&1)*64+(x%64), ((y+BVy)>>6<<6 ) +(y%64)) is true.

Для блока или субблока цветностной составляющей, начиная от точки (x,y) в формате 4:2:0, относящейся к верхнему-левому углу изображения, и блочного вектора (BVx, BVy), этот блочный вектор является недействительным, когда функция isRec(c, ((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) является истинной, где c обозначает цветностную составляющую.For a block or subblock of chrominance starting from a 4:2:0 point (x,y) at the top-left corner of the image and a block vector (BVx, BVy), that block vector is invalid when the isRec( function c, ((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5< <5) +(y%32)) is true, where c denotes the chrominance component.

5.11 Вариант #115.11 Option #11

Этот вариант сосредоточен на реализации, поддерживающей две самые последние кодированные единицы VPDU в 1-ой строке единиц VPDU и одну из самых последних кодированных единиц VPDU 2-ой строке единиц VPDU из строки единиц/блоков CTU/CTB, исключая текущую единицу VPDU.This option focuses on an implementation supporting the two most recently encoded VPDUs in the 1st VPDU row and one of the most recently encoded VPDUs in the 2nd VPDU row from the CTU/CTB row, excluding the current VPDU.

Когда кодирование единиц VPDU осуществляется в порядке сверху вниз и слева направо, опорная область иллюстрирована на фиг. 13.When VPDUs are encoded in top-to-bottom and left-to-right order, the reference region is illustrated in FIG. 13.

Когда единицы VPDU кодируют в порядке слева направо и сверху вниз, и текущая единица VPDU не находится справа от границы изображения, соответствующая опорная область иллюстрирована на фиг. 14.When VPDUs are encoded in left-to-right and top-to-bottom order, and the current VPDU is not located to the right of the image boundary, the corresponding reference region is illustrated in FIG. 14.

Когда единицы VPDU кодируют в порядке слева направо и сверху вниз, и текущая единица VPDU находится справа от границы изображения, соответствующая опорная область иллюстрирована на фиг. 15. When VPDUs are encoded in left-to-right and top-to-bottom order, and the current VPDU is to the right of the image boundary, the corresponding reference region is illustrated in FIG. 15.

Имея блок яркостной составляющей (x, y) размером wxh, можно сообщить, является блочный вектор (BVx, BVy) действительным или нет, путем проверки следующего условия:Given a luminance component block (x, y) of size wxh, one can tell whether the block vector (BVx, BVy) is valid or not by checking the following condition:

Функция isRec(((x+BVx+128)>>6<<6) – (refy&0x40) + (x%64), ((y+BVy)>>6<<6) + (refy>>6 == y>>6)?(y%64):0), где refy = (y&0x40) ? (y+BVy) : (y+BVy+w-1).Function isRec(((x+BVx+128)>>6<<6) – (refy&0x40) + (x%64), ((y+BVy)>>6<<6) + (refy>>6 == y>>6)?(y%64):0), where refy = (y&0x40) ? (y+BVy) : (y+BVy+w-1).

Если результат приведенной выше функции является истинным, блочный вектор является недействительным (BVx, BVy), в противном случае блочный вектор может быть действительным.If the result of the above function is true, the block vector is invalid (BVx, BVy), otherwise the block vector can be valid.

5.12 Вариант #125.12 Option #12

Если единица CTU имеет размер 192x128, поддерживают виртуальный буфер размером 192x128 для отслеживания опорных отсчетов для режима с копированием IBC.If the CTU is 192x128 in size, a 192x128 virtual buffer is maintained to track reference samples for IBC copy mode.

Отсчет (x, y) относительно верхнего-левого угла изображения ассоциирован с позицией (x%192, y%128) относительно верхнего-левого угла буфера. Следующие этапы показывают, как маркировать доступность отсчетов, ассоциированных с виртуальным буфером для опорной области для режима с копированием IBC.The reference (x, y) relative to the top-left corner of the image is associated with the position (x%192, y%128) relative to the top-left corner of the buffer. The following steps show how to mark the availability of samples associated with the virtual buffer for the reference region for IBC copy mode.

Позицию (xPrevVPDU, yPrevVPDU), относительно верхнего-левого угла изображения записывают в качестве верхнего левого отсчета из самой последней декодированной единицы VPDU.The position (xPrevVPDU, yPrevVPDU) relative to the top-left corner of the image is recorded as the top-left sample from the most recently decoded VPDU.

1. В начале декодирования строки единиц VPDU все позиции буфера маркируют как недоступные. (xPrevVPDU, yPrevVPDU) устанавливают как (0,0).1. At the start of decoding a string of VPDUs, all buffer positions are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0,0).

2. В начале декодирования 1-ой единицы CU из единицы VPDU, позиции (x, y) с x = (xPrevVPDU - 2WVPDU+ 2mWVPDU)%(mWVPDU), .., ((xPrevVPDU - 2WVPDU+ 2mWVPDU)% (mWVPDU))-1+WVPDU; и y = yPrevVPDU%(nHVPDU), .., (yPrevVPDU%(nHVPDU))-1+HVPDU могут быть маркированы как недоступные. Тогда (xPrevVPDU, yPrevVPDU) устанавливают как (xCU, yCU), т.е. верхней левой позиции указанной единицы CU относительно изображения.2. At the start of decoding the 1st CU from the VPDU, position (x, y) with x = (xPrevVPDU - 2WVPDU+ 2mWVPDU)%(mWVPDU), .., ((xPrevVPDU - 2WVPDU+ 2mWVPDU)% (mWVPDU))- 1+WVPDU; and y = yPrevVPDU%(nHVPDU), .., (yPrevVPDU%(nHVPDU))-1+HVPDU can be marked as unavailable. Then (xPrevVPDU, yPrevVPDU) is set as (xCU, yCU), i.e. the top left position of the specified CU relative to the image.

3. После декодирования единицы CU, позиции (x, y) с x = xCU%(mWVPDU), ..., (xCU+CU_width-1)%(mWVPDU) и y = yCU%(nHVPDU),…,(yCU+CU_height-1)%(nHVPDU) маркируют как недоступные.3. After decoding the CU unit, position (x, y) with x = xCU%(mWVPDU), ..., (xCU+CU_width-1)%(mWVPDU) and y = yCU%(nHVPDU),…,(yCU +CU_height-1)%(nHVPDU) is marked as unavailable.

4. Для единицы CU, кодируемой в режиме с копированием IBC, с блочным вектором (xBV, yBV), если какую-либо позицию (x, y) с x = (xCU+xBV)%(mWVPDU), ..., (xCU+xBV+CU_width-1)%(mWVPDU) и y = (yCU+yBV)%(nHVPDU),…,(yCU+yBV+CU_height-1)%(nHVPDU) маркируют как недоступную, блочный вектор считается недействительным.4. For a CU unit encoded in IBC copy mode, with a block vector (xBV, yBV), if any position (x, y) with x = (xCU+xBV)%(mWVPDU), ..., ( xCU+xBV+CU_width-1)%(mWVPDU) and y = (yCU+yBV)%(nHVPDU),…,(yCU+yBV+CU_height-1)%(nHVPDU) are marked as unavailable, the block vector is considered invalid.

На фиг. 16 показан статус буфера вместе со статусом декодирования единиц VPDU в изображении.In fig. 16 shows the buffer status along with the decoding status of VPDUs in a picture.

5.13 Вариант #135.13 Option #13

Если размер единицы CTU равен 128x128 или размер единицы CTU больше заданного размера единицы VPDU (например, 64x64 в текущем варианте способа) или размер единицы CTU больше размера единицы VPDU (например, 64x64 в сегодняшнем варианте), поддерживают виртуальный буфер размером 192x128 для отслеживания опорных отсчетов для режима с копированием IBC. В последующем, когда a < 0, (a % b) определено как функция floor(a/b)*b, где результатом функции floor(c) является наибольшим целым числом не больше c.If the CTU size is 128x128 or the CTU size is larger than the specified VPDU size (eg, 64x64 in the current embodiment) or the CTU size is larger than the VPDU size (eg, 64x64 in the current embodiment), maintain a 192x128 virtual buffer to track reference samples for IBC copy mode. Subsequently, when a < 0, (a % b) is defined as the function floor(a/b)*b, where the result of the function floor(c) is the largest integer not greater than c.

Отсчет (x, y) относительно верхнего-левого угла изображения ассоциирован с позицией (x%192, y%128) относительно верхнего-левого угла буфера. Следующие этапы показывают, как маркировать доступность отсчетов, ассоциированных с виртуальным буфером для опорной области режима с копированием IBC.The reference (x, y) relative to the top-left corner of the image is associated with the position (x%192, y%128) relative to the top-left corner of the buffer. The following steps show how to mark the availability of samples associated with a virtual buffer for the IBC copy mode reference region.

Позицию (xPrevVPDU, yPrevVPDU) относительно верхнего-левого угла изображения записывают в качестве верхнего левого отсчета из самой последней декодированной единицы VPDU.The position (xPrevVPDU, yPrevVPDU) relative to the top-left corner of the image is recorded as the top-left sample from the most recently decoded VPDU.

1. В начале декодирования строки единиц VPDU все позиции в буфере маркируют как недоступные. (xPrevVPDU, yPrevVPDU) устанавливают как (0,0).1. At the start of decoding a string of VPDUs, all positions in the buffer are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0,0).

2. В начале декодирования 1-ой единицы CU из единицы VPDU,2. At the start of decoding the 1st CU from the VPDU,

- Если параметр yPrevVPDU%64 равен 0, позиции (x, y) с x = (xPrevVPDU – 128)%192, .., ((xPrevVPDU – 128)%192) + 63; и y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, маркируют как недоступные. Тогда (xPrevVPDU, yPrevVPDU) устанавливают как (xCU, yCU), т.е. верхняя-левая позиция единицы CU относительно изображения.- If parameter yPrevVPDU%64 is 0, positions (x, y) with x = (xPrevVPDU – 128)%192, .., ((xPrevVPDU – 128)%192) + 63; and y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, are marked as unavailable. Then (xPrevVPDU, yPrevVPDU) is set as (xCU, yCU), i.e. top-left position of the CU unit relative to the image.

- В противном случае, позиции (x, y) с x = (xPrevVPDU – 64)%192, .., ((xPrevVPDU – 64)%192) + 63; и y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, маркируют как недоступные. Тогда (xPrevVPDU, yPrevVPDU) устанавливают как (xCU, yCU), т.е. верхняя-левая позиция единицы CU относительно изображения.- Otherwise, positions (x, y) with x = (xPrevVPDU – 64)%192, .., ((xPrevVPDU – 64)%192) + 63; and y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, are marked as unavailable. Then (xPrevVPDU, yPrevVPDU) is set as (xCU, yCU), i.e. top-left position of the CU unit relative to the image.

5. После декодирования единицы CU, позиции (x, y) с x = xCU%192, ..., (xCU+CU_width-1)%192 и y = yCU%128,…,(yCU+CU_height-1)%128 маркируют как недоступные.5. After decoding the CU unit, position (x, y) with x = xCU%192, ..., (xCU+CU_width-1)%192 and y = yCU%128,…,(yCU+CU_height-1)% 128 are marked as unavailable.

6. Для единицы CU, кодируемой в режиме с копированием IBC, с блочным вектором (xBV, yBV), если какую-либо позицию (x, y) с x = (xCU+xBV)%192, ..., (xCU+xBV+CU_width-1)%192 и y = (yCU+yBV)%128,…,(yCU+yBV+CU_height-1)%128 маркируют как недоступную, блочный вектор считается недействительным.6. For a CU unit encoded in IBC copy mode, with a block vector (xBV, yBV), if any position (x, y) with x = (xCU+xBV)%192, ..., (xCU+ xBV+CU_width-1)%192 and y = (yCU+yBV)%128,…,(yCU+yBV+CU_height-1)%128 are marked as unavailable, the block vector is considered invalid.

Если размер единицы CTU равен SxS, S не равно 128, пусть Wbuf будет равно 128*128/S. Тогда поддерживают виртуальный буфер размером WbufxS для отслеживания опорных отсчетов для режима с копированием IBC. Размер единицы VPDU в таком случае равен размеру единицы CTU.If the CTU size is SxS, S is not equal to 128, let Wbuf be equal to 128*128/S. A virtual buffer of size WbufxS is then maintained to track reference samples for IBC copy mode. The size of the VPDU unit in this case is equal to the size of the CTU unit.

Позицию (xPrevVPDU, yPrevVPDU) относительно верхнего-левого угла изображения записывают в качестве верхнего левого отсчета из самой последней декодированной единицы VPDU.The position (xPrevVPDU, yPrevVPDU) relative to the top-left corner of the image is recorded as the top-left sample from the most recently decoded VPDU.

1. В начале декодирования строки единиц VPDU все позиции в буфере маркируют как недоступные. (xPrevVPDU, yPrevVPDU) устанавливают как (0,0).1. At the start of decoding a string of VPDUs, all positions in the buffer are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0,0).

2. В начале декодирования 1-ой единицы CU из единицы VPDU, позиции (x, y) с x = (xPrevVPDU – Wbuf*S)%S, .., ((xPrevVPDU – Wbuf*S)%S) + S - 1; и y = yPrevVPDU%S, .., (yPrevVPDU%S) + S -1; маркируют как недоступные. Тогда (xPrevVPDU, yPrevVPDU) устанавливают как (xCU, yCU), т.е. верхняя-левая позиция единицы CU относительно изображения.2. At the start of decoding the 1st CU from the VPDU, position (x, y) with x = (xPrevVPDU – W buf *S)%S, .., ((xPrevVPDU – W buf *S)%S) + S - 1; and y = yPrevVPDU%S, .., (yPrevVPDU%S) + S -1; marked as unavailable. Then (xPrevVPDU, yPrevVPDU) is set as (xCU, yCU), i.e. top-left position of the CU unit relative to the image.

3. После декодирования единицы CU, позиции (x, y) с x = xCU%(Wbuf), ..., (xCU+CU_width-1)%(Wbuf) и y = yCU%S,…,(yCU+CU_height-1)%S маркируют как доступные.3. After decoding the CU unit, position (x, y) with x = xCU%(W buf ), ..., (xCU+CU_width-1)%(W buf ) and y = yCU%S,…,(yCU +CU_height-1)%S is marked as accessible.

4. Для единицы CU, кодируемой в режиме с копированием IBC, с блочным вектором (xBV, yBV), если какую-либо позицию (x, y) с x = (xCU+xBV)%(Wbuf), ..., (xCU+xBV+CU_width-1)%(Wbuf) и y = (yCU+yBV)%S,…,(yCU+yBV+CU_height-1)%S маркируют как недоступную, блочный вектор считается недействительным.4. For a CU unit encoded in IBC copy mode, with a block vector (xBV, yBV), if any position (x, y) with x = (xCU+xBV)%(Wbuf), ..., ( xCU+xBV+CU_width-1)%(Wbuf) and y = (yCU+yBV)%S,…,(yCU+yBV+CU_height-1)%S are marked as unavailable, the block vector is considered invalid.

5.14 Вариант #145.14 Option #14

Если размер единицы CTU равен 128x128 или размер единицы CTU больше размера единицы VPDU (например, 64x64 в сегодняшнем варианте) или размер единицы CTU больше размера единицы VPDU (например, 64x64 в сегодняшнем варианте), тогда поддерживают виртуальный буфер размером 256x128 для отслеживания опорных отсчетов для режима с копированием IBC. В последующем, когда a < 0, (a % b) определено как функция floor(a/b)*b, где результат функции floor(c) является наибольшим целым числом не больше c.If the CTU size is 128x128 or the CTU size is larger than the VPDU size (for example, 64x64 in today's release) or the CTU size is larger than the VPDU size (for example, 64x64 in today's release), then maintain a 256x128 virtual buffer to track the reference samples for mode with IBC copying. Subsequently, when a < 0, (a % b) is defined as the function floor(a/b)*b, where the result of the function floor(c) is the largest integer not greater than c.

Отсчет (x, y) относительно верхнего-левого угла изображения ассоциирован с позицией (x%256, y%128) относительно верхнего-левого угла буфера. Следующие этапы показывают, как маркировать доступность отсчетов, ассоциированных с виртуальным буфером для опорной области режима с копированием IBC.The reference (x, y) relative to the top-left corner of the image is associated with the position (x%256, y%128) relative to the top-left corner of the buffer. The following steps show how to mark the availability of samples associated with a virtual buffer for the IBC copy mode reference region.

Позицию (xPrevVPDU, yPrevVPDU) относительно верхнего-левого угла изображения записывают в качестве верхнего левого отсчета из самой последней декодированной единицы VPDU.The position (xPrevVPDU, yPrevVPDU) relative to the top-left corner of the image is recorded as the top-left sample from the most recently decoded VPDU.

1. В начале декодирования строки единиц VPDU все позиции в буфере маркируют как недоступные. (xPrevVPDU, yPrevVPDU) устанавливают как (0,0).1. At the start of decoding a string of VPDUs, all positions in the buffer are marked as unavailable. (xPrevVPDU, yPrevVPDU) is set to (0,0).

2. В начале декодирования 1-ой единицы CU из единицы VPDU,2. At the start of decoding the 1st CU from the VPDU,

- Если yPrevVPDU%64 равно 0, позиции (x, y) с x = (xPrevVPDU – 128)%256, .., ((xPrevVPDU – 128)% 256) + 63; и y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, маркируют как недоступные. Тогда (xPrevVPDU, yPrevVPDU) устанавливают как (xCU, yCU), т.е. верхняя-левая позиция единицы CU относительно изображения.- If yPrevVPDU%64 is 0, positions (x, y) with x = (xPrevVPDU – 128)%256, .., ((xPrevVPDU – 128)% 256) + 63; and y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, are marked as unavailable. Then (xPrevVPDU, yPrevVPDU) is set as (xCU, yCU), i.e. top-left position of the CU unit relative to the image.

- В противном случае, позиции (x, y) с x = (xPrevVPDU – 64)% 256, .., ((xPrevVPDU – 64)% 256) + 63; и y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, маркируют как недоступные. Тогда (xPrevVPDU, yPrevVPDU) устанавливают как (xCU, yCU), т.е. верхняя-левая позиция единицы CU относительно изображения.- Otherwise, positions (x, y) with x = (xPrevVPDU – 64)% 256, .., ((xPrevVPDU – 64)% 256) + 63; and y = yPrevVPDU%128, .., (yPrevVPDU%128)+63, are marked as unavailable. Then (xPrevVPDU, yPrevVPDU) is set as (xCU, yCU), i.e. top-left position of the CU unit relative to the image.

5. После декодирования единицы CU, позиции (x, y) с x = xCU%256, ..., (xCU+CU_width-1)%256 и y = yCU%128,…,(yCU+CU_height-1)%128 маркируют как доступные.5. After decoding the CU unit, position (x, y) with x = xCU%256, ..., (xCU+CU_width-1)%256 and y = yCU%128,…,(yCU+CU_height-1)% 128 are marked as available.

6. Для единицы CU, кодируемой в режиме с копированием IBC, с блочным вектором (xBV, yBV), если какую-либо позицию (x, y) с x = (xCU+xBV)%256, ..., (xCU+xBV+CU_width-1)%256 и y = (yCU+yBV)%128,…,(yCU+yBV+CU_height-1)%128 маркируют как недоступную, блочный вектор считается недействительным.6. For a CU unit encoded in IBC copy mode, with a block vector (xBV, yBV), if any position (x, y) with x = (xCU+xBV)%256, ..., (xCU+ xBV+CU_width-1)%256 and y = (yCU+yBV)%128,…,(yCU+yBV+CU_height-1)%128 are marked as unavailable, the block vector is considered invalid.

Когда размер единицы CTU не равен 128x128 или меньше 64x64 или меньше 64x64, применяют такую же процедуру, как в предшествующем варианте, т.е. варианте #14.When the CTU size is not 128x128 or less than 64x64 or less than 64x64, the same procedure as in the previous embodiment is applied, i.e. option #14.

5.15 Вариант #155.15 Option #15

Процедура маркировки доступности опорной области для режима с копированием IBC описывается следующим образом. В этом документе изменения обозначены жирным курсивом с подчеркиванием.The procedure for marking the availability of a reference region for IBC copy mode is described as follows. In this document, changes are indicated in bold italics with underlining.

7.3.7.1 Общий синтаксис среза данных7.3.7.1 General data slice syntax

slice_data( ) {slice_data() { ДескрипторDescriptor for( i = 0; i < NumBricksInCurrSlice; i++ ) {for( i = 0; i < NumBricksInCurrSlice; i++ ) { CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ] for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { NumHmvpCand = 0NumHmvpCand = 0 NumHmvpIbcCand = 0NumHmvpIbcCand = 0 xPrevVPDU = 0xPrevVPDU = 0 yPrevVPDU = 0yPrevVPDU = 0 if( CtbSizeY == 128 )if( CtbSizeY == 128 ) reset_ibc_isDecoded(0, 0, 256, CtbSizeY, BufWidth, BufHeight)reset_ibc_isDecoded(0, 0, 256, CtbSizeY, BufWidth, BufHeight) elseelse reset_ibc_isDecoded(0, 0, 128*128/CtbSizeY, CtbSizeY, BufWidth, BufHeight)reset_ibc_isDecoded(0, 0, 128*128/CtbSizeY, CtbSizeY, BufWidth, BufHeight) }} CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ] ………… reset_ibc_isDecoded(x0, y0, w, h, BufWidth, BufHeight) {reset_ibc_isDecoded(x0, y0, w, h, BufWidth, BufHeight) { ДескрипторDescriptor if( x0 >= 0)if( x0 >= 0) for (x = x0 % BufWidth; x < x0 + w; x+=4)for (x = x0 % BufWidth; x < x0 + w; x+=4) for (y = y0 % BufHeight; y < y0 + h; y+=4)for (y = y0 % BufHeight; y < y0 + h; y+=4) isDecoded[ x >> 2 ][ y >> 2 ] = 0isDecoded[ x >> 2 ][ y >> 2 ] = 0 }}

Параметр BufWidth равен (CtbSizeY==128)?256:(128*128/CtbSizeY) и параметр BufHeight равен CtbSizeY.The BufWidth parameter is equal to (CtbSizeY==128)?256:(128*128/CtbSizeY) and the BufHeight parameter is equal to CtbSizeY.

7.3.7.5 Синтаксис единицы кодирования7.3.7.5 Coding unit syntax

coding_unit( x0, y0, cbWidth, cbHeight, treeType ) {coding_unit(x0, y0, cbWidth, cbHeight, treeType) { ДескрипторDescriptor if( treeType != DUAL_TREE_CHROMA && ( CtbSizeY = = 128 ) && (x0 % 64) = = 0 && (y0 % 64) = = 0 ) {if( treeType != DUAL_TREE_CHROMA && ( CtbSizeY = = 128 ) && (x0 % 64) = = 0 && (y0 % 64) = = 0 ) { for( x = x0; x < x0 + cbWidth; x += 64 )for( x = x0; x < x0 + cbWidth; x += 64 ) for( y = y0; y < y0 + cbHeight; y += 64 )for( y = y0; y < y0 + cbHeight; y += 64 ) if( ( yPrevVPDU % 64 ) = = 0 )if( ( yPrevVPDU % 64 ) = = 0 ) reset_ibc_isDecoded(xPrevVPDU – 128, yPrevVPDU, 64, 64, BufWidth, BufHeight)reset_ibc_isDecoded(xPrevVPDU – 128, yPrevVPDU, 64, 64, BufWidth, BufHeight) elseelse reset_ibc_isDecoded(xPrevVPDU – 64, yPrevVPDU, 64, 64, BufWidth, BufHeight)reset_ibc_isDecoded(xPrevVPDU – 64, yPrevVPDU, 64, 64, BufWidth, BufHeight) xPrevVPDU = x0xPrevVPDU = x0 yPrevVPDU = y0yPrevVPDU = y0 }} if( treeType != DUAL_TREE_CHROMA && ( CtbSizeY < 128 ) && (x0 % CtbSizeY) = = 0 && (y0 % CtbSizeY) = = 0 ) {if( treeType != DUAL_TREE_CHROMA && ( CtbSizeY < 128 ) && (x0 % CtbSizeY) = = 0 && (y0 % CtbSizeY) = = 0 ) { reset_ibc_isDecoded(xPrevVPDU – (128*128/CtbSizeY – CtbSizeY), yPrevVPDU, 64, 64, BufWidth, BufHeight)reset_ibc_isDecoded(xPrevVPDU – (128*128/CtbSizeY – CtbSizeY), yPrevVPDU, 64, 64, BufWidth, BufHeight) xPrevVPDU = x0xPrevVPDU = x0 yPrevVPDU = y0yPrevVPDU = y0 }} if( slice_type != I | | sps_ibc_enabled_flag ) {if( slice_type != I | | sps_ibc_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA &&
!( cbWidth = = 4 && cbHeight = = 4 && !sps_ibc_enabled_flag ) )
if( treeType != DUAL_TREE_CHROMA &&
!( cbWidth = = 4 && cbHeight = = 4 && !sps_ibc_enabled_flag ) )
cu_skip_flag[ x0 ][ y0 ]cu_skip_flag[ x0 ][ y0 ] ae(v)ae(v) if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I
&& !( cbWidth = = 4 && cbHeight = = 4 ) )
if( cu_skip_flag[ x0 ][ y0 ] = = 0 && slice_type != I
&& !( cbWidth = = 4 && cbHeight = = 4 ) )
pred_mode_flagpred_mode_flag ae(v)ae(v) if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | |
( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA | |
( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] = = 0 ) ) ) ) &&
sps_ibc_enabled_flag && ( cbWidth != 128 && cbHeight != 128 ) )
if( ( ( slice_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | |
( slice_type != I && ( CuPredMode[ x0 ][ y0 ] != MODE_INTRA | |
( cbWidth = = 4 && cbHeight = = 4 && cu_skip_flag[ x0 ][ y0 ] = = 0 ) ) ) &&
sps_ibc_enabled_flag && ( cbWidth != 128 && cbHeight != 128 ) )
pred_mode_ibc_flagpred_mode_ibc_flag ae(v)ae(v) }} ...

8.6.2 Процедура получения компонентов вектора движения для блоков в режиме с копированием IBC 8.6.2 Procedure for obtaining motion vector components for blocks in IBC copy mode

8.6.2.1 Общие положения8.6.2.1 General

...

Требование соответствия потока битов данных состоит в том, что когда привлекается процедура проверки действительности блочных векторов согласно статье 8.6.3.2 для блочного вектора mvL, параметр isBVvalid должен иметь значение «истинно».The data bitstream compliance requirement is that when the block vector validity procedure of clause 8.6.3.2 is invoked for a block vector mvL, the parameter isBVvalid shall be true.

...

8.6.3 Процедура декодирования для блоков, кодированных в режиме с копированием ibc 8.6.3 Decoding procedure for blocks encoded in ibc copy mode

8.6.3.1 Общие положения8.6.3.1 General

Эту процедуру привлекают при декодировании единиц кодирования, которые были кодированы в режиме прогнозирования с копированием блоков (ibc).This procedure is used when decoding coding units that have been encoded in block copy prediction (ibc) mode.

Входными данными для процедуры являются:The input data for the procedure is:

- позиция яркостной составляющей ( xCb, yCb ), специфицирующая верхний-левый отсчет текущего блока кодирования относительно верхнего-левого отсчета яркостной составляющей в текущем изображении,- position of the luminance component (xCb, yCb), specifying the top-left sample of the current coding block relative to the top-left sample of the luminance component in the current image,

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей,- variable cbHeight, which specifies the height of the current coding block in luminance component samples,

- переменные numSbX и numSbY, специфицирующиие число субблоков кодирования яркостной составляющей в горизонтальном и вертикальном направлениях,- variables numSbX and numSbY, specifying the number of subblocks for encoding the luminance component in the horizontal and vertical directions,

- векторы движения mv[ xSbIdx ][ ySbIdx ] при xSbIdx = 0 .. numSbX − 1, и ySbIdx = 0 .. numSbY − 1,- motion vectors mv[ xSbIdx ][ ySbIdx ] for xSbIdx = 0 .. numSbX − 1, and ySbIdx = 0 .. numSbY − 1,

- переменная cIdx, специфицирующая индекс цветовой составляющей для текущего блока.- variable cIdx, which specifies the index of the color component for the current block.

- массив ibcBuf размсером (nIbcBufW)x(ctbSize) - array ibcBuf size (nIbcBufW)x(ctbSize)

...

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

- Ппозицию яркостной составляющей ( xSb, ySb ), специфицирующую верхний-евый отсчет текущего субблока кодирования относительно верхнего-левого отсчета яркостной составляющей в текущем изображении, определяют следующим образом:- The luminance component position (xSb, ySb), specifying the top-left sample of the current encoding subblock relative to the top-left sample of the luminance component in the current image, is determined as follows:

( xSb, ySb ) = ( xCb + xSbIdx * sbWidth, yCb + ySbIdx * sbHeight ) (8-913)( xSb, ySb ) = ( xCb + xSbIdx * sbWidth, yCb + ySbIdx * sbHeight ) (8-913)

Если параметр cIdx параметр 0, параметр nIbcBufW устанавливают равным ibcBufferWidth, иначе параметр nIbcBufW устанавливают равным ( ibcBufferWidth / SubWidthC ). Применяется следующее:If the cIdx parameter is 0, the nIbcBufW parameter is set to ibcBufferWidth, otherwise the nIbcBufW parameter is set to ( ibcBufferWidth / SubWidthC ). The following applies:

predSamples[ xSb + x ][ ySb + y ] = ibcBuf [ ( xSb + x + (mv[ xSb ][ ySb ][ 0 ] >> 4 )) % nIbcRefW ][ ySb + y + (mv[ xSb ][ ySb ][ 1 ] >> 4) ]predSamples[ xSb + x ][ ySb + y ] = ibcBuf [ ( xSb + x + (mv[ xSb ][ ySb ][ 0 ] >> 4 )) % nIbcRefW ][ ySb + y + (mv[ xSb ][ ySb ][ 1 ] >> 4) ]

при x = 0..sbWidth − 1 и y = 0..sbHeight – 1.for x = 0..sbWidth − 1 and y = 0..sbHeight – 1.

...

8.6.3.2 Процедура проверки действительности блочного вектора8.6.3.2 Procedure for checking the validity of a block vector

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция яркостной составляющей ( xCb, yCb ), специфицирующая верхний-левый отсчет текущего блока кодирования относительно верхнего-левого отсчета яркостной составляющей текущего изображения,- position of the luminance component (xCb, yCb), specifying the top-left sample of the current coding block relative to the top-left sample of the luminance component of the current image,

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей,- variable cbHeight, which specifies the height of the current coding block in luminance component samples,

- переменные numSbX и numSbY, специфицирующие число субблоков кодирования яркостной составляющей в горизонтальном и вертикальном направлении,- variables numSbX and numSbY, specifying the number of subblocks for encoding the luminance component in the horizontal and vertical directions,

- блочные векторы mv[ xSbIdx ][ ySbIdx ] при xSbIdx = 0 .. numSbX − 1, и ySbIdx = 0 .. numSbY − 1,- block vectors mv[ xSbIdx ][ ySbIdx ] with xSbIdx = 0 .. numSbX − 1, and ySbIdx = 0 .. numSbY − 1,

- переменная cIdx, специфицирующая индекс цветовой составляющей для текущего блока.- variable cIdx, which specifies the index of the color component for the current block.

- массив ibcBuf размером (nIbcBufW)x(ctbSize) - ibcBuf array of size (nIbcBufW)x(ctbSize)

Выходными данными этой процедуры является флаг isBVvalid для индикации, является ли блочный вектор действительным или нет.The output of this procedure is the isBVvalid flag to indicate whether the block vector is valid or not.

Применяется следующееThe following applies

1. Флаг isBVvalid устанавливают на значение «истинно».1. The isBVvalid flag is set to true.

2. Если ( ( yCb & ( ctbSize – 1 ) ) + mv[ 0 ][ 0 ][ 1 ] + cbHeight ) > ctbSize, флаг isBVvalid устанавливают на значение «ложно».2. If ( ( yCb & ( ctbSize – 1 ) ) + mv[ 0 ][ 0 ][ 1 ] + cbHeight ) > ctbSize, the isBVvalid flag is set to false.

3. В противном случае, для каждого индекса xSbIdx, ySbIdx субблока при xSbIdx = 0 .. numSbX − 1, и ySbIdx = 0 .. numSbY – 1, определяют положение этого субблока относительно верхнего-левого отсчета яркостной составляющей блока ibcBuf:3. Otherwise, for each index xSbIdx, ySbIdx of the subblock with xSbIdx = 0 .. numSbX − 1, and ySbIdx = 0 .. numSbY – 1, determine the position of this subblock relative to the upper-left reading of the luminance component of the ibcBuf block:

xTL = ( xCb + xSbIdx * sbWidth + mv[ xSbIdx ][ ySbIdx ][ 0 ] ) & ( nIbcBufW – 1 )xTL = ( xCb + xSbIdx * sbWidth + mv[ xSbIdx ][ ySbIdx ][ 0 ] ) & ( nIbcBufW – 1 )

yTL = ( yCb & ( ctbSize – 1 ) ) + ySbIdx * sbHeight + mv[ xSbIdx ][ ySbIdx ][ 1 ]yTL = ( yCb & ( ctbSize – 1 ) ) + ySbIdx * sbHeight + mv[ xSbIdx ][ ySbIdx ][ 1 ]

xBR = ( xCb + xSbIdx * sbWidth + sbWidth – 1 + mv[ xSbIdx ][ ySbIdx ][ 0 ] ) & ( nIbcBufW – 1 )xBR = ( xCb + xSbIdx * sbWidth + sbWidth – 1 + mv[ xSbIdx ][ ySbIdx ][ 0 ] ) & ( nIbcBufW – 1 )

yBR = ( yCb & ( ctbSize – 1 ) ) + ySbIdx * sbHeight + sbHeight – 1 + mv[ xSbIdx ][ ySbIdx ][ 1 ]yBR = ( yCb & ( ctbSize – 1 ) ) + ySbIdx * sbHeight + sbHeight – 1 + mv[ xSbIdx ][ ySbIdx ][ 1 ]

если (isDecoded[ xTL>>2 ][ yTL>>2 ] == 0) или (isDecoded[ xBR>>2 ][ yTL>>2 ] == 0) или (isDecoded[ xBR>>2 ][ yBR>>2 ] == 0), флаг isBVvalid устанавливают на значение «ложно».if (isDecoded[ xTL>>2 ][ yTL>>2 ] == 0) or (isDecoded[ xBR>>2 ][ yTL>>2 ] == 0) or (isDecoded[ xBR>>2 ][ yBR> >2 ] == 0), the isBVvalid flag is set to false.

8.7.5 Процедура реконструкции изображения8.7.5 Image reconstruction procedure

8.7.5.1 Общие положения8.7.5.1 General

Входными для этой процедуры являются:The inputs for this procedure are:

- позиция ( xCurr, yCurr ), специфицирующая верхний-левый отсчет текущего блока относительно верхнего-левого составляющей текущего изображения,- position ( xCurr, yCurr ), specifying the top-left sample of the current block relative to the top-left component of the current image,

- переменные nCurrSw и nCurrSh, специфицирующие ширину и высоту, соответственно, текущего блока,- variables nCurrSw and nCurrSh, specifying the width and height, respectively, of the current block,

- переменная cIdx, специфицирующая цветовую составляющую текущего блока,- variable cIdx, which specifies the color component of the current block,

- массив predSamples размером (nCurrSw) x (nCurrSh), специфицирующий прогнозируемые отсчеты текущего блока,- an array of predSamples of size (nCurrSw) x (nCurrSh), specifying the predicted samples of the current block,

- массив resSamples размером (nCurrSw) x (nCurrSh), специфицирующий отсчеты остатка текущего блока.- resSamples array of size (nCurrSw) x (nCurrSh), specifying samples of the remainder of the current block.

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

- массив recSamples реконструированных отсчетов изображения.- recSamples array of reconstructed image samples.

- массив ibcBuf опоры для режима с копированием IBC.- ibcBuf array of support for IBC copy mode.

...

Обозначив nIbcBufW в качестве ширины массива ibcBuf, применяется следующее:By denoting nIbcBufW as the width of the ibcBuf array, the following applies:

ibcBuf[ ( xCurr + i ) & ( nIbcBufW – 1 ) ][ ( yCurr + j ) & ( ctbSize – 1 ) ] = recSamples[ xCurr + i ][ yCurr + j ]ibcBuf[ ( xCurr + i ) & ( nIbcBufW – 1 ) ][ ( yCurr + j ) & ( ctbSize – 1 ) ] = recSamples[ xCurr + i ][ yCurr + j ]

при i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

5.16 Вариант #165.16 Option #16

Это идентично предшествующему варианту за исключением следующих изменений This is identical to the previous version except for the following changes

slice_data( ) {slice_data() { ДескрипторDescriptor for( i = 0; i < NumBricksInCurrSlice; i++ ) {for( i = 0; i < NumBricksInCurrSlice; i++ ) { CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ] for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { NumHmvpCand = 0NumHmvpCand = 0 NumHmvpIbcCand = 0NumHmvpIbcCand = 0 xPrevVPDU = 0xPrevVPDU = 0 yPrevVPDU = 0yPrevVPDU = 0 if( CtbSizeY == 128 )if( CtbSizeY == 128 ) reset_ibc_isDecoded(0, 0, 192, CtbSizeY, BufWidth, BufHeight)reset_ibc_isDecoded(0, 0, 192, CtbSizeY, BufWidth, BufHeight) elseelse reset_ibc_isDecoded(0, 0, 128*128/CtbSizeY, CtbSizeY, BufWidth, BufHeight)reset_ibc_isDecoded(0, 0, 128*128/CtbSizeY, CtbSizeY, BufWidth, BufHeight) }} CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ] ………… reset_ibc_isDecoded(x0, y0, w, h, BufWidth, BufHeight) {reset_ibc_isDecoded(x0, y0, w, h, BufWidth, BufHeight) { ДескрипторDescriptor if( x0 >= 0)if( x0 >= 0) for (x = x0 % BufWidth; x < x0 + w; x+=4)for (x = x0 % BufWidth; x < x0 + w; x+=4) for (y = y0 % BufHeight; y < y0 + h; y+=4)for (y = y0 % BufHeight; y < y0 + h; y+=4) isDecoded[ x >> 2 ][ y >> 2 ] = 0isDecoded[ x >> 2 ][ y >> 2 ] = 0 }}

Параметр BufWidth равен (CtbSizeY==128)?192:(128*128/CtbSizeY) и параметр BufHeight равен CtbSizeY.The BufWidth parameter is equal to (CtbSizeY==128)?192:(128*128/CtbSizeY) and the BufHeight parameter is equal to CtbSizeY.

5.17 Вариант #175.17 Option #17

Изменения в некоторых примерах обозначены в настоящем документе жирным текстом с подчеркиванием.Changes in some examples are indicated herein in bold and underlined text.

7.3.7 Синтаксис среза данных7.3.7 Data slice syntax

7.3.7.1 Общий синтаксис среза данных7.3.7.1 General data slice syntax

slice_data( ) {slice_data() { DescriptorDescriptor for( i = 0; i < NumBricksInCurrSlice; i++ ) {for( i = 0; i < NumBricksInCurrSlice; i++ ) { CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ] for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { NumHmvpCand = 0NumHmvpCand = 0 NumHmvpIbcCand = 0NumHmvpIbcCand = 0 resetIbcBuf = 1resetIbcBuf = 1 }} CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ] coding_tree_unit( )coding_tree_unit( ) if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
end_of_subset_one_bit /* equal to 1 */end_of_subset_one_bit /* equal to 1 */ ae(v)ae(v) if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 )if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 ) byte_alignment( )byte_alignment( ) }} }} if( !entropy_coding_sync_enabled_flag ) {if( !entropy_coding_sync_enabled_flag ) { end_of_brick_one_bit /* equal to 1 */end_of_brick_one_bit /* equal to 1 */ ae(v)ae(v) if( i < NumBricksInCurrSlice − 1 )if( i < NumBricksInCurrSlice − 1 ) byte_alignment( )byte_alignment( ) }} }} }}

7.4.8.5 Семантика единицы кодирования7.4.8.5 Coding unit semantics

Когда все следующие условия являются истинными, основанный на предыстории список предикторов векторов движения для области совместно используемого списка объединяемых кандидатов обновляют путем установления параметра NumHmvpSmrIbcCand равным параметру NumHmvpIbcCand, и установления параметра HmvpSmrIbcCandList[ i ] равным параметру HmvpIbcCandList[ i ] для i = 0..NumHmvpIbcCand − 1:When all the following conditions are true, the list of predictors of traffic vectors based on the background of the predictors of the jointly used list of united candidates is updated by establishing the NumHmvpsmibCCAND parameter equal to the NumHmvpibCCAND parameter, and the establishment of the HMVPSMIBCANDLIST [I] parameter. i] for i = 0..numhmvpibccand − 1:

- IsInSmr[ x0 ][ y0 ] равно «Истинно» (TRUE). - IsInSmr[ x0 ][ y0 ] is equal to “TRUE”.

- SmrX[ x0 ][ y0 ] равно x0.- SmrX[ x0 ][ y0 ] is equal to x0.

- SmrY[ x0 ][ y0 ] раввно y0.- SmrY[ x0 ][ y0 ] is equal to y0.

Следующие назначения сделаны для x = x0..x0 + cbWidth − 1 и y = y0..y0 + cbHeight − 1:The following assignments are made for x = x0..x0 + cbWidth − 1 and y = y0..y0 + cbHeight − 1:

CbPosX[ x ][ y ] = x0 (7-135)CbPosX[ x ][ y ] = x0 (7-135)

CbPosY[ x ][ y ] = y0 (7-136)CbPosY[ x ][ y ] = y0 (7-136)

CbWidth[ x ][ y ] = cbWidth (7-137)CbWidth[ x ][ y ] = cbWidth (7-137)

CbHeight[ x ][ y ] = cbHeight (7-138)CbHeight[ x ][ y ] = cbHeight (7-138)

Установление параметра vSize как min( ctbSize, 64 ) и параметра wIbcBuf как (128*128/ctbSize). Ширина и высота массива ibcBuf равны wIbcBuf и ctbSize соответственно.Setting the vSize parameter to min( ctbSize, 64 ) and the wIbcBuf parameter to (128*128/ctbSize). The width and height of the ibcBuf array are equal to wIbcBuf and ctbSize, respectively.

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

- ibcBuf[ x % wIbcBuf ][ y % ctbSize ] = − 1, для x = x0..x0 + wIbcBuf − 1 и y = y0..y0 + ctbSize – 1- ibcBuf[ x % wIbcBuf ][ y % ctbSize ] = − 1, for x = x0..x0 + wIbcBuf − 1 and y = y0..y0 + ctbSize – 1

- resetIbcBuf = 0- resetIbcBuf = 0

Когда ( x0 % vSize ) равно 0 и ( y0 % vSize ) равно 0, для x = x0..x0 + vSize − 1 и y = y0..y0 + vSize – 1, применяется следующееWhen ( x0 % vSize ) is 0 and ( y0 % vSize ) is 0, for x = x0..x0 + vSize − 1 and y = y0..y0 + vSize – 1, the following applies

ibcBuf[ x % wIbcBuf ][ y % ctbSize ] = − 1ibcBuf[ x % wIbcBuf ][ y % ctbSize ] = − 1

8.6.2 Процедура определения компонентов векторов движения для блоков в режиме с копированием IBC 8.6.2 Procedure for determining motion vector components for blocks in IBC copy mode

8.6.2.1 Общие положения8.6.2.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция яркостной составляющей ( xCb, yCb ) верхнего-левого отсчета текущего блока кодирования яркостной составляющей относительно верхнего-левого отсчета яркостной составляющей текущего изображения, - position of the brightness component ( xCb, yCb ) of the upper-left sample of the current luminance component encoding block relative to the upper-left sample of the luminance component of the current image,

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей.- variable cbHeight, which specifies the height of the current coding block in luminance component samples.

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

- вектор mvL движения яркостной составляющей с точностью в 1/16 долю отсчета.- vector mvL of the movement of the brightness component with an accuracy of 1/16 of the count.

Этот вектор mvL движения яркостной составляющей получают следующим образом:This luminance component motion vector mvL is obtained as follows:

- Процедуру прогнозирования вектора движения яркостной составляющей в режиме с копированием IBC, как это специфицировано в статье 8.6.2.2, привлекают с использованием позиции яркостной составляющей ( xCb, yCb ), переменных cbWidth и cbHeight в качестве входных данных, а выходными данными является вектор mvL движения яркостной составляющей.- The IBC copy mode luminance motion vector prediction procedure, as specified in clause 8.6.2.2, is invoked using the luminance component position (xCb, yCb), the variables cbWidth and cbHeight as input, and the output is the motion vector mvL brightness component.

- Когда флаг general_merge_flag[ xCb ][ yCb ] равен 0, применяется следующее:- When the general_merge_flag[ xCb ][ yCb ] is 0, the following applies:

1. Переменную mvd определяют следующим образом:1. The mvd variable is defined as follows:

mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)

mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)

2. Процедуру округления для векторов движения, как это специфицировано в статье 8.5.2.14, привлекают при mvX установленном равным mvL, rightShift установленном равным MvShift + 2, и leftShift установленном равным MvShift + 2 в качестве входных данных, и округленном векторе mvL в качестве выходных данных.2. The rounding procedure for motion vectors, as specified in clause 8.5.2.14, is invoked with mvX set equal to mvL, rightShift set equal to MvShift + 2, and leftShift set equal to MvShift + 2 as input, and the rounded vector mvL as output data.

3. Вектор mvL движения яркостной составляющей модифицируют следующим образом:3. The motion vector mvL of the brightness component is modified as follows:

u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 218 ) % 218 (8-885)u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 2 18 ) % 2 18 (8-885)

mvL[ 0 ] = ( u[ 0 ] >= 217 ) ? ( u[ 0 ] − 218 ) : u[ 0 ] (8-886)mvL[ 0 ] = ( u[ 0 ] >= 2 17 ) ? ( u[ 0 ] − 2 18 ) : u[ 0 ] (8-886)

u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 218 ) % 218 (8-887)u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 2 18 ) % 2 18 (8-887)

mvL[ 1 ] = ( u[ 1 ] >= 217 ) ? ( u[ 1 ] − 218 ) : u[ 1 ] (8-888)mvL[ 1 ] = ( u[ 1 ] >= 2 17 ) ? ( u[ 1 ] − 2 18 ) : u[ 1 ] (8-888)

ПРИМЕЧАНИЕ 1– Результирующие значения векторов mvL[ 0 ] и mvL[ 1 ], как это специфицировано выше, всегда будут в диапазоне от −217 до 217 − 1, включительно.NOTE 1 – The resulting values of the vectors mvL[ 0 ] and mvL[ 1 ], as specified above, will always be in the range −2 17 to 2 17 − 1, inclusive.

Процедуру обновления основанного на предыстории списка предикторов векторов движения, как это специфицировано в статье 8.6.2.6, привлекают для вектора mvL движения яркостной составляющей.The procedure for updating the history-based list of motion vector predictors, as specified in clause 8.6.2.6, is applied to the luminance component motion vector mvL.

Требование соответствия потока битов данных, состоит в том, что вектор mvL блока яркостной составляющей должен удовлетворять следующим ограничениям:The data bitstream compliance requirement is that the luma block vector mvL must satisfy the following constraints:

- ((yCb + ( mvL[ 1 ] >> 4 ) ) % wIbcBuf ) + cbHeight не больше ctbSize- ((yCb + ( mvL[ 1 ] >> 4 ) ) % wIbcBuf ) + cbHeight not greater than ctbSize

- Для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight – 1, ibcBuf[ ( x + (mvL[0]>>4) ) % wIbcBuf ][ ( y + (mvL[1]>>4)) % ctbSize ] не должно быть равно −1.- For x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight – 1, ibcBuf[ ( x + (mvL[0]>>4) ) % wIbcBuf ][ ( y + (mvL[1 ]>>4)) % ctbSize ] should not be equal to −1.

8.7.5 Процедура реконструкции изображения8.7.5 Image reconstruction procedure

8.7.5.1 Общие положения8.7.5.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция ( xCurr, yCurr ), специфицирующая верхний-левый отсчет текущего блока относительно верхнего-левого отсчета составляющей текущего изображения,- position ( xCurr, yCurr ), specifying the top-left sample of the current block relative to the top-left sample of the current image component,

- переменные nCurrSw и nCurrSh, специфицирующи ширину и высоту, соответственно, текущего блока,- variables nCurrSw and nCurrSh, specifying the width and height, respectively, of the current block,

- переменная cIdx, специфицирующая цветовую составляющую текущего блока,- variable cIdx, which specifies the color component of the current block,

- массив predSamples размером (nCurrSw) x (nCurrSh), специфицирующий прогнозируемые отсчеты текущего блока,- an array of predSamples of size (nCurrSw) x (nCurrSh), specifying the predicted samples of the current block,

- массив resSamples размером (nCurrSw) x (nCurrSh), специфицирующий отсчеты остатка для текущего блока.- resSamples array of size (nCurrSw) x (nCurrSh), specifying the remainder samples for the current block.

Выходными данными этой процедуры являются массив recSamples реконструированных отсчетов и массив ibcBuf в буфере режима с копированием IBC.The output of this procedure is a recSamples array of reconstructed samples and an ibcBuf array in the IBC copy mode buffer.

В зависимости от значения cIdx для цветовой составляющей, делают следующие назначения:Depending on the cIdx value for the color component, the following assignments are made:

- Если параметр cIdx равен 0, массив recSamples соответствует массиву SL реконструированных отсчетов изображения и функция clipCidx1 соответствует Clip1Y.- If cIdx is 0, the recSamples array corresponds to the S L array of reconstructed image samples and the function clipCidx1 corresponds to Clip1 Y .

- В противном случае, если параметр cIdx равен 1, параметр tuCbfChroma устанавливают равным tu_cbf_cb[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCb реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise, if the cIdx parameter is equal to 1, the tuCbfChroma parameter is set to tu_cbf_cb[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cb array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

- В противном случае (параметр cIdx равен 2), параметр tuCbfChroma устанавливают равным tu_cbf_cr[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCr реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise (parameter cIdx is equal to 2), the parameter tuCbfChroma is set equal to tu_cbf_cr[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cr array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

В зависимости от значения флага slice_lmcs_enabled_flag, применяется следующееDepending on the value of the slice_lmcs_enabled_flag, the following applies

- Если флаг slice_lmcs_enabled_flag равен 0, блок recSamples реконструированных отсчетов размером (nCurrSw)x(nCurrSh) в позиции ( xCurr, yCurr ) определяют следующим образом - If the slice_lmcs_enabled_flag is 0, a recSamples block of reconstructed samples of size (nCurrSw)x(nCurrSh) at position ( xCurr, yCurr ) is defined as follows

для i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:for i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:

recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)

- В противном случае (флаг slice_lmcs_enabled_flag равен 1), применяется следующее:- Otherwise (slice_lmcs_enabled_flag is 1), the following applies:

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

- Процедуру реконструкции изображения с отображением отсчетов яркостной составляющей, как это специфицировано в статье 8.7.5.2, привлекают в позиции ( xCurr, yCurr ) яркостной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока, массив predSamples прогнозируемых отсчетов яркостной составляющей и массив resSamples отсчетов остатка яркостной составляющей, а выходными данными является массив resSamples реконструированных отсчетов яркостной составляющей.- The procedure for image reconstruction with display of luminance component samples, as specified in article 8.7.5.2, is attracted to the position ( xCurr, yCurr ) of the luminance component, the input data is the width nCurrSw and height nCurrSh of the block, the predSamples array of predicted luminance component samples and the resSamples array of samples the remainder of the brightness component, and the output data is an array of resSamples of reconstructed samples of the brightness component.

- В противном случае (параметр cIdx больше 0), процедуру реконструкции изображения с процедурой зависящего от яркостной составляющей масштабирования остатка цветностной составляющей применительно к отсчетам цветностной составляющей, как это специфицировано в статье 8.7.5.3, привлекают в позиции ( xCurr, yCurr ) цветностной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока преобразования, флаг кодированного блока для текущего блока tuCbfChroma преобразования цветностной составляющей, массив predSamples прогнозируемых отсчетов цветностной составляющей и массив resSamples отсчетов остатка цветностной составляющей, а выходными данными является массив recSamples реконструированных отсчетов цветностной составляющей.- Otherwise (parameter cIdx greater than 0), the image reconstruction procedure with the luminance component-dependent scaling procedure of the chrominance component residual in relation to the chrominance component samples, as specified in clause 8.7.5.3, is involved in the position ( xCurr, yCurr ) of the chrominance component, the input data is the width nCurrSw and the height nCurrSh of the transformation block, the coded block flag for the current chrominance component transformation block tuCbfChroma, the predSamples array of predicted chrominance component samples and the resSamples array of samples of the remainder of the chrominance component, and the output data is the recSamples array of reconstructed chrominance component samples.

После декодирования текущей единицы кодирования применяется следующее:After decoding the current encoding unit, the following applies:

ibcBuf[ ( xCurr + i ) % wIbcBuf ][ ( yCurr + j ) % ctbSize ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf[ ( xCurr + i ) % wIbcBuf ][ ( yCurr + j ) % ctbSize ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

5.18 Вариант #185.18 Option #18

Изменения в некоторых примерах обозначены в настоящем документе жирным курсивом с подчеркиванием.Changes in some examples are indicated herein in bold italics with underlining.

7.3.7 Синтаксис данных среза7.3.7 Slice data syntax

7.3.7.1 Общий синтаксис данных среза7.3.7.1 General slice data syntax

slice_data( ) {slice_data() { DescriptorDescriptor for( i = 0; i < NumBricksInCurrSlice; i++ ) {for( i = 0; i < NumBricksInCurrSlice; i++ ) { CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ] for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { NumHmvpCand = 0NumHmvpCand = 0 NumHmvpIbcCand = 0NumHmvpIbcCand = 0 resetIbcBuf = 1resetIbcBuf = 1 }} CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ] coding_tree_unit( )coding_tree_unit( ) if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
end_of_subset_one_bit /* equal to 1 */end_of_subset_one_bit /* equal to 1 */ ae(v)ae(v) if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 )if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 ) byte_alignment( )byte_alignment( ) }} }} if( !entropy_coding_sync_enabled_flag ) {if( !entropy_coding_sync_enabled_flag ) { end_of_brick_one_bit /* equal to 1 */end_of_brick_one_bit /* equal to 1 */ ae(v)ae(v) if( i < NumBricksInCurrSlice − 1 )if( i < NumBricksInCurrSlice − 1 ) byte_alignment( )byte_alignment( ) }} }} }}

7.4.8.5 Семантика единицы кодирования 7.4.8.5 Coding unit semantics

Когда все следующие условия являются истинными, основанный на предыстории список предикторов векторов движения для области совместно используемого списка объединяемых кандидатов обновляют путем установления параметра NumHmvpSmrIbcCand равным параметру NumHmvpIbcCand, и установления параметра HmvpSmrIbcCandList[ i ] равным параметру HmvpIbcCandList[ i ] для i = 0..NumHmvpIbcCand − 1:When all the following conditions are true, the list of predictors of traffic vectors based on the background of the predictors of the jointly used list of united candidates is updated by establishing the NumHmvpsmibCCAND parameter equal to the NumHmvpibCCAND parameter, and the establishment of the HMVPSMIBCANDLIST [I] parameter. i] for i = 0..numhmvpibccand − 1:

- IsInSmr[ x0 ][ y0 ] равно «Истинно» (TRUE). - IsInSmr[ x0 ][ y0 ] is equal to “TRUE”.

- SmrX[ x0 ][ y0 ] равно x0.- SmrX[ x0 ][ y0 ] is equal to x0.

- SmrY[ x0 ][ y0 ] равнол y0.- SmrY[ x0 ][ y0 ] equals y0.

Следующие назначения делают для x = x0..x0 + cbWidth − 1 и y = y0..y0 + cbHeight − 1:The following assignments are made for x = x0..x0 + cbWidth − 1 and y = y0..y0 + cbHeight − 1:

CbPosX[ x ][ y ] = x0 (7-135)CbPosX[ x ][ y ] = x0 (7-135)

CbPosY[ x ][ y ] = y0 (7-136)CbPosY[ x ][ y ] = y0 (7-136)

CbWidth[ x ][ y ] = cbWidth (7-137)CbWidth[ x ][ y ] = cbWidth (7-137)

CbHeight[ x ][ y ] = cbHeight (7-138)CbHeight[ x ][ y ] = cbHeight (7-138)

Установления параметра vSize как min( ctbSize, 64 ) и параметра wIbcBufY как (128*128/CtbSizeY).Setting the vSize parameter to min( ctbSize, 64 ) and the wIbcBufY parameter to (128*128/CtbSizeY).

ibcBufL представляет собой массив шириной wIbcBufY и высотой CtbSizeY.ibcBuf L is an array of width wIbcBufY and height CtbSizeY.

ibcBufCb and ibcBufCr представляют собой массивы с шириной wIbcBufC =(wIbcBufY/SubWidthC) и высотой (CtbSizeY/SubHeightC), т.е. CtbSizeC.ibcBuf Cb and ibcBuf Cr are arrays with width wIbcBufC =(wIbcBufY/SubWidthC) and height (CtbSizeY/SubHeightC), i.e. CtbSizeC.

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

- ibcBufL[ x % wIbcBufY ][ y % CtbSizeY ] = − 1, для x = x0..x0 + wIbcBufY − 1 и y = y0..y0 + CtbSizeY – 1- ibcBuf L [ x % wIbcBufY ][ y % CtbSizeY ] = − 1, for x = x0..x0 + wIbcBufY − 1 and y = y0..y0 + CtbSizeY – 1

- ibcBufCb[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0..x0 + wIbcBufC − 1 и y = y0..y0 + CtbSizeC – 1- ibcBuf Cb [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1

- ibcBufCr[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0..x0 + wIbcBufC − 1 и y = y0..y0 + CtbSizeC – 1- ibcBuf Cr [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1

- resetIbcBuf = 0- resetIbcBuf = 0

Когда ( x0 % vSizeY ) равно 0 и ( y0 % vSizeY ) равно 0, применяется следующееWhen ( x0 % vSizeY ) is 0 and ( y0 % vSizeY ) is 0, the following applies

- ibcBufL[ x % wIbcBufY ][ y % CtbSizeY ] = − 1, для x = x0..x0 + vSize − 1 и y = y0..y0 + vSize – 1- ibcBuf L [ x % wIbcBufY ][ y % CtbSizeY ] = − 1, for x = x0..x0 + vSize − 1 and y = y0..y0 + vSize – 1

- ibcBufCb[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0/SubWidthC..x0/ SubWidthC + vSize/ SubWidthC − 1 и y = y0/SubHeightC..y0/SubHeightC + vSize/SubHeightC – 1- ibcBuf Cb [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0/SubWidthC..x0/ SubWidthC + vSize/ SubWidthC − 1 and y = y0/SubHeightC..y0/SubHeightC + vSize/SubHeightC – 1

- ibcBufCr[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0/SubWidthC..x0/ SubWidthC + vSize/ SubWidthC − 1 и y = y0/SubHeightC..y0/SubHeightC + vSize/SubHeightC – 1- ibcBuf Cr [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0/SubWidthC..x0/ SubWidthC + vSize/ SubWidthC − 1 and y = y0/SubHeightC..y0/SubHeightC + vSize/SubHeightC – 1

8.6.2 Процедура получения компонентов вектора движения для блоков в режиме с копированием IBC8.6.2 Procedure for obtaining motion vector components for blocks in IBC copy mode

8.6.2.1 Общие положения8.6.2.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

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

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей.- variable cbHeight, which specifies the height of the current coding block in luminance component samples.

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

- вектор mvL движения яркостной составляющей с точностью в 1/16 долю отсчета.- vector mvL of the movement of the brightness component with an accuracy of 1/16 of the count.

Вектор mvL движения яркостной составляющей определяют следующим образом:The motion vector mvL of the brightness component is determined as follows:

- Процедуру прогнозирования вектора движения яркостной составляющей в режиме с копированием IBC, как это специцировано в статье 8.6.2.2, привлекают с позиции ( xCb, yCb ) яркостной составляющей, входными данными для этого являются переменные cbWidth и cbHeight, а выходными данными является вектор mvL движения яркостной составляющей.- The procedure for predicting the motion vector of the luminance component in the IBC copy mode, as specified in clause 8.6.2.2, is drawn from the position ( xCb, yCb ) of the luminance component, the input data for this are the variables cbWidth and cbHeight, and the output data is the motion vector mvL brightness component.

- Когда флаг general_merge_flag[ xCb ][ yCb ] равен 0, применяется следующее:- When the general_merge_flag[ xCb ][ yCb ] is 0, the following applies:

1. Переменную mvd определяют следующим образом:1. The mvd variable is defined as follows:

mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)

mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)

2. Процедуру округления для векторов движения, как это специфицировано в статье 8.5.2.14, привлекают при mvX установленном равным mvL, rightShift установленном равным MvShift + 2, и leftShift установленном равным MvShift + 2 в качестве входных данных, и округленном векторе mvL в качестве выходных данных.2. The rounding procedure for motion vectors, as specified in clause 8.5.2.14, is invoked with mvX set equal to mvL, rightShift set equal to MvShift + 2, and leftShift set equal to MvShift + 2 as input, and the rounded vector mvL as output data.

3. Вектор mvL движения яркостной составляющей модифицируют следующим образом:3. The motion vector mvL of the brightness component is modified as follows:

u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 218 ) % 218 (8-885)u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 2 18 ) % 2 18 (8-885)

mvL[ 0 ] = ( u[ 0 ] >= 217 ) ? ( u[ 0 ] − 218 ) : u[ 0 ] (8-886)mvL[ 0 ] = ( u[ 0 ] >= 2 17 ) ? ( u[ 0 ] − 2 18 ) : u[ 0 ] (8-886)

u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 218 ) % 218 (8-887)u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 2 18 ) % 2 18 (8-887)

mvL[ 1 ] = ( u[ 1 ] >= 217 ) ? ( u[ 1 ] − 218 ) : u[ 1 ] (8-888)mvL[ 1 ] = ( u[ 1 ] >= 2 17 ) ? ( u[ 1 ] − 2 18 ) : u[ 1 ] (8-888)

ПРИМЕЧАНИЕ 1– Результирующие значения векторов mvL[ 0 ] и mvL[ 1 ], как это специфицировано выше, всегда будут в диапазоне от −217 до 217 − 1, включительно.NOTE 1 – The resulting values of the vectors mvL[ 0 ] and mvL[ 1 ], as specified above, will always be in the range −2 17 to 2 17 − 1, inclusive.

Процедуру обновления основанного на предыстории списка предикторов векторов движения, как это специфицировано в статье 8.6.2.6, привлекают для вектора mvL движения яркостной составляющей.The procedure for updating the history-based list of motion vector predictors, as specified in clause 8.6.2.6, is applied to the luminance component motion vector mvL.

Статью 8.6.2.5 привлекают при векторе mvL в качестве входных данных и mvC в качестве выходных данных.Article 8.6.2.5 is invoked with the vector mvL as input and mvC as output.

Требование соответствия потока битов данных, состоит в том, что вектор mvL блока яркостной составляющей должен удовлетворять следующим ограничениям:The data bitstream compliance requirement is that the luma block vector mvL must satisfy the following constraints:

- ((yCb + ( mvL[ 1 ] >> 4 ) ) % CtbSizeY ) + cbHeight не меньше CtbSizeY- ((yCb + ( mvL[ 1 ] >> 4 ) ) % CtbSizeY ) + cbHeight is not less than CtbSizeY

- Для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight – 1, ibcBufL[ (x + (mvL[0]>>4)) % wIbcBufY ][ ( y +(mvL[1]>>4)) % CtbSizeY ] должно быть не равно −1.- For x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight – 1, ibcBuf L [ (x + (mvL[0]>>4)) % wIbcBufY ][ ( y +(mvL[ 1]>>4)) % CtbSizeY ] must not be equal to −1.

- Если параметр treeType равен SINGLE_TREE, для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight – 1, ibcBufCb[ (x + (mvC[0]>>5)) % wIbcBufC ][ ( y +(mvC[1]>>5)) % CtbSizeC] ] должно быть не равно −1.- If the treeType parameter is SINGLE_TREE, for x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight – 1, ibcBuf Cb [ (x + (mvC[0]>>5)) % wIbcBufC ][ ( y +(mvC[1]>>5)) % CtbSizeC] ] must not be equal to −1.

8.6.3 Процедура декодирования для блоков, кодированных в режиме с копированием ibc8.6.3 Decoding procedure for blocks encoded in ibc copy mode

8.6.3.1 Общие положение8.6.3.1 General

Эту процедуру привлекают при декодировании единиц кодирования, которые были кодированы в режиме прогнозирования с копированием блоков (ibc).This procedure is used when decoding coding units that have been encoded in block copy prediction (ibc) mode.

Входными для этой процедуры являются:The inputs for this procedure are:

- позиция ( xCb, yCb ) яркостной составляющей, специфицирующая верхний-левый отсчет текущего блока кодирования относительно верхнего-левого отсчета яркостной составляющей в текущем изображении,- position ( xCb, yCb ) of the luminance component, specifying the top-left sample of the current coding block relative to the top-left sample of the luminance component in the current image,

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей,- variable cbHeight, which specifies the height of the current coding block in luminance component samples,

- индекс цветовой составляющей для текущего блока.- index of the color component for the current block.

- вектор mv движения,- motion vector mv,

- массив ibcBufL размером (wIbcBufY)x(CtbSizeY), массив ibcBufCb размером (wIbcBufC)x(CtbSizeC), массив ibcBufCr размером (wIbcBufC)x(CtbSizeC).- array ibcBuf L of size (wIbcBufY)x(CtbSizeY), array ibcBuf Cb of size (wIbcBufC)x(CtbSizeC), array ibcBuf Cr of size (wIbcBufC)x(CtbSizeC).

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

- массив predSamples прогнозируемых отсчетов.- array of predSamples of predicted samples.

Для x = xCb.. xCb+ Width − 1 и y = yCb..yCb + Height − 1, применяется следующееFor x = xCb.. xCb+ Width − 1 and y = yCb..yCb + Height − 1, the following applies

Если cIdx равно 0If cIdx is 0

predSamples[ x ][ y ] = ibcBufL[ ( x + mv[ 0 ] >> 4 )) % wIbcBufY ][ ( y + (mv[ 1 ] >> 4)) % CtbSizeY ]predSamples[ x ][ y ] = ibcBuf L [ ( x + mv[ 0 ] >> 4 )) % wIbcBufY ][ ( y + (mv[ 1 ] >> 4)) % CtbSizeY ]

если cIdx равно 1if cIdx is 1

predSamples[ x ][ y ] = ibcBufCb[ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]predSamples[ x ][ y ] = ibcBuf Cb [ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]

если cIdx равно2if cIdx is 2

predSamples[ x ][ y ] = ibcBufCr[ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]predSamples[ x ][ y ] = ibcBuf Cr [ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]

8.7.5 Процедура реконструкции изображения8.7.5 Image reconstruction procedure

8.7.5.1 Общие положения8.7.5.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция ( xCurr, yCurr ), специфицирующая врехний-левый отсчет текущего блока относительно верхнего-левого отсчета компонента текущего изображения,- position ( xCurr, yCurr ) specifying the top-left reference of the current block relative to the top-left reference of the current image component,

- переменные nCurrSw и nCurrSh, специфицирующие ширину и высоту, соответственно, текущего блока,- variables nCurrSw and nCurrSh, specifying the width and height, respectively, of the current block,

- переменная cIdx, специфицирующая цветовую составляющую текущего блока,- variable cIdx, which specifies the color component of the current block,

- массив predSamples размером (nCurrSw) x (nCurrSh), специфицирующий прогнозируемые отсчеты для текущего блока,- an array of predSamples of size (nCurrSw) x (nCurrSh), specifying the predicted samples for the current block,

- массив resSamples размером (nCurrSw) x (nCurrSh), специфицирующий отсчеты остатка для для текущего блока.- resSamples array of size (nCurrSw) x (nCurrSh), specifying the remainder samples for the current block.

Выходными данными этой процедуры являются массив recSamples реконструированных отсчетов и массивы ibcBufL, ibcBufCb, ibcBufCr в буфере режима с копированием IBC.The output of this procedure is the recSamples array of reconstructed samples and the ibcBuf L , ibcBuf Cb , ibcBuf Cr arrays in the IBC copy mode buffer.

В зависимости от значения cIdx для цветовой составляющей, делают следующие назначения:Depending on the cIdx value for the color component, the following assignments are made:

- Если параметр cIdx равен 0, массив recSamples соответствует массиву SL реконструированных отсчетов изображения и функция clipCidx1 соответствует Clip1Y.- If cIdx is 0, the recSamples array corresponds to the S L array of reconstructed image samples and the function clipCidx1 corresponds to Clip1 Y .

- В противном случае, если параметр cIdx равен 1, параметр tuCbfChroma устанавливают равным tu_cbf_cb[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCb реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise, if the cIdx parameter is equal to 1, the tuCbfChroma parameter is set to tu_cbf_cb[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cb array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

- В противном случае (параметр cIdx равен 2), параметр tuCbfChroma устанавливают равным tu_cbf_cr[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCr реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise (parameter cIdx is equal to 2), the parameter tuCbfChroma is set equal to tu_cbf_cr[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cr array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

В зависимости от значения флага slice_lmcs_enabled_flag, применяется следующее:Depending on the value of the slice_lmcs_enabled_flag, the following applies:

- Если флаг slice_lmcs_enabled_flag равен 0, блок recSamples реконструированных отсчетов размером (nCurrSw)x(nCurrSh) в позиции ( xCurr, yCurr ) определяют следующим образом - If the slice_lmcs_enabled_flag is 0, a recSamples block of reconstructed samples of size (nCurrSw)x(nCurrSh) at position ( xCurr, yCurr ) is defined as follows

для i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:for i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:

recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)

- В противном случае (флаг slice_lmcs_enabled_flag равен 1), применяется следующее:- Otherwise (slice_lmcs_enabled_flag is 1), the following applies:

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

- Процедуру реконструкции изображения с отображением отсчетов яркостной составляющей, как это специфицировано в статье 8.7.5.2, привлекают в позиции ( xCurr, yCurr ) яркостной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока, массив predSamples прогнозируемых отсчетов яркостной составляющей и массив resSamples отсчетов остатка яркостной составляющей, а выходными данными является массив resSamples реконструированных отсчетов яркостной составляющей.- The procedure for image reconstruction with display of luminance component samples, as specified in article 8.7.5.2, is attracted to the position ( xCurr, yCurr ) of the luminance component, the input data is the width nCurrSw and height nCurrSh of the block, the predSamples array of predicted luminance component samples and the resSamples array of samples the remainder of the brightness component, and the output data is an array of resSamples of reconstructed samples of the brightness component.

- В противном случае (параметр cIdx больше 0), процедуру реконструкции изображения с процедурой зависящего от яркостной составляющей масштабирования остатка цветностной составляющей применительно к отсчетам цветностной составляющей, как это специфицировано в статье 8.7.5.3, привлекают в позиции ( xCurr, yCurr ) цветностной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока преобразования, флаг кодированного блока для текущего блока tuCbfChroma преобразования цветностной составляющей, массив predSamples прогнозируемых отсчетов цветностной составляющей и массив resSamples отсчетов остатка цветностной составляющей, а выходными данными является массив recSamples реконструированных отсчетов цветностной составляющей.- Otherwise (parameter cIdx greater than 0), the image reconstruction procedure with the luminance component-dependent scaling procedure of the chrominance component residual in relation to the chrominance component samples, as specified in clause 8.7.5.3, is involved in the position ( xCurr, yCurr ) of the chrominance component, the input data is the width nCurrSw and the height nCurrSh of the transformation block, the encoded block flag for the current chrominance component transformation block tuCbfChroma, the predSamples array of predicted chrominance component samples and the resSamples array of samples of the remainder of the chrominance component, and the output data is the recSamples array of reconstructed chrominance component samples.

После декодирования текущей единицы кодирования может применяться следующее:After decoding the current encoding unit, the following may apply:

Если cIdx равно 0, и если treeType равно SINGLE_TREE или DUAL_TREE_LUMA, применяется следующееIf cIdx is 0, and if treeType is SINGLE_TREE or DUAL_TREE_LUMA, the following applies

ibcBufL[ ( xCurr + i ) % wIbcBufY ][ ( yCurr + j ) % CtbSizeY ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf L [ ( xCurr + i ) % wIbcBufY ][ ( yCurr + j ) % CtbSizeY ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

Если cIdx равно 1, и если treeType равно SINGLE_TREE или DUAL_TREE_CHROMA, применяется следующееIf cIdx is 1, and if treeType is SINGLE_TREE or DUAL_TREE_CHROMA, the following applies

ibcBufCb[ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf Cb [ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

Если cIdx равно 2, и если treeType равно SINGLE_TREE или DUAL_TREE_CHROMA, применяется следующееIf cIdx is 2, and if treeType is SINGLE_TREE or DUAL_TREE_CHROMA, the following applies

ibcBufCr[ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf Cr [ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

5.19 Вариант #195.19 Option #19

Изменения в некоторых примерах обозначены в настоящем документе жирным шрифтом с подчеркиванием.Changes in some examples are indicated in bold and underlined text throughout this document.

7.3.7 Синтаксис данных среза7.3.7 Slice data syntax

7.3.7.1 Общий синтаксис данных среза7.3.7.1 General slice data syntax

slice_data( ) {slice_data() { ДескрипторDescriptor for( i = 0; i < NumBricksInCurrSlice; i++ ) {for( i = 0; i < NumBricksInCurrSlice; i++ ) { CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ] for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { NumHmvpCand = 0NumHmvpCand = 0 NumHmvpIbcCand = 0NumHmvpIbcCand = 0 resetIbcBuf = 1resetIbcBuf = 1 }} CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ] coding_tree_unit( )coding_tree_unit( ) if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
end_of_subset_one_bit /* equal to 1 */end_of_subset_one_bit /* equal to 1 */ ae(v)ae(v) if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 )if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 ) byte_alignment( )byte_alignment( ) }} }} if( !entropy_coding_sync_enabled_flag ) {if( !entropy_coding_sync_enabled_flag ) { end_of_brick_one_bit /* equal to 1 */end_of_brick_one_bit /* equal to 1 */ ae(v)ae(v) if( i < NumBricksInCurrSlice − 1 )if( i < NumBricksInCurrSlice − 1 ) byte_alignment( )byte_alignment( ) }} }} }}

7.4.8.5 Семантика единицы кодирования7.4.8.5 Coding unit semantics

Когда все следующие условия являются истинными, основанный на предыстории список предикторов векторов движения для области совместно используемого списка объединяемых кандидатов обновляют путем установления параметра NumHmvpSmrIbcCand равным параметру NumHmvpIbcCand, и установления параметра HmvpSmrIbcCandList[ i ] равным параметру HmvpIbcCandList[ i ] для i = 0..NumHmvpIbcCand − 1:When all the following conditions are true, the list of predictors of traffic vectors based on the background of the predictors of the jointly used list of united candidates is updated by establishing the NumHmvpsmibCCAND parameter equal to the NumHmvpibCCAND parameter, and the establishment of the HMVPSMIBCANDLIST [I] parameter. i] for i = 0..numhmvpibccand − 1:

- IsInSmr[ x0 ][ y0 ] равно «Истинно» (TRUE). - IsInSmr[ x0 ][ y0 ] is equal to “TRUE”.

- SmrX[ x0 ][ y0 ] равно x0.- SmrX[ x0 ][ y0 ] is equal to x0.

- SmrY[ x0 ][ y0 ] равно y0.- SmrY[ x0 ][ y0 ] is equal to y0.

Следующие назначения сделаны для x = x0..x0 + cbWidth − 1 и y = y0..y0 + cbHeight − 1:The following assignments are made for x = x0..x0 + cbWidth − 1 and y = y0..y0 + cbHeight − 1:

CbPosX[ x ][ y ] = x0 (7-135)CbPosX[ x ][ y ] = x0 (7-135)

CbPosY[ x ][ y ] = y0 (7-136)CbPosY[ x ][ y ] = y0 (7-136)

CbWidth[ x ][ y ] = cbWidth (7-137)CbWidth[ x ][ y ] = cbWidth (7-137)

CbHeight[ x ][ y ] = cbHeight (7-138)CbHeight[ x ][ y ] = cbHeight (7-138)

Установление параметра vSize как min( ctbSize, 64 ) и параметра wIbcBufY как (128*128/CtbSizeY).Setting the vSize parameter to min( ctbSize, 64 ) and the wIbcBufY parameter to (128*128/CtbSizeY).

ibcBufL представляет собой массив с шириной wIbcBufY и высотой CtbSizeY.ibcBuf L is an array with width wIbcBufY and height CtbSizeY.

ibcBufCb и ibcBufCr представляют собой массивы с шириной wIbcBufC =(wIbcBufY/SubWidthC) и высотой (CtbSizeY/SubHeightC), т.е. CtbSizeC.ibcBuf Cb and ibcBuf Cr are arrays with width wIbcBufC =(wIbcBufY/SubWidthC) and height (CtbSizeY/SubHeightC), i.e. CtbSizeC.

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

- ibcBufL[ x % wIbcBufY ][ y % CtbSizeY ] = − 1, для x = x0..x0 + wIbcBufY − 1 и y = y0..y0 + CtbSizeY – 1- ibcBuf L [ x % wIbcBufY ][ y % CtbSizeY ] = − 1, for x = x0..x0 + wIbcBufY − 1 and y = y0..y0 + CtbSizeY – 1

- ibcBufCb[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0..x0 + wIbcBufC − 1 и y = y0..y0 + CtbSizeC – 1- ibcBuf Cb [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1

- ibcBufCr[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0..x0 + wIbcBufC − 1 и y = y0..y0 + CtbSizeC – 1- ibcBuf Cr [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1

- resetIbcBuf = 0- resetIbcBuf = 0

Когда ( x0 % vSizeY ) равно 0 и ( y0 % vSizeY ) равно 0, применяется следующееWhen ( x0 % vSizeY ) is 0 and ( y0 % vSizeY ) is 0, the following applies

- ibcBufL[ x % wIbcBufY ][ y % CtbSizeY ] = − 1, для x = x0..x0 + min(vSize, cbWidth) − 1 и y = y0..y0 + min(vSize, cbHeight)– 1- ibcBuf L [ x % wIbcBufY ][ y % CtbSizeY ] = − 1, for x = x0..x0 + min(vSize, cbWidth) − 1 and y = y0..y0 + min(vSize, cbHeight)– 1

- ibcBufCb[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0/SubWidthC..x0/ SubWidthC + min(vSize/ SubWidthC, cbWidth) − 1 и y = y0/SubHeightC..y0/SubHeightC + min(vSize/SubHeightC, cbHeight) – 1- ibcBuf Cb [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0/SubWidthC..x0/ SubWidthC + min(vSize/ SubWidthC, cbWidth) − 1 and y = y0/SubHeightC..y0/SubHeightC + min(vSize/SubHeightC, cbHeight) – 1

- ibcBufCr[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0/SubWidthC..x0/ SubWidthC + min(vSize/ SubWidthC, cbWidth) − 1 и y = y0/SubHeightC..y0/SubHeightC + min(vSize/SubHeightC, cbHeight) – 1- ibcBuf Cr [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0/SubWidthC..x0/ SubWidthC + min(vSize/ SubWidthC, cbWidth) − 1 and y = y0/SubHeightC..y0/SubHeightC + min(vSize/SubHeightC, cbHeight) – 1

8.6.2 Процедура получения компонентов вектора движения для блоков в режиме с копированием IBC 8.6.2 Procedure for obtaining motion vector components for blocks in IBC copy mode

8.6.2.1 Общие положения8.6.2.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

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

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей.- variable cbHeight, which specifies the height of the current coding block in luminance component samples.

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

- вектор mvL движения яркостной составляющей с точностью в 1/16 долю отсчета.- vector mvL of the movement of the brightness component with an accuracy of 1/16 of the count.

Вектор mvL движения яркостной составляющей определяют следующим образом:The motion vector mvL of the brightness component is determined as follows:

- Процедуру прогнозирования вектора движения яркостной составляющей в режиме с копированием IBC, как это специцировано в статье 8.6.2.2, привлекают с позиции ( xCb, yCb ) яркостной составляющей, входными данными для этого являются переменные cbWidth и cbHeight, а выходными данными является вектор mvL движения яркостной составляющей.- The procedure for predicting the motion vector of the luminance component in the IBC copy mode, as specified in clause 8.6.2.2, is drawn from the position ( xCb, yCb ) of the luminance component, the input data for this are the variables cbWidth and cbHeight, and the output data is the motion vector mvL brightness component.

- Когда флаг general_merge_flag[ xCb ][ yCb ] равен 0, применяется следующее:- When the general_merge_flag[ xCb ][ yCb ] is 0, the following applies:

1. Переменную mvd определяют следующим образом:1. The mvd variable is defined as follows:

mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)

mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)

2. Процедуру округления для векторов движения, как это специфицировано в статье 8.5.2.14, привлекают при mvX установленном равным mvL, rightShift установленном равным MvShift + 2, и leftShift установленном равным MvShift + 2 в качестве входных данных, и округленном векторе mvL в качестве выходных данных.2. The rounding procedure for motion vectors, as specified in clause 8.5.2.14, is invoked with mvX set equal to mvL, rightShift set equal to MvShift + 2, and leftShift set equal to MvShift + 2 as input, and the rounded vector mvL as output data.

3. Вектор mvL движения яркостной составляющей модифицируют следующим образом:3. The motion vector mvL of the brightness component is modified as follows:

u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 218 ) % 218 (8-885)u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 2 18 ) % 2 18 (8-885)

mvL[ 0 ] = ( u[ 0 ] >= 217 ) ? ( u[ 0 ] − 218 ) : u[ 0 ] (8-886)mvL[ 0 ] = ( u[ 0 ] >= 2 17 ) ? ( u[ 0 ] − 2 18 ) : u[ 0 ] (8-886)

u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 218 ) % 218 (8-887)u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 2 18 ) % 2 18 (8-887)

mvL[ 1 ] = ( u[ 1 ] >= 217 ) ? ( u[ 1 ] − 218 ) : u[ 1 ] (8-888)mvL[ 1 ] = ( u[ 1 ] >= 2 17 ) ? ( u[ 1 ] − 2 18 ) : u[ 1 ] (8-888)

ПРИМЕЧАНИЕ 1– Результирующие значения векторов mvL[ 0 ] и mvL[ 1 ], как это специфицировано выше, всегда будут в диапазоне от −217 до 217 − 1, включительно.NOTE 1 – The resulting values of the vectors mvL[ 0 ] and mvL[ 1 ], as specified above, will always be in the range −2 17 to 2 17 − 1, inclusive.

Процедуру обновления основанного на предыстории списка предикторов векторов движения, как это специфицировано в статье 8.6.2.6, привлекают для вектора mvL движения яркостной составляющей.The procedure for updating the history-based list of motion vector predictors, as specified in clause 8.6.2.6, is applied to the luminance component motion vector mvL.

Статью 8.6.2.5 привлекают при векторе mvL в качестве входных данных и mvC в качестве выходных данных.Article 8.6.2.5 is invoked with the vector mvL as input and mvC as output.

Требование соответствия потока битов данных, состоит в том, что вектор mvL блока яркостной составляющей должен удовлетворять следующим ограничениям:The data bitstream compliance requirement is that the luma block vector mvL must satisfy the following constraints:

- ((yCb + ( mvL[ 1 ] >> 4 ) ) % CtbSizeY ) + cbHeight не больше CtbSizeY- ((yCb + ( mvL[ 1 ] >> 4 ) ) % CtbSizeY ) + cbHeight is not greater than CtbSizeY

- Для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight – 1, ibcBufL[ (x + (mvL[0]>>4)) % wIbcBufY ][ ( y +(mvL[1]>>4)) % CtbSizeY ] должно быть не равно −1.- For x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight – 1, ibcBuf L [ (x + (mvL[0]>>4)) % wIbcBufY ][ ( y +(mvL[ 1]>>4)) % CtbSizeY ] must not be equal to −1.

- Если параметр treeType равен SINGLE_TREE, для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight – 1, ibcBufCb[ (x + (mvC[0]>>5)) % wIbcBufC ][ ( y +(mvC[1]>>5)) % CtbSizeC] ] должно быть не равно −1.- If the treeType parameter is SINGLE_TREE, for x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight – 1, ibcBuf Cb [ (x + (mvC[0]>>5)) % wIbcBufC ][ ( y +(mvC[1]>>5)) % CtbSizeC] ] must not be equal to −1.

8.6.3 Процедура декодирования для блоков, кодированных в режиме с копированием ibc8.6.3 Decoding procedure for blocks encoded in ibc copy mode

8.6.3.1 Общие положения8.6.3.1 General

Эту процедуру привлекают при декодировании единиц кодирования, которые были кодированы в режиме прогнозирования с копированием блоков (ibc).This procedure is used when decoding coding units that have been encoded in block copy prediction (ibc) mode.

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция ( xCb, yCb ) яркостной составляющей, специфицирующая верхний-левый отсчет текущего блока кодирования относительно верхнего-левого отсчета яркостной составляющей в текущем изображении,- position ( xCb, yCb ) of the luminance component, specifying the top-left sample of the current coding block relative to the top-left sample of the luminance component in the current image,

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей,- variable cbHeight, which specifies the height of the current coding block in luminance component samples,

- переменная cIdx, специфицирующая индекс цветовой составляющей для текущего блока.- variable cIdx, which specifies the index of the color component for the current block.

- вектор mv движения,- motion vector mv,

- массив ibcBufL размером (wIbcBufY)x(CtbSizeY), массив ibcBufCb размером (wIbcBufC)x(CtbSizeC), массив ibcBufCr размером (wIbcBufC)x(CtbSizeC).- array ibcBuf L of size (wIbcBufY)x(CtbSizeY), array ibcBuf Cb of size (wIbcBufC)x(CtbSizeC), array ibcBuf Cr of size (wIbcBufC)x(CtbSizeC).

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

- массив predSamples прогнозируемых отсчетов.- array of predSamples of predicted samples.

Для x = xCb.. xCb+ Width − 1 и y = yCb..yCb + Height − 1, применяется следующееFor x = xCb.. xCb+ Width − 1 and y = yCb..yCb + Height − 1, the following applies

если cIdx равно 0if cIdx is 0

predSamples[ x ][ y ] = ibcBufL[ ( x + mv[ 0 ] >> 4 )) % wIbcBufY ][ ( y + (mv[ 1 ] >> 4)) % CtbSizeY ]predSamples[ x ][ y ] = ibcBuf L [ ( x + mv[ 0 ] >> 4 )) % wIbcBufY ][ ( y + (mv[ 1 ] >> 4)) % CtbSizeY ]

если cIdx равно 1if cIdx is 1

predSamples[ x ][ y ] = ibcBufCb[ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]predSamples[ x ][ y ] = ibcBuf Cb [ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]

если cIdx равно 2if cIdx is 2

predSamples[ x ][ y ] = ibcBufCr[ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]predSamples[ x ][ y ] = ibcBuf Cr [ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]

8.7.5 Процедура реконструкции изображения8.7.5 Image reconstruction procedure

8.7.5.1 Общие положения8.7.5.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция ( xCurr, yCurr ), специфицирующая врехний-левый отсчет текущего блока относительно верхнего-левого отсчета компонента текущего изображения,- position ( xCurr, yCurr ) specifying the top-left reference of the current block relative to the top-left reference of the current image component,

- переменные nCurrSw и nCurrSh, специфицирующие ширину и высоту, соответственно, текущего блока,- variables nCurrSw and nCurrSh, specifying the width and height, respectively, of the current block,

- переменная cIdx, специфицирующая цветовую составляющую текущего блока,- variable cIdx, which specifies the color component of the current block,

- массив predSamples размером (nCurrSw) x (nCurrSh), специфицирующий прогнозируемые отсчеты для текущего блока,- an array of predSamples of size (nCurrSw) x (nCurrSh), specifying the predicted samples for the current block,

- массив resSamples размером (nCurrSw) x (nCurrSh), специфицирующий отсчеты остатка для для текущего блока.- resSamples array of size (nCurrSw) x (nCurrSh), specifying the remainder samples for the current block.

Выходными данными этой процедуры являются массив recSamples реконструированных отсчетов и массивы ibcBufL, ibcBufCb, ibcBufCr в буфере режима с копированием IBC.The output of this procedure is the recSamples array of reconstructed samples and the ibcBuf L , ibcBuf Cb , ibcBuf Cr arrays in the IBC copy mode buffer.

В зависимости от значения cIdx для цветовой составляющей, делают следующие назначения:Depending on the cIdx value for the color component, the following assignments are made:

- Если параметр cIdx равен 0, массив recSamples соответствует массиву SL реконструированных отсчетов изображения и функция clipCidx1 соответствует Clip1Y.- If cIdx is 0, the recSamples array corresponds to the S L array of reconstructed image samples and the function clipCidx1 corresponds to Clip1 Y .

- В противном случае, если параметр cIdx равен 1, параметр tuCbfChroma устанавливают равным tu_cbf_cb[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCb реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise, if the cIdx parameter is equal to 1, the tuCbfChroma parameter is set to tu_cbf_cb[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cb array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

- В противном случае (параметр cIdx равен 2), параметр tuCbfChroma устанавливают равным tu_cbf_cr[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCr реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise (parameter cIdx is equal to 2), the parameter tuCbfChroma is set equal to tu_cbf_cr[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cr array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

В зависимости от значения флага slice_lmcs_enabled_flag, применяется следующее:Depending on the value of the slice_lmcs_enabled_flag, the following applies:

- Если флаг slice_lmcs_enabled_flag равен 0, блок recSamples реконструированных отсчетов размером (nCurrSw)x(nCurrSh) в позиции ( xCurr, yCurr ) определяют следующим образом - If the slice_lmcs_enabled_flag is 0, a recSamples block of reconstructed samples of size (nCurrSw)x(nCurrSh) at position ( xCurr, yCurr ) is defined as follows

для i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:for i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:

recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)

- В противном случае (флаг slice_lmcs_enabled_flag равен 1), применяется следующее:- Otherwise (slice_lmcs_enabled_flag is 1), the following applies:

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

- Процедуру реконструкции изображения с отображением отсчетов яркостной составляющей, как это специфицировано в статье 8.7.5.2, привлекают в позиции ( xCurr, yCurr ) яркостной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока, массив predSamples прогнозируемых отсчетов яркостной составляющей и массив resSamples отсчетов остатка яркостной составляющей, а выходными данными является массив resSamples реконструированных отсчетов яркостной составляющей.- The procedure for image reconstruction with display of luminance component samples, as specified in article 8.7.5.2, is attracted to the position ( xCurr, yCurr ) of the luminance component, the input data is the width nCurrSw and height nCurrSh of the block, the predSamples array of predicted luminance component samples and the resSamples array of samples the remainder of the brightness component, and the output data is an array of resSamples of reconstructed samples of the brightness component.

- В противном случае (параметр cIdx больше 0), процедуру реконструкции изображения с процедурой зависящего от яркостной составляющей масштабирования остатка цветностной составляющей применительно к отсчетам цветностной составляющей, как это специфицировано в статье 8.7.5.3, привлекают в позиции ( xCurr, yCurr ) цветностной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока преобразования, флаг кодированного блока для текущего блока tuCbfChroma преобразования цветностной составляющей, массив predSamples прогнозируемых отсчетов цветностной составляющей и массив resSamples отсчетов остатка цветностной составляющей, а выходными данными является массив recSamples реконструированных отсчетов цветностной составляющей.- Otherwise (parameter cIdx greater than 0), the image reconstruction procedure with the luminance component-dependent scaling procedure of the chrominance component residual in relation to the chrominance component samples, as specified in clause 8.7.5.3, is involved in the position ( xCurr, yCurr ) of the chrominance component, the input data is the width nCurrSw and the height nCurrSh of the transformation block, the encoded block flag for the current chrominance component transformation block tuCbfChroma, the predSamples array of predicted chrominance component samples and the resSamples array of samples of the remainder of the chrominance component, and the output data is the recSamples array of reconstructed chrominance component samples.

После декодирования текущей единицы кодирования может применяться следующее:After decoding the current encoding unit, the following may apply:

Если cIdx равно 0, и если treeType равно SINGLE_TREE или DUAL_TREE_LUMA, применяется следующееIf cIdx is 0, and if treeType is SINGLE_TREE or DUAL_TREE_LUMA, the following applies

ibcBufL[ ( xCurr + i ) % wIbcBufY ][ ( yCurr + j ) % CtbSizeY ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf L [ ( xCurr + i ) % wIbcBufY ][ ( yCurr + j ) % CtbSizeY ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

Если cIdx равно 1, и если treeType равно SINGLE_TREE или DUAL_TREE_CHROMA, применяется следующееIf cIdx is 1, and if treeType is SINGLE_TREE or DUAL_TREE_CHROMA, the following applies

ibcBufCb[ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf Cb [ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

Если cIdx равно 2, и если treeType равно SINGLE_TREE или DUAL_TREE_CHROMA, применяется следующееIf cIdx is 2, and if treeType is SINGLE_TREE or DUAL_TREE_CHROMA, the following applies

ibcBufCr[ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf Cr [ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

5.20 Вариант #205.20 Option #20

Изменения в некоторых примерах обозначены в настоящем документе жирным курсивом с подчеркиванием.Changes in some examples are indicated herein in bold italics with underlining.

7.3.7 Синтаксис данных среза7.3.7 Slice data syntax

7.3.7.1 Общий синтаксис данных среза7.3.7.1 General slice data syntax

slice_data( ) {slice_data() { ДескрипторDescriptor for( i = 0; i < NumBricksInCurrSlice; i++ ) {for( i = 0; i < NumBricksInCurrSlice; i++ ) { CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ]CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ] for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) {for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) {if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { NumHmvpCand = 0NumHmvpCand = 0 NumHmvpIbcCand = 0NumHmvpIbcCand = 0 resetIbcBuf = 1resetIbcBuf = 1 }} CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ]CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ] coding_tree_unit( )coding_tree_unit( ) if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
if( entropy_coding_sync_enabled_flag &&
( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) {
end_of_subset_one_bit /* equal to 1 */end_of_subset_one_bit /* equal to 1 */ ae(v)ae(v) if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 )if( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] − 1 ) byte_alignment( )byte_alignment( ) }} }} if( !entropy_coding_sync_enabled_flag ) {if( !entropy_coding_sync_enabled_flag ) { end_of_brick_one_bit /* equal to 1 */end_of_brick_one_bit /* equal to 1 */ ae(v)ae(v) if( i < NumBricksInCurrSlice − 1 )if( i < NumBricksInCurrSlice − 1 ) byte_alignment( )byte_alignment( ) }} }} }}

7.4.8.5 Семантика единицы кодирования7.4.8.5 Coding unit semantics

Когда все следующие условия являются истинными, основанный на предыстории список предикторов векторов движения для области совместно используемого списка объединяемых кандидатов обновляют путем установления параметра NumHmvpSmrIbcCand равным параметру NumHmvpIbcCand, и установления параметра HmvpSmrIbcCandList[ i ] равным параметру HmvpIbcCandList[ i ] для i = 0..NumHmvpIbcCand − 1:When all the following conditions are true, the list of predictors of traffic vectors based on the background of the predictors of the jointly used list of united candidates is updated by establishing the NumHmvpsmibCCAND parameter equal to the NumHmvpibCCAND parameter, and the establishment of the HMVPSMIBCANDLIST [I] parameter. i] for i = 0..numhmvpibccand − 1:

- IsInSmr[ x0 ][ y0 ] равно «Истинно» (TRUE). - IsInSmr[ x0 ][ y0 ] is equal to “TRUE”.

- SmrX[ x0 ][ y0 ] равно x0.- SmrX[ x0 ][ y0 ] is equal to x0.

- SmrY[ x0 ][ y0 ] равно y0.- SmrY[ x0 ][ y0 ] is equal to y0.

Следующие назначения сделаны для x = x0..x0 + cbWidth − 1 и y = y0..y0 + cbHeight − 1:The following assignments are made for x = x0..x0 + cbWidth − 1 and y = y0..y0 + cbHeight − 1:

CbPosX[ x ][ y ] = x0 (7-135)CbPosX[ x ][ y ] = x0 (7-135)

CbPosY[ x ][ y ] = y0 (7-136)CbPosY[ x ][ y ] = y0 (7-136)

CbWidth[ x ][ y ] = cbWidth (7-137)CbWidth[ x ][ y ] = cbWidth (7-137)

CbHeight[ x ][ y ] = cbHeight (7-138)CbHeight[ x ][ y ] = cbHeight (7-138)

Установление параметра vSize как min( ctbSize, 64 ) и параметра wIbcBufY как (128*128/CtbSizeY).Setting the vSize parameter to min( ctbSize, 64 ) and the wIbcBufY parameter to (128*128/CtbSizeY).

ibcBufL представляет собой массив с шириной wIbcBufY и высотой CtbSizeY.ibcBuf L is an array with width wIbcBufY and height CtbSizeY.

ibcBufCb и ibcBufCr представляют собой массивы с шириной wIbcBufC =(wIbcBufY/SubWidthC) и высотой (CtbSizeY/SubHeightC), т.е. CtbSizeC.ibcBuf Cb and ibcBuf Cr are arrays with width wIbcBufC =(wIbcBufY/SubWidthC) and height (CtbSizeY/SubHeightC), i.e. CtbSizeC.

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

- ibcBufL[ x % wIbcBufY ][ y % CtbSizeY ] = − 1, for x = x0..x0 + wIbcBufY − 1 and y = y0..y0 + CtbSizeY – 1- ibcBuf L [ x % wIbcBufY ][ y % CtbSizeY ] = − 1, for x = x0..x0 + wIbcBufY − 1 and y = y0..y0 + CtbSizeY – 1

- ibcBufCb[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1- ibcBuf Cb [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1

- ibcBufCr[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1- ibcBuf Cr [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0..x0 + wIbcBufC − 1 and y = y0..y0 + CtbSizeC – 1

- resetIbcBuf = 0- resetIbcBuf = 0

Когда ( x0 % vSizeY ) равно 0 и ( y0 % vSizeY ) равно 0, применяется следующееWhen ( x0 % vSizeY ) is 0 and ( y0 % vSizeY ) is 0, the following applies

- ibcBufL[ x % wIbcBufY ][ y % CtbSizeY ] = − 1, для x = x0..x0 + max(vSize, cbWidth) − 1 и y = y0..y0 + max(vSize, cbHeight)– 1- ibcBuf L [ x % wIbcBufY ][ y % CtbSizeY ] = − 1, for x = x0..x0 + max(vSize, cbWidth) − 1 and y = y0..y0 + max(vSize, cbHeight)– 1

- ibcBufCb[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0/SubWidthC..x0/ SubWidthC + max(vSize/ SubWidthC, cbWidth) − 1 и y = y0/SubHeightC..y0/SubHeightC + max(vSize/SubHeightC, cbHeight) – 1- ibcBuf Cb [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0/SubWidthC..x0/ SubWidthC + max(vSize/ SubWidthC, cbWidth) − 1 and y = y0/SubHeightC..y0/SubHeightC + max(vSize/SubHeightC, cbHeight) – 1

- ibcBufCr[ x % wIbcBufC ][ y % CtbSizeC ] = − 1, для x = x0/SubWidthC..x0/ SubWidthC + max(vSize/ SubWidthC, cbWidth) − 1 и y = y0/SubHeightC..y0/SubHeightC + max(vSize/SubHeightC, cbHeight) – 1- ibcBuf Cr [ x % wIbcBufC ][ y % CtbSizeC ] = − 1, for x = x0/SubWidthC..x0/ SubWidthC + max(vSize/ SubWidthC, cbWidth) − 1 and y = y0/SubHeightC..y0/SubHeightC + max(vSize/SubHeightC, cbHeight) – 1

8.6.2 Процедура получения компонентов вектора движения для блоков в режиме с копированием IBC8.6.2 Procedure for obtaining motion vector components for blocks in IBC copy mode

8.6.2.1 Общие положения8.6.2.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

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

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей.- variable cbHeight, which specifies the height of the current coding block in luminance component samples.

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

- вектор mvL движения яркостной составляющей с точностью в 1/16 долю отсчета.- vector mvL of the movement of the brightness component with an accuracy of 1/16 of the count.

Вектор mvL движения яркостной составляющей определяют следующим образом:The motion vector mvL of the brightness component is determined as follows:

- Процедуру прогнозирования вектора движения яркостной составляющей в режиме с копированием IBC, как это специцировано в статье 8.6.2.2, привлекают с позиции ( xCb, yCb ) яркостной составляющей, входными данными для этого являются переменные cbWidth и cbHeight, а выходными данными является вектор mvL движения яркостной составляющей.- The procedure for predicting the motion vector of the luminance component in the IBC copy mode, as specified in clause 8.6.2.2, is drawn from the position ( xCb, yCb ) of the luminance component, the input data for this are the variables cbWidth and cbHeight, and the output data is the motion vector mvL brightness component.

- Когда флаг general_merge_flag[ xCb ][ yCb ] равен 0, применяется следующее:- When the general_merge_flag[ xCb ][ yCb ] is 0, the following applies:

1. Переменную mvd определяют следующим образом:1. The mvd variable is defined as follows:

mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)mvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (8-883)

mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)mvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (8-884)

2. Процедуру округления для векторов движения, как это специфицировано в статье 8.5.2.14, привлекают при mvX, установленном равным mvL, rightShift, установленном равным MvShift + 2, и leftShift, установленном равным MvShift + 2 в качестве входных данных, и округленном векторе mvL в качестве выходных данных.2. The rounding procedure for motion vectors, as specified in clause 8.5.2.14, is invoked with mvX set equal to mvL, rightShift set equal to MvShift + 2, and leftShift set equal to MvShift + 2 as input, and the rounded vector mvL as output.

3. Вектор mvL движения яркостной составляющей модифицируют следующим образом:3. The motion vector mvL of the brightness component is modified as follows:

u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 218 ) % 218 (8-885)u[ 0 ] = ( mvL[ 0 ] + mvd[ 0 ] + 2 18 ) % 2 18 (8-885)

mvL[ 0 ] = ( u[ 0 ] >= 217 ) ? ( u[ 0 ] − 218 ) : u[ 0 ] (8-886)mvL[ 0 ] = ( u[ 0 ] >= 2 17 ) ? ( u[ 0 ] − 2 18 ) : u[ 0 ] (8-886)

u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 218 ) % 218 (8-887)u[ 1 ] = ( mvL[ 1 ] + mvd[ 1 ] + 2 18 ) % 2 18 (8-887)

mvL[ 1 ] = ( u[ 1 ] >= 217 ) ? ( u[ 1 ] − 218 ) : u[ 1 ] (8-888)mvL[ 1 ] = ( u[ 1 ] >= 2 17 ) ? ( u[ 1 ] − 2 18 ) : u[ 1 ] (8-888)

ПРИМЕЧАНИЕ 1– Результирующие значения векторов mvL[ 0 ] и mvL[ 1 ], как это специфицировано выше, всегда будут в диапазоне от −217 до 217 − 1, включительно.NOTE 1 – The resulting values of the vectors mvL[ 0 ] and mvL[ 1 ], as specified above, will always be in the range −2 17 to 2 17 − 1, inclusive.

Процедуру обновления основанного на предыстории списка предикторов векторов движения, как это специфицировано в статье 8.6.2.6, привлекают для вектора mvL движения яркостной составляющей.The procedure for updating the history-based list of motion vector predictors, as specified in clause 8.6.2.6, is applied to the luminance component motion vector mvL.

Статью 8.6.2.5 привлекают при векторе mvL в качестве входных данных и mvC в качестве выходных данных.Article 8.6.2.5 is invoked with the vector mvL as input and mvC as output.

Требование соответствия потока битов данных, состоит в том, что вектор mvL блока яркостной составляющей должен удовлетворять следующим ограничениям:The data bitstream compliance requirement is that the luma block vector mvL must satisfy the following constraints:

- ((yCb + ( mvL[ 1 ] >> 4 ) ) % CtbSizeY ) + cbHeight не больше CtbSizeY- ((yCb + ( mvL[ 1 ] >> 4 ) ) % CtbSizeY ) + cbHeight is not greater than CtbSizeY

- Для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight – 1, ibcBufL[ (x + (mvL[0]>>4)) % wIbcBufY ][ ( y +(mvL[1]>>4)) % CtbSizeY ] не больше −1.- For x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight – 1, ibcBuf L [ (x + (mvL[0]>>4)) % wIbcBufY ][ ( y +(mvL[ 1]>>4)) % CtbSizeY ] is not more than −1.

8.6.3 Процедура декодирования для блоков, кодированных в режиме с копированием ibc 8.6.3 Decoding procedure for blocks encoded in ibc copy mode

8.6.3.1 Общие положения8.6.3.1 General

Эту процедуру привлекают при декодировании единиц кодирования, которые были кодированы в режиме прогнозирования с копированием блоков (ibc).This procedure is used when decoding coding units that have been encoded in block copy prediction (ibc) mode.

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция ( xCb, yCb ) яркостной составляющей, специфицирующая верхний-левый отсчет текущего блока кодирования относительно верхнего-левого отсчета яркостной составляющей в текущем изображении,- position ( xCb, yCb ) of the luminance component, specifying the top-left sample of the current coding block relative to the top-left sample of the luminance component in the current image,

- переменная cbWidth, специфицирующая ширину текущего блока кодирования в отсчетах яркостной составляющей,- variable cbWidth, which specifies the width of the current coding block in luminance component samples,

- переменная cbHeight, специфицирующая высоту текущего блока кодирования в отсчетах яркостной составляющей,- variable cbHeight, which specifies the height of the current coding block in luminance component samples,

- переменная cIdx, специфицирующая индекс цветовой составляющей для текущего блока.- variable cIdx, which specifies the index of the color component for the current block.

- вектор mv движения,- motion vector mv,

- массив ibcBufL размером (wIbcBufY)x(CtbSizeY), массив ibcBufCb размером (wIbcBufC)x(CtbSizeC), массив ibcBufCr размером (wIbcBufC)x(CtbSizeC).- array ibcBuf L of size (wIbcBufY)x(CtbSizeY), array ibcBuf Cb of size (wIbcBufC)x(CtbSizeC), array ibcBuf Cr of size (wIbcBufC)x(CtbSizeC).

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

- массив predSamples прогнозируемых отсчетов.- array of predSamples of predicted samples.

Для x = xCb.. xCb+ Width − 1 и y = yCb..yCb + Height − 1, применяется следующееFor x = xCb.. xCb+ Width − 1 and y = yCb..yCb + Height − 1, the following applies

Если cIdx равно 0If cIdx is 0

predSamples[ x ][ y ] = ibcBufL[ ( x + mv[ 0 ] >> 4 )) % wIbcBufY ][ ( y + (mv[ 1 ] >> 4)) % CtbSizeY ]predSamples[ x ][ y ] = ibcBuf L [ ( x + mv[ 0 ] >> 4 )) % wIbcBufY ][ ( y + (mv[ 1 ] >> 4)) % CtbSizeY ]

если cIdx равно 1if cIdx is 1

predSamples[ x ][ y ] = ibcBufCb[ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]predSamples[ x ][ y ] = ibcBuf Cb [ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]

если cIdx равно 2if cIdx is 2

predSamples[ x ][ y ] = ibcBufCr[ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]predSamples[ x ][ y ] = ibcBuf Cr [ ( x + mv[ 0 ] >> 5 )) % wIbcBufC ][ ( y + (mv[ 1 ] >> 5)) % CtbSizeC ]

8.7.5 Процедура реконструкции изображения8.7.5 Image reconstruction procedure

8.7.5.1 Общие положения8.7.5.1 General

Входными данными для этой процедуры являются:The inputs to this procedure are:

- позиция ( xCurr, yCurr ), специфицирующая верхний-левый отсчет текущего блока относительно верхнего-левого отсчета компонента текущего изображения,- position ( xCurr, yCurr ) specifying the top-left sample of the current block relative to the top-left sample of the current image component,

- переменные nCurrSw и nCurrSh, специфицирующие ширину и высоту, соответственно, текущего блока,- variables nCurrSw and nCurrSh, specifying the width and height, respectively, of the current block,

- переменная cIdx, специфицирующая цветовую составляющую текущего блока,- variable cIdx, which specifies the color component of the current block,

- массив predSamples размером (nCurrSw) x (nCurrSh), специфицирующий прогнозируемые отсчеты для текущего блока,- an array of predSamples of size (nCurrSw) x (nCurrSh), specifying the predicted samples for the current block,

- массив resSamples размером (nCurrSw) x (nCurrSh), специфицирующий отсчеты остатка для для текущего блока.- resSamples array of size (nCurrSw) x (nCurrSh), specifying the remainder samples for the current block.

Выходными данными этой процедуры являются массив recSamples реконструированных отсчетов и массивы ibcBufL, ibcBufCb, ibcBufCr в буфере режима с копированием IBC.The output of this procedure is the recSamples array of reconstructed samples and the ibcBuf L , ibcBuf Cb , ibcBuf Cr arrays in the IBC copy mode buffer.

В зависимости от значения cIdx для цветовой составляющей, делают следующие назначения:Depending on the cIdx value for the color component, the following assignments are made:

- Если параметр cIdx равен 0, массив recSamples соответствует массиву SL реконструированных отсчетов изображения и функция clipCidx1 соответствует Clip1Y.- If cIdx is 0, the recSamples array corresponds to the S L array of reconstructed image samples and the function clipCidx1 corresponds to Clip1 Y .

- В противном случае, если параметр cIdx равен 1, параметр tuCbfChroma устанавливают равным tu_cbf_cb[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCb реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise, if the cIdx parameter is equal to 1, the tuCbfChroma parameter is set to tu_cbf_cb[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cb array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

- В противном случае (параметр cIdx равен 2), параметр tuCbfChroma устанавливают равным tu_cbf_cr[ xCurr ][ yCurr ], массив recSamples соответствует массиву SCr реконструированных отсчетов цветностной составляющей и функция clipCidx1 соответствует Clip1C.- Otherwise (parameter cIdx is equal to 2), the parameter tuCbfChroma is set equal to tu_cbf_cr[ xCurr ][ yCurr ], the recSamples array corresponds to the S Cr array of reconstructed chrominance samples, and the function clipCidx1 corresponds to Clip1 C .

В зависимости от значения флага slice_lmcs_enabled_flag, применяется следующее:Depending on the value of the slice_lmcs_enabled_flag, the following applies:

- Если флаг slice_lmcs_enabled_flag равен 0, блок recSamples реконструированных отсчетов размером (nCurrSw)x(nCurrSh) в позиции ( xCurr, yCurr ) определяют следующим образом - If the slice_lmcs_enabled_flag is 0, a recSamples block of reconstructed samples of size (nCurrSw)x(nCurrSh) at position ( xCurr, yCurr ) is defined as follows

для i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:for i = 0..nCurrSw − 1, j = 0..nCurrSh − 1:

recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)recSamples[ xCurr + i ][ yCurr + j ] = clipCidx1( predSamples[ i ][ j ] + resSamples[ i ][ j ] ) (8-992)

- В противном случае (флаг slice_lmcs_enabled_flag равен 1), применяется следующее:- Otherwise (slice_lmcs_enabled_flag is 1), the following applies:

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

- Процедуру реконструкции изображения с отображением отсчетов яркостной составляющей, как это специфицировано в статье 8.7.5.2, привлекают в позиции ( xCurr, yCurr ) яркостной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока, массив predSamples прогнозируемых отсчетов яркостной составляющей и массив resSamples отсчетов остатка яркостной составляющей, а выходными данными является массив resSamples реконструированных отсчетов яркостной составляющей.- The procedure for image reconstruction with display of luminance component samples, as specified in article 8.7.5.2, is attracted to the position ( xCurr, yCurr ) of the luminance component, the input data is the width nCurrSw and height nCurrSh of the block, the predSamples array of predicted luminance component samples and the resSamples array of samples the remainder of the brightness component, and the output data is an array of resSamples of reconstructed samples of the brightness component.

- В противном случае (параметр cIdx больше 0), процедуру реконструкции изображения с процедурой зависящего от яркостной составляющей масштабирования остатка цветностной составляющей применительно к отсчетам цветностной составляющей, как это специфицировано в статье 8.7.5.3, привлекают в позиции ( xCurr, yCurr ) цветностной составляющей, входными данными являются ширина nCurrSw и высота nCurrSh блока преобразования, флаг кодированного блока для текущего блока tuCbfChroma преобразования цветностной составляющей, массив predSamples прогнозируемых отсчетов цветностной составляющей и массив resSamples отсчетов остатка цветностной составляющей, а выходными данными является массив recSamples реконструированных отсчетов цветностной составляющей.- Otherwise (parameter cIdx greater than 0), the image reconstruction procedure with the luminance component-dependent scaling procedure of the chrominance component residual in relation to the chrominance component samples, as specified in clause 8.7.5.3, is involved in the position ( xCurr, yCurr ) of the chrominance component, the input data is the width nCurrSw and the height nCurrSh of the transformation block, the coded block flag for the current chrominance component transformation block tuCbfChroma, the predSamples array of predicted chrominance component samples and the resSamples array of samples of the remainder of the chrominance component, and the output data is the recSamples array of reconstructed chrominance component samples.

После декодирования текущей единицы кодирования может применяться следующее:After decoding the current encoding unit, the following may apply:

Если cIdx равно 0, и если treeType равно SINGLE_TREE или DUAL_TREE_LUMA, применяется следующееIf cIdx is 0, and if treeType is SINGLE_TREE or DUAL_TREE_LUMA, the following applies

ibcBufL[ ( xCurr + i ) % wIbcBufY ][ ( yCurr + j ) % CtbSizeY ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf L [ ( xCurr + i ) % wIbcBufY ][ ( yCurr + j ) % CtbSizeY ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

Если cIdx равно 1, и если treeType равно SINGLE_TREE или DUAL_TREE_CHROMA, применяется следующееIf cIdx is 1, and if treeType is SINGLE_TREE or DUAL_TREE_CHROMA, the following applies

ibcBufCb[ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf Cb [ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

Если cIdx равно 2, и если treeType равно SINGLE_TREE или DUAL_TREE_CHROMA, применяется следующееIf cIdx is 2, and if treeType is SINGLE_TREE or DUAL_TREE_CHROMA, the following applies

ibcBufCr[ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ] ibcBuf Cr [ ( xCurr + i ) % wIbcBufC ][ ( yCurr + j ) % CtbSizeC ] = recSamples[ xCurr + i ][ yCurr + j ]

для i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.for i = 0..nCurrSw − 1, j = 0..nCurrSh – 1.

На фиг. 6 представлена логическая схема примера способа 600 обработки сигналов визуальных медиаданных (видео или изображения). Способ 600 содержит определение (602), для преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных, размера буфера для сохранения опорных отсчетов для этого текущего видеоблока с использованием режима кодирования с внутрикадровым копированием блока, и осуществление (604) преобразования с использованием опорных отсчетов, сохраняемых в буфере.In fig. 6 is a logic diagram of an example method 600 for processing visual media (video or image) signals. Method 600 comprises determining (602) to convert between a current video block and a data bit stream representation of that current video block, the size of a buffer for storing reference samples for that current video block using an intra-block copy encoding mode, and performing (604) the conversion with using reference samples stored in a buffer.

Следующие статьи описывают некоторые примеры предпочтительных признаков, реализуемых вариантами способа 600 и другими способами. Дополнительные примеры приведены в Разделе 4 настоящего документа. The following articles describe some examples of preferred features implemented by variants of method 600 and other methods. Additional examples are provided in Section 4 of this document.

1. Способ обработки видео, содержащий: определение, для преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных, размера буфера для сохранения опорных отсчетов текущего видеоблока с использованием режима кодирования с внутрикадровым копированием блока; и осуществление преобразования с использованием опорных отсчетов, сохраняемых в буфере.1. A video processing method, comprising: determining, for conversion between a current video block and a representation of that current video block as a stream of data bits, the size of a buffer for storing reference samples of the current video block using an intra-frame block copy encoding mode; and performing the conversion using the reference samples stored in the buffer.

2. Способ по статье 1, отличающийся тем, что размер буфера имеет заданное постоянное значение. 2. The method according to article 1, characterized in that the buffer size has a given constant value.

3. Способ по какой-либо из статей 1 – 2, отличающийся тем, что указанный размер равен MxN, где M и N являются целыми числами. 3. The method according to any of articles 1 – 2, characterized in that the specified size is MxN, where M and N are integers.

4. Способ по статье 3, отличающийся тем, что MxN равно 64x64 или 128x128 или 64x128.4. The method according to Article 3, characterized in that MxN is 64x64 or 128x128 or 64x128.

5. Способ по статье 1, отличающийся тем, что размер буфера равен размеру единицы дерева кодирования для текущего видеоблока. 5. The method according to article 1, characterized in that the buffer size is equal to the size of the coding tree unit for the current video block.

6. Способ по статье 1, отличающийся тем, что размер буфера равен размеру единицы данных виртуального конвейера, используемой во время преобразования. 6. The method according to article 1, characterized in that the buffer size is equal to the size of the virtual pipeline data unit used during the conversion.

7. Способ по статье 1, отличающийся тем, что размер буфера соответствует полю в представлении в виде потока битов данных. 7. The method according to article 1, characterized in that the size of the buffer corresponds to the field in the form of a stream of data bits.

8. Способ по статье 7, отличающийся тем, что это поле входит в представление в виде потока битов данных в наборе параметров видео или в наборе параметров последовательности или в наборе параметров изображения или в заголовке изображения или в заголовке среза или на уровне заголовка группы плиток. 8. The method of Clause 7, wherein the field is included in a data bit stream representation in a video parameter set or in a sequence parameter set or in an image parameter set or in an image header or in a slice header or at the tile group header level.

9. Способ по какой-либо из статей 1 – 8, отличающийся тем, что размер буфера различен для опорных отсчетов яркостной составляющей с одной стороны и опорных отсчетов цветностных составляющих с другой стороны. 9. A method according to any of articles 1 - 8, characterized in that the buffer size is different for the reference samples of the luminance component on the one hand and the reference samples of the chrominance components on the other hand.

10. Способ по какой-либо из статей 1 – 8, отличающийся тем, что размер буфера зависит от формата субдискретизации цветностной составляющей для текущего видеоблока. 10. A method according to any of articles 1 – 8, characterized in that the buffer size depends on the color component subsampling format for the current video block.

11. Способ по какой-либо из статей 1 – 8, отличающийся тем, что опорные отсчеты сохраняют в формате RGB. 11. The method according to any of articles 1 - 8, characterized in that the reference samples are saved in RGB format.

12. Способ по какой-либо из статей 1 – 11, отличающийся тем, что указанный буфер используется для сохранения реконструированных отсчетов прежде контурной фильтрации и после контурной фильтрации. 12. A method according to any of articles 1 - 11, characterized in that the specified buffer is used to save reconstructed samples before and after contour filtering.

13. Способ по статье 12, отличающийся тем, что контурная фильтрация представляет собой деблокирующую фильтрацию или адаптивную контурную фильтрацию (ALF) или нелинейную фильтрацию с адаптивным смещением (SAO). 13. The method of Clause 12, wherein the loop filtering is deblocking filtering or adaptive loop filtering (ALF) or nonlinear adaptive offset filtering (SAO).

14. Способ обработки видео, содержащий: инициализацию, для преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных, буфера для сохранения опорных отсчетов для текущего видеоблока с использованием режима кодирования с внутрикадровым копированием блока, применяющего первоначальные (инициализированные) значения для опорных отсчетов; и осуществление преобразования с использованием опорных отсчетов, сохраняемых в буфере.14. A video processing method comprising: initialization to convert between a current video block and a representation of that current video block as a stream of data bits, a buffer to store reference samples for the current video block using an intra-frame block copy encoding mode applying initial (initialized) values for reference readings; and performing the conversion using the reference samples stored in the buffer.

15. Способ по статье 14, отличающийся тем, что указанные первоначальные значения соответствуют некоторой константе. 15. The method according to Article 14, characterized in that the specified initial values correspond to a certain constant.

16. Способ по какой-либо из статей 14 – 15, отличающийся тем, что указанные первоначальные значения являются функцией битовой глубины текущего видеоблока.16. The method according to any of articles 14 - 15, characterized in that the specified initial values are a function of the bit depth of the current video block.

17. Способ по статье 15, отличающийся тем, что указанная константа соответствует среднему уровню серого. 17. The method according to Article 15, characterized in that the specified constant corresponds to the average gray level.

18. Способ по статье 14, отличающийся тем, что указанные первоначальные (инициализирующие) значения соответствуют значениям пикселей предыдущего декодированного видеоблока. 18. The method according to Article 14, characterized in that the specified initial (initializing) values correspond to the pixel values of the previous decoded video block.

19. Способ по статье 18, отличающийся тем, что указанный предшествующий декодированный видеоблок соответствует декодированного блоку прежде внутриконтурной фильтрации. 19. The method according to article 18, characterized in that the specified previous decoded video block corresponds to the decoded block before the in-loop filtering.

20. Способ по какой-либо из статей 14 – 19, отличающийся тем, что буфер имеет такой размер, как это указано в одной из статей 1 – 13. 20. A method according to any of Articles 14 - 19, characterized in that the buffer has the size as specified in one of Articles 1 - 13.

21. Способ по какой-либо из статей 1 – 20, отличающийся тем, что к позициям пикселей в буфере адресуются с использованием чисел x и y. 21. The method according to any of articles 1 - 20, characterized in that the pixel positions in the buffer are addressed using numbers x and y.

22. Способ по какой-либо из статей 1 – 20, отличающийся тем, что к позициям пикселей в буфере адресуются с использованием одного числа, находящегося в интервале от 0 до M*N-1, где M и N обозначают выраженные в пикселях ширину и высоту буфера. 22. A method according to any of Articles 1 to 20, characterized in that the pixel positions in the buffer are addressed using a single number ranging from 0 to M*N-1, where M and N denote the width expressed in pixels and buffer height.

23. Способ по какой-либо из статей 1 – 20, отличающийся тем, что текущее представление в виде потока битов данных содержит блочный вектор для преобразования, где блочный вектор, обозначенный как (BVx,BVy), равен (x-x0,y-y0), где (x0, y0) соответствует верхней-левой позиции единицы дерева кодирования текущего видеоблока. 23. The method according to any of articles 1 to 20, characterized in that the current representation in the form of a stream of data bits contains a block vector for transformation, where the block vector, denoted as (BVx,BVy), is equal to (x-x0,y- y0), where (x0, y0) corresponds to the top-left position of the coding tree unit of the current video block.

24. Способ по какой-либо из статей 1 – 20, отличающийся тем, что, текущее представление в виде потока битов данных содержит блочный вектор для преобразования, где этот блочный вектор, обозначенный как (BVx,BVy), равен (x-x0+Tx,y-y0+Ty), где (x0, y0) соответствует верхней-левой позиции единицы дерева кодирования текущего видеоблока, и где Tx и Ty являются значениями сдвига. 24. The method according to any of articles 1 - 20, characterized in that the current representation in the form of a stream of data bits contains a block vector for transformation, where this block vector, denoted as (BVx,BVy), is equal to (x-x0+ Tx,y-y0+Ty), where (x0, y0) corresponds to the top-left unit position of the coding tree of the current video block, and where Tx and Ty are the offset values.

25. Способ по статье 24, отличающийся тем, что Tx и Ty являются предварительно заданными значениями сдвига. 25. The method according to article 24, characterized in that Tx and Ty are predetermined shift values.

26. Способ по какой-либо из статей 1 – 20, отличающийся тем, что в процессе преобразования, для пикселя, находящегося в позиции (x0, y0) и имеющего блочный вектор (BVx, BVy), соответствующая опора в буфере, располагается в опорной позиции (x0+BVx, y0+BVy). 26. A method according to any of articles 1 – 20, characterized in that during the transformation process, for a pixel located at position (x0, y0) and having a block vector (BVx, BVy), the corresponding support in the buffer is located in the reference positions (x0+BVx, y0+BVy).

27. Способ по статье 26, отличающийся тем, что в случае, когда опорная позиция находится вне буфера, опору в буфере определяют путем усечения по границе буфера. 27. The method according to Article 26, characterized in that in the case where the reference position is outside the buffer, the support in the buffer is determined by truncation along the boundary of the buffer.

28. Способ по статье 26, отличающийся тем, что в случае, когда опорная позиция находится вне буфера, опору в буфере определяют, как имеющую заданное значение. 28. The method according to Article 26, characterized in that in the case where the reference position is outside the buffer, the support in the buffer is determined to have a given value.

29. Способ по какой-либо из статей 1 – 20, отличающийся тем, что в процессе преобразования, для пикселя, находящегося в позиции (x0, y0) и имеющего блочный вектор (BVx, BVy), соответствующая опора в буфере располагается в опорной позиции ((x0+BVx) mod M, (y0+BVy) mod N), где “mod” обозначает операцию взятия по модулю, и M и N являются целыми числами, представляющими размеры x и y буфера. 29. A method according to any of articles 1 – 20, characterized in that during the transformation process, for a pixel located at position (x0, y0) and having a block vector (BVx, BVy), the corresponding support in the buffer is located at the reference position ((x0+BVx) mod M, (y0+BVy) mod N), where “mod” denotes the modulo operation, and M and N are integers representing the x and y sizes of the buffer.

30. Способ обработки видео, содержащий: начальную установку (сброс), в процессе преобразования между видео и представлением текущего видеоблока в виде потока битов данных, буфера, сохраняющего опорные отсчеты для кодирования в режиме с внутрикадровым копированием блоков на границе видео; и осуществление преобразования с использованием опорных отсчетов, сохраняемых в буфере.30. A method of video processing, comprising: an initial setting (reset), in the process of conversion between video and a representation of the current video block in the form of a stream of data bits, a buffer storing reference samples for encoding in a mode with intra-frame copying of blocks at the video boundary; and performing the conversion using the reference samples stored in the buffer.

31. Способ по статье 30, отличающийся тем, что граница видео соответствует новому изображению или новой плитке.31. The method according to Article 30, characterized in that the video border corresponds to a new image or a new tile.

32. Способ по статье 30, отличающийся тем, что преобразование осуществляется посредством обновления, после сброса, буфера с использованием реконструированных значений из единицы данных виртуального конвейера (VPDU).32. The method of Clause 30, wherein the conversion is performed by updating, after a reset, the buffer using the reconstructed values from the Virtual Pipeline Data Unit (VPDU).

33. Способ по статье 30, отличающийся тем, что преобразование осуществляется посредством обновления, после сброса, буфера с использованием реконструированных значений из единицы дерева кодирования. 33. The method according to Article 30, characterized in that the transformation is carried out by updating, after resetting, the buffer using the reconstructed values from the coding tree unit.

34. Способ по статье 30, отличающийся тем, что сброс осуществляется в начале каждой строки единиц дерева кодирования. 34. The method according to Article 30, characterized in that the reset is carried out at the beginning of each line of units in the coding tree.

35. Способ по статье 1, отличающийся тем, что размер буфера соответствует L ранее декодированным блокам размером 64x64 каждый, где L – целое число.35. The method according to Article 1, characterized in that the buffer size corresponds to L previously decoded blocks of size 64x64 each, where L is an integer.

36. Способ по какой-либо из статей 1 – 35, отличающийся тем, что вертикальный порядок сканирования используется для считывания или сохранения отсчетов в буфере в процессе преобразования. 36. A method according to any of articles 1 to 35, characterized in that the vertical scanning order is used to read or store samples in a buffer during the conversion process.

37. Способ обработки видео, содержащий: использование, для преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных, буфера для сохранения опорных отсчетов для текущего видеоблока с использованием режима кодирования с внутрикадровым копированием блока, где первая битовая глубина отличается от второй битовой глубины кодированных данных; и осуществление преобразования с использованием опорных отсчетов, сохраняемых в буфере.37. A method of processing video, comprising: using, to convert between a current video block and a representation of that current video block as a stream of data bits, a buffer for storing reference samples for the current video block using an intra-block copy encoding mode where the first bit depth is different from the second bit depth of encoded data; and performing the conversion using the reference samples stored in the buffer.

38. Способ по статье 37, отличающийся тем, что первая битовая глубина больше второй битовой глубины. 38. The method according to Article 37, characterized in that the first bit depth is greater than the second bit depth.

39. Способ по какой-либо из статей 37 – 38, отличающийся тем, что первая битовая глубина идентична битовой глубине буфера реконструированных данных, используемого в процессе преобразования. 39. The method according to any of Articles 37 - 38, characterized in that the first bit depth is identical to the bit depth of the reconstructed data buffer used in the conversion process.

40. Способ по какой-либо из статей 37 – 39, отличающийся тем, что первую битовую глубину сообщают в виде сигнализации в представлении в виде потока битов данных как некое значение или как разностное значение. 40. A method according to any one of clauses 37 to 39, characterized in that the first bit depth is signaled in a data bit stream representation as a value or as a difference value.

41. Способ по какой-либо из статей 37 – 40, отличающийся тем, что указанное преобразование использует разные битовые глубины для цветностной составляющей и для яркостной составляющей. 41. A method according to any of Articles 37 – 40, characterized in that the specified conversion uses different bit depths for the chrominance component and for the luminance component.

Дополнительные варианты и примеры статей 37 – 41 описаны в Пункте 7 в Разделе 4. Additional variations and examples of Articles 37 to 41 are described in Item 7 in Section 4.

42. Способ обработки видео, содержащий: осуществление преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных с использованием режима внутрикадрового копирования, в котором первая точность, используемая при вычислениях прогнозируемых данных в процессе преобразования ниже второй точности, используемой при вычислениях реконструированных данных в процессе преобразования. 42. A method of video processing, comprising: performing a transformation between a current video block and a representation of that current video block as a stream of data bits using an intra-frame copy mode, in which the first precision used in computing the predicted data in the conversion process is lower than the second precision used in computing the reconstructed data in the process of transformation.

43. Способ по статье 43, отличающийся тем, что вычисления прогнозируемых данных содержат определение значения прогнозируемого отсчета на основе значения реконструированного отсчета с использованием функции clip{{p+[1<<(b-1)]}>>b,0,(1<<bitdepth)-1}<<b, где p – значение реконструированного отсчета, b – заданное значение сдвига битов, а bitdepth – точность прогнозируемого отсчета. 43. The method according to Article 43, characterized in that the calculations of the predicted data include determining the value of the predicted sample based on the value of the reconstructed sample using the function clip{{p+[1<<(b-1)}>>b,0,(1 <<bitdepth)-1}<<b, where p is the value of the reconstructed sample, b is the specified bit shift value, and bitdepth is the accuracy of the predicted sample.

Дополнительные варианты и примеры статей 42 – 43 описаны в Пункте 28 в Разделе 4.Additional variations and examples of Articles 42 – 43 are described in Item 28 in Section 4.

44. Способ обработки видео, содержащий: осуществление преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных с использованием режима внутрикадрового копирования, в котором опорная область размером nM x nM используется для единицы дерева кодирования размером MxM, где n и M обозначают целые числа, и где текущий видеоблок располагается в единице дерева кодирования, и где опорная область является ближайшей доступной единицей дерева кодирования размером nxn в строке единиц дерева кодирования, соответствующей текущему видеоблоку. 44. A video processing method comprising: performing a conversion between a current video block and a representation of that current video block as a stream of data bits using an intra-frame copy mode in which a reference region of size nM x nM is used for a coding tree unit of size MxM, where n and M denote integers, and where the current video block is located in a coding tree unit, and where the reference region is the nearest available nxn coding tree unit in the row of coding tree units corresponding to the current video block.

Дополнительные варианты и примеры статьи 4 описаны в Пункте 35 в Разделе 4.Additional variations and examples of Article 4 are described in Item 35 in Section 4.

45. Способ обработки видео, содержащий: осуществление преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных с использованием режима внутрикадрового копирования, в котором опорная область размером nM x nM используется для единицы дерева кодирования с размером, отличным от размера MxM, где n и M обозначают целые числа, и где текущий видеоблок располагается в единице дерева кодирования, и где опорная область является ближайшей доступной единицей дерева кодирования размером nxn-1 в строке единиц дерева кодирования, соответствующей текущему видеоблоку.45. A video processing method comprising: performing a conversion between a current video block and a representation of that current video block as a stream of data bits using an intra-frame copy mode in which a reference region of size nM x nM is used for a coding tree unit of size other than MxM size, where n and M denote integers, and where the current video block is located in a coding tree unit, and where the reference region is the nearest available coding tree unit of size nxn-1 in the row of coding tree units corresponding to the current video block.

Дополнительные варианты и примеры статьи 4 описаны в Пункте 36 в Разделе 4. На фиг. 8 и 9 показаны дополнительные примеры вариантов. Additional variations and examples of Clause 4 are described in Clause 36 in Section 4. FIG. 8 and 9 show additional examples of options.

46. Способ по п. 3, отличающийся тем, что M=mW и N=H, где W и H представляют ширину и высоту единицы дерева кодирования (CTU) текущего видеоблока, и m – положительное целое число. 46. The method of claim 3, wherein M=mW and N=H, where W and H represent the width and height of a coding tree unit (CTU) of the current video block, and m is a positive integer.

47. Способ по п. 3, отличающийся тем, что M=W и N=nH, где W и H представляют ширину и высоту единицы дерева кодирования (CTU), и n – положительное целое число.47. The method of claim 3, wherein M=W and N=nH, where W and H represent the width and height of a coding tree unit (CTU), and n is a positive integer.

48. Способ по п. 3, отличающийся тем, что M=mW и N=nH, где W и H представляют ширину и высоту единицы дерева кодирования (CTU), m и n – положительные целые числа.48. The method according to claim 3, characterized in that M=mW and N=nH, where W and H represent the width and height of a coding tree unit (CTU), m and n are positive integers.

49. Способ по какому-либо из п. 46 – 48, отличающийся тем, что n и m зависят от CTU.49. Method according to any of paragraphs 46 – 48, characterized in that n and m depend on CTU.

50. Способ обработки видео, содержащий: определение, для преобразования между текущим видеоблоком видеоролика и представлением этого текущего видеоблока в виде потока битов данных, действительности блочного вектора, соответствующего текущему видеоблоку составляющей c видео с использованием составляющей X этого видео, где составляющая X отличается от яркостной составляющей видео; и осуществление преобразования с использованием блочного вектора после определения, что блочный вектор является действительным для текущего видеоблока. Здесь блочный вектор, обозначенный как (BVx,BVy), равен (x-x0,y-y0), где (x0, y0) соответствует верхней-левой позиции в единице дерева кодирования текущего видеоблока.50. A video processing method, comprising: determining, for transforming between a current video block of a video and a data bit stream representation of that current video block, the validity of a block vector corresponding to the current video block of a video component c using an X component of that video, where the X component is different from the luminance component video component; and performing a transformation using the block vector after determining that the block vector is valid for the current video block. Here, the block vector denoted as (BVx,BVy) is equal to (x-x0,y-y0), where (x0, y0) corresponds to the top-left position in the coding tree unit of the current video block.

51. Способ по статье 50, отличающийся тем, что составляющая c соответствует яркостной составляющей рассматриваемого видео.51. The method according to Article 50, characterized in that the c component corresponds to the brightness component of the video in question.

52. Способ по статье 50, отличающийся тем, что текущий видеоблок является блоком цветностной составляющей, и видео имеет формат 4:4:4. 52. The method according to Article 50, characterized in that the current video block is a chroma component block, and the video has a 4:4:4 format.

53. Способ по статье 50, отличающийся тем, что видео имеет формат 4:2:0 и тем, что текущий видеоблок является блоком цветностной составляющей, начиная с позиции (x, y), и тем, что процедура определения содержит определение, что блочный вектор является недействительным для случая, в котором isRec(c, ((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) является истинной. 53. The method according to Article 50, characterized in that the video has a 4:2:0 format and in that the current video block is a block of the chrominance component, starting at position (x, y), and in that the determination procedure contains a determination that the block the vector is invalid for the case in which isRec(c, ((x+BVx)>>5<<5)+64-(((y+BVy)>>5)&1)*32+(x%32), ((y+BVy)>>5<<5) +(y%32)) is true.

54. Способ по статье 50, отличающийся тем, что видео имеет формат 4:2:0, и что текущий видеоблок является блоком цветностной составляющей, начинающимся с позиции (x, y), и что процедура определения содержит определение, что блочный вектор является недействительным для случая, в котором isRec(c, x+BVx+Chroma_CTU_size, y) является истинной.54. The method of Article 50, characterized in that the video is in 4:2:0 format, and that the current video block is a chrominance block starting at position (x, y), and that the determination procedure includes a determination that the block vector is invalid for the case in which isRec(c, x+BVx+Chroma_CTU_size, y) is true.

55. Способ обработки видео, содержащий: определение, избирательно для преобразования между текущим видеоблоком текущей единицы данных виртуального конвейера (VPDU) видеообласти и представлением этого текущего видеоблока в виде потока битов данных, что следует использовать K1 предварительно обработанных единиц VPDU из первой строки видеообласти и K2 предварительно обработанных единиц VPDU из второй строки видеообласти; и осуществление преобразования, где это преобразование исключает использование остальной части текущей единицы VPDU.55. A method of video processing, comprising: determining, selectively for conversion between a current video block of a current virtual pipeline data unit (VPDU) of a video area and a representation of that current video block as a stream of data bits, that K1 pre-processed VPDUs from the first row of the video area and K2 should be used pre-processed VPDUs from the second line of the video area; and performing a transformation, where the transformation eliminates the use of the rest of the current VPDU.

56. Способ по статье 55, отличающийся тем, что K1 = 1 и K2 = 2. 56. Method according to Article 55, characterized in that K1 = 1 and K2 = 2.

57. Способ по какой-либо из статей 55 – 56, отличающийся тем, что текущий видеоблок избирательно обрабатывают на основе размера видеообласти или размера текущей единицы VPDU. 57. The method as set forth in any one of Clauses 55 to 56, wherein the current video block is selectively processed based on the size of the video area or the size of the current VPDU.

58. Способ обработки видео, содержащий: осуществление проверки действительности блочного вектора для преобразования между текущим видеоблоком и представлением этого текущего видеоблока в виде потока битов данных, где этот блочный вектор используется для режима с внутрикадровым копированием блоков; и использование результата проверки действительности для избирательного применения этого блочного вектора в процессе преобразования. 58. A method for processing video, comprising: performing a block vector validity check for conversion between a current video block and a data bitstream representation of that current video block, where the block vector is used for intra-block copy mode; and using the result of the validity check to selectively apply this block vector in the transformation process.

59. Способ по статье 58, отличающийся тем, что в процессе преобразования используется буфер для режима внутрикадрового копирования блоков (IBC), где ширина и высота буфера для режима с копированием IBC равны Wbuf и Hbuf, размеры текущего видеоблока равны WxH и где блочный вектор представлен как (BVx, BVy), и где текущий видеоблок находится в текущем изображении, имеющем размеры Wpic и Hpic, и в единице дерева кодирования, имеющей Wctu и Hctu в качестве ширины и высоты, и где проверка действительности использует предварительно заданное правило. 59. The method according to Article 58, characterized in that the conversion process uses a buffer for the intra-block copy mode (IBC), where the width and height of the buffer for the IBC copy mode are equal to Wbuf and Hbuf, the dimensions of the current video block are equal to WxH and where the block vector is represented by as (BVx, BVy), and where the current video block is in the current image having dimensions Wpic and Hpic, and in the coding tree unit having Wctu and Hctu as width and height, and where the validity check uses a predefined rule.

60. Способ по какой-либо из статей 58 – 59, отличающийся тем, что текущий видеоблок представляет собой блок яркостной составляющей, блок цветностной составляющей, единицу кодирования (CU), единицу преобразования (TU), блок размером 4x4, блок размером 2x2 или субблок материнского блока, начиная от пикселя с координатами (X, Y). 60. A method according to any of Articles 58 - 59, characterized in that the current video block is a luma block, a chrominance block, a coding unit (CU), a transform unit (TU), a 4x4 block, a 2x2 block or a subblock mother block, starting from the pixel with coordinates (X, Y).

61. Способ по какой-либо из статей 58 – 60, отличающийся тем, что при проверке действительности рассматривают блочный вектор, попадающий за пределы границ текущего изображения, как действительный. 61. A method according to any of Articles 58 – 60, characterized in that when checking validity, a block vector falling outside the boundaries of the current image is considered as valid.

62. Способ по какой-либо из статей 58 – 60, отличающийся тем, что при проверке действительности рассматривают блочный вектор, попадающий за пределы границ единицы дерева кодирования, как действительный. 62. A method according to any of Articles 58 – 60, characterized in that when checking validity, a block vector falling outside the boundaries of a coding tree unit is considered as valid.

Пункты 23 – 30 в предшествующем разделе предлагает дополнительные примеры и вариации приведенных выше статей 58 – 62.Paragraphs 23 – 30 in the previous section offer additional examples and variations of clauses 58 – 62 above.

63. Способ по какой-либо из статей 1 – 62, отличающийся тем, что процедура преобразования содержит генерацию представления в виде потока битов данных из текущего видеоблока.63. The method according to any of Articles 1 – 62, characterized in that the conversion procedure contains the generation of a representation in the form of a stream of data bits from the current video block.

64. Способ по какой-либо из статей 1 – 62, отличающийся тем, что процедура преобразования содержит генерацию значений пикселей текущего видеоблока на основе его представления в виде потока битов данных. 64. The method according to any of Articles 1 – 62, characterized in that the conversion procedure contains the generation of pixel values of the current video block based on its representation as a stream of data bits.

65. Кодирующее устройство для видео, содержащее процессор, конфигурированный для реализации способа, приведенного в какую-либо одну или несколько статей 1 – 62. 65. A video encoder comprising a processor configured to implement the method set forth in any one or more of Clauses 1 through 62.

66. Декодирующее устройство для видео, содержащее процессор, конфигурированный для реализации способа, приведенного в какой-либо одной или несколько статей 1 – 62.66. A video decoding device comprising a processor configured to implement the method set forth in any one or more of Clauses 1 through 62.

67. Читаемый компьютером носитель, имеющий записанный на нем код, этот код содержит выполняемые компьютером команды для реализации способа, приведенного в какой-либо одной или несколько статей 1 – 62.67. A computer-readable medium having code written on it, this code containing computer-executable commands to implement the method described in any one or more Articles 1 to 62.

На фиг. 7 представлена блок-схема аппаратной платформы устройства 700 для обработки видео/изображения. Устройство 700 может быть использовано для реализации одного или нескольких описываемых здесь способов. Устройство 700 может быть встроено в смартфон, планшет, компьютер, приемник Интернета вещей (Internet of Things (IoT)) и т.д. Устройство 700 может содержать один или несколько процессоров 702, одно или несколько запоминающих устройств 704 и аппаратуру 706 для обработки видео. Процессор (ы) 702 может быть конфигурирован для осуществления одного или нескольких способов (включая, но не ограничиваясь, способ 600), описываемых в настоящем документе. Запоминающее устройство (а) 704 может быть использовано для хранения данных и кода, применяемых для реализации способов и технологий, описываемых здесь. Аппаратура 706 для обработки видео может быть использовано для осуществления, в схемном аппаратном варианте, некоторых способов, описываемых в настоящем документе.In fig. 7 is a block diagram of the hardware platform of the video/image processing device 700. Apparatus 700 may be used to implement one or more of the methods described herein. The device 700 may be embedded in a smartphone, tablet, computer, Internet of Things (IoT) receiver, etc. Device 700 may include one or more processors 702, one or more storage devices 704, and video processing hardware 706. Processor(s) 702 may be configured to implement one or more methods (including, but not limited to, method 600) described herein. Storage device(s) 704 may be used to store data and code used to implement the methods and technologies described herein. Video processing hardware 706 may be used to implement, in circuit hardware form, some of the methods described herein.

Представление в виде потока битов данных, соответствующее текущему видеоблоку, не обязательно должно быть в виде множества соседствующих битов, а может быть распределено по заголовкам, наборам параметров и пакетам сетевого уровня абстракции (NAL). The bit stream representation of the data corresponding to the current video block does not need to be a set of adjacent bits, but may be distributed across headers, parameter sets, and Network Abstraction Layer (NAL) packets.

Раздел A: Другие дополнительные примеры вариантов Section A: Other Additional Example Options

В Разделе A, мы представляем другой пример варианта, в котором сегодняшняя версия стандарта кодирования VVC может быть модифицирована для реализации некоторых технологий, описываемых в настоящем документе. In Section A, we present another example of an option in which the current version of the VVC coding standard could be modified to implement some of the technologies described in this document.

Этот раздел анализирует ряд проблем в сегодняшней конфигурации буфера для опорных данных в режиме с копированием IBC и предлагает другой вариант конфигурации для решения этих проблем. Здесь предлагается независимый буфер для опорных данных в режиме с копированием IBC вместо «смешивания» такого буфера с запоминающим устройством для декодирования. По сравнению с сегодняшним базовым вариантом, предлагаемая схема дает показатели -0.99%/-0.71%/-0.79% AI/RA/LD-B яркостная составляющая BD-скорость для класса F и -2.57%/-1.81%/-1.36% для 4:2:0 TGM, при уменьшении объема памяти на 6.7%; или -1.31%/-1.01%/-0.81% для класса F и -3.23%/-2.33%/-1.71% для 4:2:0 TGM при увеличении объема памяти на 6.7%.This section analyzes a number of problems in today's IBC copy-mode reference data buffer configuration and proposes another configuration option to address these problems. This proposes an independent buffer for the reference data in IBC copy mode instead of "mixing" such a buffer with storage for decoding. Compared to today's baseline, the proposed design achieves -0.99%/-0.71%/-0.79% AI/RA/LD-B luminance component BD-rate for class F and -2.57%/-1.81%/-1.36% for 4:2:0 TGM, with 6.7% memory reduction; or -1.31%/-1.01%/-0.81% for class F and -3.23%/-2.33%/-1.71% for 4:2:0 TGM with a 6.7% increase in memory capacity.

A1. ВведениеA1. Introduction

Принят режим кодирования с внутрикадровым копированием блоков, т.е. режим IBC (или использование текущего изображения в качестве опоры, т.е. режим CPR ранее). Понятно, что опорные отсчеты для режима с копированием IBC следует сохранять в запоминающем устройстве на кристалле интегральной схемы, и что этот факт определяет лишь ограниченные размеры опорной области для одной единицы CTU. Для ограничения требований к дополнительному объему запоминающего устройства на кристалле сегодняшний вариант конфигурации повторно использует область памяти размером 64x64 для декодирования единиц VPDU, так что потребуются только 3 дополнительных области запоминающего устройства размером 64x64 для поддержки режима с копированием IBC. Когда размер единицы CTU равен 128x128, опорная область, используемая на сегодняшний момент, показана на фиг. 2.The encoding mode with intra-frame copying of blocks has been adopted, i.e. IBC mode (or using the current image as a reference, i.e. CPR mode earlier). It is clear that the reference samples for the IBC copy mode must be stored in the on-chip memory, and that this fact only limits the size of the reference area for a single CTU. To limit additional on-chip storage requirements, today's configuration reuses a 64x64 memory region to decode VPDUs, so that only 3 additional 64x64 storage regions are required to support IBC copy mode. When the CTU size is 128x128, the reference area currently used is shown in FIG. 2.

В сегодняшнем проекте (стандарт VVC проект 4) площадь определяют следующим образомIn today's project (VVC standard project 4), the area is determined as follows

– Следующие условия должны быть истинными:– The following conditions must be true: ( yCb + ( mvL[ 1 ] >> 4 ) ) >> CtbLog2SizeY = yCb >> CtbLog2SizeY( yCb + ( mvL[ 1 ] >> 4 ) ) >> CtbLog2SizeY = yCb >> CtbLog2SizeY (8-972)(8-972) ( yCb + ( mvL[ 1 ] >> 4 ) + cbHeight – 1) >> CtbLog2SizeY = yCb >> CtbLog2SizeY( yCb + ( mvL[ 1 ] >> 4 ) + cbHeight – 1) >> CtbLog2SizeY = yCb >> CtbLog2SizeY (8-973)(8-973) ( xCb + ( mvL[ 0 ] >> 4 ) ) >> CtbLog2SizeY >= ( xCb >> CtbLog2SizeY ) – 1( xCb + ( mvL[ 0 ] >> 4 ) ) >> CtbLog2SizeY >= ( xCb >> CtbLog2SizeY ) – 1 (8-974)(8-974) ( xCb + ( mvL[ 0 ] >> 4 ) + cbWidth – 1) >> CtbLog2SizeY <= ( xCb >> CtbLog2SizeY )( xCb + ( mvL[ 0 ] >> 4 ) + cbWidth – 1) >> CtbLog2SizeY <= ( xCb >> CtbLog2SizeY ) (8-975)(8-975) [Ред. (SL): условия (8-218) и (8-216) могли быть проверены по 6.4.X.][Ed. (SL): Conditions (8-218) and (8-216) could be checked under 6.4.X.] – Когда ( xCb + ( mvL[ 0 ] >> 4 ) ) >> CtbLog2SizeY равно ( xCb >> CtbLog2SizeY ) – 1, процедуру определения доступности блока, как это специфицировано в статье 6.4.X [Ред. (BB): Процедура проверки доступности соседних блоков еще должна быть сформулирована] привлекают, используя текущую позицию ( xCurr, yCurr ) яркостной составляющей, установленную равной ( xCb, yCb ), и соседнюю позицию яркостной составляющей ( ( ( xCb + ( mvL[ 0 ] >> 4 ) + CtbSizeY ) >> ( CtbLog2SizeY – 1 ) ) << ( CtbLog2SizeY – 1 ), ( ( yCb + ( mvL[ 1 ] >> 4 ) ) >> ( CtbLog2SizeY – 1 ) ) << ( CtbLog2SizeY – 1 ) ) в качестве входных данных, а результат на выходе должен быть равен «ложно» (FALSE).– When ( xCb + ( mvL[ 0 ] >> 4 ) ) >> CtbLog2SizeY equals ( xCb >> CtbLog2SizeY ) – 1, the block availability determination procedure as specified in clause 6.4.X [Ed. (BB): The procedure for checking the availability of neighboring blocks has yet to be formulated] are attracted using the current position ( xCurr, yCurr ) of the luminance component set to ( xCb, yCb ) and the neighboring position of the luminance component ( ( ( xCb + ( mvL[ 0 ] >> 4 ) + CtbSizeY ) >> ( CtbLog2SizeY – 1 ) ) << ( CtbLog2SizeY – 1 ), ( ( yCb + ( mvL[ 1 ] >> 4 ) ) >> ( CtbLog2SizeY – 1 ) ) << ( CtbLog2SizeY – 1 ) ) as input, and the output must be FALSE.

Таким образом, общий объем опорных данных равен одной единице CTU.Thus, the total volume of reference data is equal to one CTU.

A2. Потенциальные проблемы сегодняшней конфигурации A2. Potential problems with today's configuration

Сегодняшняя конфигурация предполагает повторное использование области запоминающего устройства объемом 64x64 для декодирования текущей единицы VPDU, и опорная область для режима с копированием IBC совмещена с областью повторного использования памяти единицей VPDU, соответственно. Такая конфигурация объединяет область памяти для декодирования единицы VPDU с буфером для режима с копированием IBC. Здесь могут быть ряд проблем:Today's configuration involves reusing a 64x64 memory area to decode the current VPDU, and the reference area for IBC copy mode is aligned with the memory reuse area of the VPDU, respectively. This configuration combines a memory area for decoding a VPDU unit with a buffer for IBC copy mode. There could be a number of problems here:

1. Работа с единицами CTU меньшего размера может быть проблемой. Предположим, что размер единицы CTU равен 32x32, тогда не ясно, сможет ли сегодняшняя структура памяти размером 64x64 для декодирования текущей единицы VPDU эффективно поддерживать повторное использование памяти на уровне 32x32 в других архитектурах.1. Dealing with smaller CTUs can be a challenge. Assuming the CTU size is 32x32, then it is not clear whether today's 64x64 memory design for decoding the current VPDU can effectively support 32x32 memory reuse in other architectures.

2. Опорная область варьируется значительно. Соответственно, вводится слишком много ограничений соответствия потоков битов данных. Эта создает дополнительную нагрузку на кодирующее устройство, чтобы оно могло эффективно использовать опорную область и избегать генерации легальных потоков битов данных. Это также увеличивает вероятность появления недействительных векторов BV в различных модулях, например, списке объединения. Для работы с недействительными векторами BV могут быть введены дополнительные логические схемы или дополнительные ограничения соответствия. Это не только вводит дополнительную нагрузку для кодирующего устройства или декодирующего устройства, это может также создать расхождение между кодированием векторов BV и кодированием векторов MV.2. The reference area varies significantly. Accordingly, too many restrictions on the correspondence of data bit streams are introduced. This places additional load on the encoder so that it can efficiently use the reference region and avoid generating legal data bit streams. This also increases the likelihood of invalid BVs appearing in various modules, such as the union list. Additional logic or additional matching constraints may be introduced to deal with invalid BV vectors. This not only introduces additional overhead for the encoder or decoder, it may also create a discrepancy between the encoding of the BV vectors and the encoding of the MV vectors.

3. Такую конфигурацию нельзя хорошо масштабировать. Поскольку декодирование единицы VPDU смешивается с буфером для режима с копированием IBC, нелегко увеличить или уменьшить опорную область относительно сегодняшней конфигурации с одной единицей CTU с размером 128x128. Это может ограничить гибкость использования лучшего компромисса между эффективностью кодирования и объемом памяти на кристалле в более поздних разработках, например, с более низким или более высоким профилем.3. This configuration does not scale well. Because the VPDU decoding is mixed with the IBC copy mode buffer, it is not easy to increase or decrease the reference area relative to today's single 128x128 CTU configuration. This may limit the flexibility to exploit the best trade-off between encoding efficiency and on-chip memory size in later designs, such as lower or higher profile ones.

4. Битовая глубина буфера для режима с копированием IBC связана с буфером декодирования. Даже хотя контент экрана обычно имеет меньшую битовую глубину, чем внутренняя битовая глубина декодирования, буферу все равно необходимо тратить объем памяти для сохранения битов, представляющих главным образом шумы округления или квантования. Проблема становится даже более серьезной при рассмотрении конфигурации с большей битовой глубиной декодирования.4. The buffer bit depth for IBC copy mode is related to the decode buffer. Even though the screen content typically has a smaller bit depth than the internal decoding bit depth, the buffer still needs to waste memory to store bits that primarily represent rounding or quantization noise. The problem becomes even more serious when considering a configuration with a higher decoding bit depth.

A3. Четкая конфигурация буфера для режима с копированием IBC A3. Clear buffer configuration for IBC copy mode

Для решения проблем, перечисленных в приведенном выше подразделе, мы предлагаем иметь отдельный, специализированный буфер для режима с копированием IBC, который не смешивается с памятью декодирования.To solve the problems listed in the subsection above, we propose to have a separate, dedicated buffer for IBC copy mode that is not mixed with decode memory.

Для единицы CTU размером 128x128 буфер определен в размере 128x128 из 8-битовых отсчетов, когда единица CU (x, y) размером wxh была декодирована, ее реконструированную версию прежде внутриконтурной фильтрации преобразуют к 8-битовому формату и записывают в области блока размером wxh, начинающейся от позиции (x%128, y%128). Здесь оператор % взятия по модулю дает в результате положительное число, т.е. для , например, -3%128=125.For a 128x128 CTU, the buffer is defined to be 128x128 of 8-bit samples, when a CU(x,y) of size wxh has been decoded, its reconstructed version before in-loop filtering is converted to an 8-bit format and written in the wxh block area starting from position (x%128, y%128). Here the % modulo operator results in a positive number, i.e. For , for example, -3%128=125.

Предположим, что пиксель по адресу (x,y) кодирован в режиме с копированием IBC с вектором BV=(BVx, BVy), прогнозируемый отсчет для этого пикселя в опорном буфере для режима с копированием IBC расположен по адресу ((x+BVx)%128, (y+BVy)%128), а значение этого пикселя будет преобразовано в 10-битовый формат перед прогнозированием.Assuming that the pixel at address (x,y) is encoded in IBC copy mode with vector BV=(BVx, BVy), the predicted sample for that pixel in the reference buffer for IBC copy mode is located at address ((x+BVx)% 128, (y+BVy)%128), and the value of this pixel will be converted to 10-bit format before prediction.

Когда буфер считается имеющим размер (W, H), после декодирования единицы CTU или единицы CU, начиная от точки (x, y), реконструированные пиксели прежде контурной фильтрации будут сохранены в буфере, начиная с позиции (x%W, y%H). Таким образом, после декодирования единицы CTU, соответствующий буфер для опорных данных в режиме с копированием IBC будет обновлен соответственно. Такая настройка может произойти, когда размер единицы CTU не равен 128x128. Например, для единицы CTU размером 64x64, CTU, при текущем размере буфера, это может считаться как буфер размером 256x64. Для единицы CTU размером 64x64 фиг. 2 показывает статус буфера.When the buffer is considered to be of size (W, H), after decoding a CTU unit or a CU unit starting from point (x, y), the reconstructed pixels before edge filtering will be stored in the buffer starting from position (x%W, y%H) . Thus, after decoding a CTU, the corresponding buffer for the reference data in IBC copy mode will be updated accordingly. This setting may occur when the CTU size is not 128x128. For example, for a CTU unit of size 64x64, the CTU, at the current buffer size, could be considered a 256x64 buffer. For a 64x64 CTU unit, FIG. 2 shows the buffer status.

На фиг. 12 приведена иллюстрация статуса буфера опорных данных для режима копирования IBC, где блок обозначает единицу CTU размером 64x64.In fig. 12 is an illustration of the reference data buffer status for IBC copy mode, where a block denotes a 64x64 CTU.

В такой конфигурации, поскольку буфер для режима с копированием IBC отличается от памяти декодирования для единицы VPDU, в качестве опоры здесь может быть использован буфер опорных данных для режима с копированием IBC.In such a configuration, since the IBC copy mode buffer is different from the decoding memory for the VPDU, the IBC copy mode reference data buffer can be used as a reference here.

Если битовая глубина буфера для режима с копированием IBC равна 8-бит, тогда по сравнению с текущей конфигурацией, где необходимы 3 дополнительных 10-битовых буфера размером 64x64, значение увеличения емкости запоминающего устройства на кристалле составляет (8*4)/(10*3)-100%=6,7%.If the buffer bit depth for IBC copy mode is 8-bits, then compared to the current configuration where 3 additional 64x64 10-bit buffers are needed, the on-chip storage capacity increase value is (8*4)/(10*3 )-100%=6.7%.

Если мы еще больше уменьшим битовую глубину, требования к объему памяти могут быть еще более снижены. Например, для 7-битового буфера, экономия емкости запоминающего устройства на кристалле составит 100%-(7*4)/(10*3)=6,7%.If we reduce the bit depth further, the memory requirements can be further reduced. For example, for a 7-bit buffer, the on-chip storage capacity savings will be 100% - (7*4)/(10*3)=6.7%.

В такой конфигурации, единственное ограничение для соответствия потока битов данных состоит в том, что опорный блок должен быть в пределах реконструированной области в текущей строке единиц CTU текущей плитки.In such a configuration, the only constraint for matching the data bit stream is that the reference block must be within the reconstructed region in the current row of CTUs of the current tile.

Когда в начале каждой строки единиц CTU допускается инициализация на 512, все ограничения соответствия потока битов данных могут быть сняты.When initialization to 512 is allowed at the beginning of each line of CTUs, all data bitstream compliance restrictions can be removed.

A4. Экспериментальные результатыA4. Experimental results

В некоторых вариантах, описываемые способы могут быть реализованы с использованием программного обеспечения VTM-4.0.In some embodiments, the described methods may be implemented using VTM-4.0 software.

Для 10-битовой реализации буфера и CTC, декодирующее устройство является полностью совместимым с сегодняшним кодирующим устройством согласно способу VTM4.0, что означает, что предлагаемое декодирующее устройство может точно декодировать потоки битов данных согласно способу VTM-4.0 CTC.For the 10-bit buffer and CTC implementation, the decoder is fully compatible with today's VTM4.0 encoder, which means that the proposed decoder can accurately decode data bit streams according to the VTM-4.0 CTC method.

Для 7-битовой реализации буфера результаты показаны в таблице I. For the 7-bit buffer implementation, the results are shown in Table I.

Для 8-битовой реализации буфера результаты показаны в таблице II. For the 8-bit buffer implementation, the results are shown in Table II.

Таблица I. Характеристики с 7-битовым буфером. Table I. Performance with 7-bit buffer.

Базовым уровнем является результат способа VTM-4.0 с режимом с копированием IBC для всех последовательностей.The base level is the result of the VTM-4.0 method with IBC copy mode for all sequences.

Все с внутрикадровым прогнозированиемAll with intra-frame prediction Согласно VTM-4.0 с включенным IBC According to VTM-4.0 with IBC enabled YY UU VV Код.TCode.T Декод.TDecode.T Класс A1Class A1 -0,01%-0.01% -0,09%-0.09% -0,10%-0.10% 132%132% 101%101% Класс A2Class A2 0,05%0.05% 0,00%0.00% 0,06%0.06% 135%135% 100%100% Класс BClass B 0,00%0.00% -0,02%-0.02% 0,01%0.01% 135%135% 100%100% Класс CClass C -0,02%-0.02% 0,01%0.01% 0,03%0.03% 130%130% 98%98% Класс EClass E -0,13%-0.13% -0,16%-0.16% -0,04%-0.04% 135%135% 99%99% ВсегоTotal -0,02%-0.02% -0,05%-0.05% 0,00%0.00% 133%133% 100%100% Класс DClass D 0,04%0.04% 0,04%0.04% 0,12%0.12% 127%127% 107%107% Класс FClass F -0,99%-0.99% -1,14%-1.14% -1,18%-1.18% 115%115% 99%99% 4:2:0 TGM4:2:0 TGM -2,57%-2.57% -2,73%-2.73% -2,67%-2.67% 104%104% 102%102% Произвольный доступ Random access Согласно VTM-4.0 с включенным IBC According to VTM-4.0 with IBC enabled YY UU VV Код.TCode.T Декод.TDecode.T Класс A1Class A1 0,02%0.02% -0,01%-0.01% 0,01%0.01% 109%109% 100%100% Класс A2Class A2 0,00%0.00% -0,04%-0.04% 0,03%0.03% 111%111% 100%100% Класс BClass B -0,01%-0.01% -0,10%-0.10% -0,22%-0.22% 113%113% 101%101% Класс CClass C -0,01%-0.01% 0,17%0.17% 0,12%0.12% 115%115% 100%100% Класс EClass E         ВсегоTotal 0,00%0.00% 0,00%0.00% -0,04%-0.04% 112%112% 100%100% Класс DClass D 0,05%0.05% 0,16%0.16% 0,20%0.20% 117%117% 101%101% Класс FClass F -0,71%-0.71% -0,77%-0.77% -0,77%-0.77% 109%109% 99%99% 4:2:0 TGM4:2:0 TGM -1,81%-1.81% -1,65%-1.65% -1,64%-1.64% 107%107% 101%101% Небольшая задержка BSmall delay B Согласно VTM-4.0 с включенным IBC According to VTM-4.0 with IBC enabled YY UU VV Код.TCode.T Декод.TDecode.T Класс A1Class A1           Класс A2Class A2         Класс BClass B 0,01%0.01% 0,36%0.36% 0,30%0.30% 114%114% 95%95% Класс CClass C -0,01%-0.01% -0,12%-0.12% -0,10%-0.10% 120%120% 98%98% Класс EClass E 0,10%0.10% 0,20%0.20% 0,18%0.18% 107%107% 99%99% ВсегоTotal 0,03%0.03% 0,16%0.16% 0,13%0.13% 114%114% 97%97% Класс DClass D -0,01%-0.01% 1,07%1.07% 0,18%0.18% 123%123% 104%104% Класс FClass F -0,79%-0.79% -0,89%-0.89% -1,01%-1.01% 110%110% 100%100% 4:2:0 TGM4:2:0 TGM -1,36%-1.36% -1,30%-1.30% -1,26%-1.26% 109%109% 102%102%

Таблица II. Характеристики с 8-битовым буфером. Table II. Characteristics with 8-bit buffer.

Базовым уровнем является результат способа VTM-4.0 с режимом с копированием IBC для всех последовательностей.The base level is the result of the VTM-4.0 method with IBC copy mode for all sequences.

Все с внутрикадровым прогнозированиемAll with intra-frame prediction Согласно VTM-4.0 с включенным IBC According to VTM-4.0 with IBC enabled YY UU VV Код.TCode.T Декод.TDecode.T Класс A1Class A1 -0,01%-0.01% 0,02%0.02% -0,10%-0.10% 129%129% 102%102% Класс A2Class A2 0,02%0.02% -0,06%-0.06% -0,02%-0.02% 134%134% 102%102% Класс BClass B -0,04%-0.04% -0,02%-0.02% -0,07%-0.07% 135%135% 101%101% Класс CClass C -0,03%-0.03% 0,04%0.04% 0,00%0.00% 130%130% 98%98% Класс EClass E -0,16%-0.16% -0,14%-0.14% -0,08%-0.08% 134%134% 100%100% ВсегоTotal -0,04%-0.04% -0,03%-0.03% -0,05%-0.05% 133%133% 100%100% Класс DClass D 0,00%0.00% 0,04%0.04% 0,02%0.02% 126%126% 101%101% Класс FClass F -1,31%-1.31% -1,27%-1.27% -1,29%-1.29% 114%114% 98%98% 4:2:0 TGM4:2:0 TGM -3,23%-3.23% -3,27%-3.27% -3,24%-3.24% 101%101% 100%100% Произвольный доступ Random access Согласно VTM-4.0 с включенным IBC According to VTM-4.0 with IBC enabled YY UU VV Код.TCode.T Декод.TDecode.T Класс A1Class A1 -0,01%-0.01% -0,08%-0.08% 0,04%0.04% 107%107% 99%99% Класс A2Class A2 -0,03%-0.03% -0,16%-0.16% 0,06%0.06% 110%110% 99%99% Класс BClass B -0,01%-0.01% -0,14%-0.14% -0,22%-0.22% 111%111% 99%99% Класс CClass C -0,01%-0.01% 0,15%0.15% 0,09%0.09% 115%115% 100%100% Класс EClass E         ВсегоTotal -0,01%-0.01% -0,05%-0.05% -0,03%-0.03% 111%111% 99%99% Класс DClass D 0,01%0.01% 0,19%0.19% 0,22%0.22% 116%116% 101%101% Класс FClass F -1,01%-1.01% -0,99%-0.99% -1,01%-1.01% 108%108% 99%99% 4:2:0 TGM4:2:0 TGM -2,33%-2.33% -2,14%-2.14% -2,19%-2.19% 105%105% 100%100% Небольшая задержка BSmall delay B Согласно VTM-4.0 с включенным IBC According to VTM-4.0 with IBC enabled YY UU VV Код.TCode.T Декод.TDecode.T Класс A1Class A1           Класс A2Class A2         Класс BClass B 0,00%0.00% 0,04%0.04% -0,14%-0.14% 113%113% #NUM!#NUM! Класс CClass C -0,05%-0.05% -0,28%-0.28% -0,15%-0.15% 119%119% 98%98% Класс EClass E 0,04%0.04% -0,16%-0.16% 0,43%0.43% 107%107% #NUM!#NUM! ВсегоTotal 0,00%0.00% -0,11%-0.11% 0,00%0.00% 113%113% #NUM!#NUM! Класс DClass D -0,07%-0.07% 1,14%1.14% 0,13%0.13% 122%122% 99%99% Класс FClass F -0,81%-0.81% -0,92%-0.92% -0,96%-0.96% 111%111% 99%99% 4:2:0 TGM4:2:0 TGM -1,71%-1.71% -1,67%-1.67% -1,71%-1.71% 106%106% 95%95%

На фиг. 17 представлена блок-схема, показывающая пример системы 1700 обработки видео, в которой могут быть реализованы различные описываемые здесь способы. Различные варианты реализации могут содержать некоторые или все компоненты системы 1700. Система 1700 может содержать вход 1702 для приема видео контента. Этот видео контент может быть принят в необработанном («сыром») или несжатом формате, например, 8 или 10-битовые многокомпонентные значения пикселей, либо может быть в сжатом или кодированном формате. Вход 1702 может представлять собой сетевой интерфейс, интерфейс периферийных шин или интерфейс запоминающих устройств. К примерам сетевого интерфейса относятся проводные интерфейсы, такие как Этернет, пассивная оптическая сеть (passive optical network (PON)) и т.п., и беспроводные интерфейсы, такие как Wi-Fi или сотовые интерфейсы. In fig. 17 is a block diagram showing an example of a video processing system 1700 in which the various methods described herein may be implemented. Various implementations may include some or all of the components of the system 1700. The system 1700 may include an input 1702 for receiving video content. This video content may be received in a raw or uncompressed format, such as 8 or 10-bit multi-pixel values, or may be in a compressed or encoded format. Input 1702 may be a network interface, a peripheral bus interface, or a storage device interface. Examples of a network interface include wired interfaces such as Ethernet, passive optical network (PON), etc., and wireless interfaces such as Wi-Fi or cellular interfaces.

Система 1700 может содержать кодирующий компонент 1704, который может реализовать различные способы кодирования, описываемые в настоящем документе. Кодирующий компонент 1704 может уменьшить среднюю частоту передачи битов данных видео при их прохождении от входа 1702 к выходу кодирующего компонента 1704 для создания кодированного представления этого видео. Поэтому технологии кодирования иногда называют технологиями сжатия видео или технологиями транскодирования видео. Выходные данные кодирующего компонента 1704 могут быть либо сохранены, либо переданы через присоединенные средства связи, представленные здесь компонентом 1706. Сохраняемое или передаваемое (или кодированное) представление видео в виде потока битов данных, принимаемое на вход 1702, может быть использовано компонентом 1708 для генерации значений пикселей или представляемого на дисплее видео, передаваемого интерфейсу 1710 дисплея. Процедура генерации просматриваемого пользователем видео из его представления в виде потока битов данных иногда называется декомпрессией (расширением) видео. Кроме того, хотя некоторые операции обработки видео называются операциями или инструментами «кодирования», следует понимать, что инструменты или операции кодирования используются в кодирующих устройствах и соответствующие инструменты или операции декодирования, которые обращают результаты кодирования, будут осуществляться декодирующим устройством. System 1700 may include an encoding component 1704 that may implement various encoding techniques described herein. The encoding component 1704 may reduce the average transmission rate of video data bits as they pass from the input 1702 to the output of the encoding component 1704 to create an encoded representation of the video. Therefore, encoding technologies are sometimes called video compression technologies or video transcoding technologies. The output of encoding component 1704 may be either stored or transmitted via attached communications media, represented here by component 1706. The stored or transmitted (or encoded) representation of the video as a stream of data bits received as input 1702 may be used by component 1708 to generate values pixels or display video transmitted to display interface 1710. The procedure of generating user-viewable video from its representation as a stream of data bits is sometimes called video decompression (expansion). In addition, although some video processing operations are referred to as "encoding" operations or tools, it should be understood that the encoding tools or operations are used in the encoding devices and the corresponding decoding tools or operations that reverse the encoding results will be performed by the decoding device.

Примеры интерфейса шины периферийных устройств или интерфейса дисплея могут представлять собой универсальную последовательную шину (universal serial bus (USB)) или мультимедийный интерфейс высокой четкости (high definition multimedia interface (HDMI)) или Displayport, и т.д. К примерам интерфейса запоминающих устройств относятся интерфейс усовершенствованного последовательного соединения (SATA (serial advanced technology attachment)), интерфейс периферийных устройств (PCI), интерфейс IDE и другие подобные интерфейсы. Способы, описываемые в настоящем документе, могут быть реализованы в разнообразных электронных устройствах, таких как мобильные телефоны, портативные компьютеры, смартфоны или другие устройства, способные осуществлять цифровую обработку данных и/или представлять видео на дисплее. Examples of a peripheral bus interface or display interface may be a universal serial bus (USB) or a high definition multimedia interface (HDMI) or Displayport, etc. Examples of storage interfaces include the serial advanced technology attachment (SATA) interface, the peripheral device interface (PCI), the IDE interface, and other similar interfaces. The methods described herein may be implemented in a variety of electronic devices, such as mobile phones, laptop computers, smartphones, or other devices capable of digital processing and/or displaying video.

На фиг. 18 представлена логическая схема примера способа обработки визуальных данных. Этапы этой логической схемы обсуждаются в соединении с Примером 23, обсуждаемым в Разделе 4 указанного документа. На этапе 1802, способ определяет, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этого текущего видеоблока в виде потока битов данных, блочный вектор (BVx,BVy), где действительность этого блочного вектора (BVx, BVy) не зависит от (1) позиции (P, Q) блока отсчетов, и/или (2) реконструирован ли отсчет, находящийся в позиции (P,Q), и/или (3) позиции текущего видеоблока, где, блочный вектор (BVx, BVy) представляет смещение пикселей между текущим видеоблоком и указанным блоком отсчетов. На этапе 1804, процедура осуществляет с использованием указанного блочного вектора, преобразование в режиме внутрикадрового копирования блоков на основе реконструированного блока, расположенного в той же самой видеообласти, где находится текущий видеоблок, содержащий опорные отсчеты, используемые для формирования прогнозируемого блока для текущего видеоблока, где, во время преобразования, прогнозируемый отсчет, находящийся в позиции (A, B), из совокупности опорных отсчетов, расположенных в буфере, определяют по меньшей мере в соответствии с размером буфера и/или блочным вектором (BVx, BVy).In fig. 18 is a logic diagram of an example of a visual data processing method. The steps of this logic circuit are discussed in conjunction with Example 23 discussed in Section 4 of that document. At step 1802, the method determines, to transform between the current video block of the current visual media image and the data bitstream representation of that current video block, a block vector (BVx,BVy), where the validity of this block vector (BVx, BVy) is independent of (1 ) the position (P, Q) of the sample block, and/or (2) whether the sample located at position (P,Q) is reconstructed, and/or (3) the position of the current video block, where the block vector (BVx, BVy) represents the offset pixels between the current video block and the specified sample block. At step 1804, the procedure performs, using the specified block vector, an intra-block copy mode transformation based on a reconstructed block located in the same video area as the current video block containing the reference samples used to generate a predicted block for the current video block, where, during conversion, the predicted sample located at position (A, B) from the plurality of reference samples located in the buffer is determined according to at least the buffer size and/or the block vector (BVx, BVy).

На фиг. 19 представлена логическая схема примера способа обработки визуальных данных. Этапы этой логической схемы обсуждаются в соединении с Примером 23, обсуждаемым в Разделе 4 указанного документа. На этапе 1902, способ определяет, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных, является ли блочный вектор (BVx, BVy), соответствующий текущему видеоблоку, действительным, в соответствии с некоторым правилом, где этот блочный вектор (BVx, BVy) представляет смещение пикселей между текущим видеоблоком и блоком отсчетов. На этапе 1904, процедура осуществляет, с использованием указанного блочного вектора, преобразование на основе опорной области из текущего изображения, содержащей опорные отсчеты, используемые для формирования прогнозируемого блока для текущего видеоблока, где указанное правило, специфицирует, что блочный вектор (BVx, BVy) действителен в случае, когда (1) один или несколько отсчетов из рассматриваемого блока отсчетов находятся вне текущего изображения, и/или (2) один или несколько отсчетов из этого блока отсчетов находятся вне по меньшей мере одной единицы дерева кодирования (CTU), ассоциированной с текущим видеоблоком, и/или (3) один или несколько отсчетов из этого блока отсчетов реконструировать не удалось.In fig. 19 is a logic diagram of an example of a visual data processing method. The steps of this logic circuit are discussed in conjunction with Example 23 discussed in Section 4 of that document. At step 1902, the method determines, for the conversion between the current video block of the current visual media image and the data bit stream representation of that visual media, whether the block vector (BVx, BVy) corresponding to the current video block is valid, in accordance with some rule, where this block vector (BVx, BVy) represents the pixel offset between the current video block and the sample block. At step 1904, the procedure performs, using the specified block vector, a transformation based on a reference region from the current image containing the reference samples used to form a predicted block for the current video block, where the specified rule specifies that the block vector (BVx, BVy) is valid in the case where (1) one or more samples from the sample block in question are outside the current image, and/or (2) one or more samples from this sample block are outside at least one coding tree unit (CTU) associated with the current video block, and/or (3) one or more samples from this block of samples could not be reconstructed.

На фиг. 20 представлена логическая схема примера способа обработки визуальных данных. Этапы этой логической схемы обсуждаются в соединении с Примером 44, обсуждаемым в Разделе 4 указанного документа. На этапе 2002, способ осуществляет преобразование между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных, где это преобразование производится на основе опорной области из текущего изображения, содержащей опорные отсчеты, используемые для формирования прогнозируемого блока для текущего видеоблока, и где виртуальный буфер заданного размера используется для отслеживания доступности опорных отсчетов для формирования прогнозируемого блока.In fig. 20 is a logic diagram of an example of a visual data processing method. The steps of this logic circuit are discussed in conjunction with Example 44 discussed in Section 4 of that document. At step 2002, the method performs a transformation between the current video block of the current visual media image and a representation of that visual media data as a stream of data bits, where this transformation is performed based on a reference region from the current image containing reference samples used to generate a predicted block for the current video block. and where a virtual buffer of a given size is used to track the availability of reference samples to form a prediction block.

На фиг. 21 представлена логическая схема примера способа обработки визуальных данных. Этапы этой логической схемы обсуждаются в соединении с Примером 51, обсуждаемым в Разделе 4 указанного документа. На этапе 2102, способ поддерживает, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных, буфер, содержащий опорные отсчеты из текущего изображения, для формирования прогнозируемого блока для текущего видеоблока, где один или несколько опорных отсчетов в буфере, которые маркированы как недоступные для формирования, имеют значения вне диапазона значений пикселей.In fig. 21 is a logic diagram of an example of a visual data processing method. The steps of this logic circuit are discussed in conjunction with Example 51 discussed in Section 4 of that document. At step 2102, the method supports, for converting between the current video block of the current image of the visual media data and the representation of that visual media data as a stream of data bits, a buffer containing reference samples from the current image to form a predicted block for the current video block, where one or more reference samples in the buffer that are marked as unavailable for generation have values outside the range of pixel values.

На фиг. 22 представлена логическая схема примера способа обработки визуальных данных. Этапы этой логической схемы обсуждаются в соединении с Примером 54, обсуждаемым в Разделе 4 указанного документа. На этапе 2202, способ осуществляет преобразование между текущим видеоблоком визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных с использованием буфера, содержащего опорные отсчеты из текущего изображения для формирования прогнозируемого блока для текущего видеоблока, где это преобразование производится в соответствии с правилом, специфицирующим, что для того, чтобы представление в виде потока битов данных соответствовало этому правилу, опорные отсчеты в буфере должны удовлетворять ограничению соответствия потока битов данных.In fig. 22 is a logic diagram of an example of a visual data processing method. The steps of this logic circuit are discussed in conjunction with Example 54 discussed in Section 4 of that document. At step 2202, the method performs a conversion between the current video block of visual media data and a representation of that visual media data as a stream of data bits using a buffer containing reference samples from the current image to form a predicted block for the current video block, where this conversion is performed in accordance with a rule specifying that in order for a data bitstream representation to comply with this rule, the reference samples in the buffer must satisfy the data bitstream compliance constraint.

Некоторые варианты настоящего документа теперь будут представлены в формате статей.Some versions of this document will now be presented in article format.

L1. Способ обработки визуальных медиаданных, содержащий:L1. A method for processing visual media data, comprising:

определение, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этого текущего видеоблока в виде потока битов данных, блочного вектора (BVx,BVy), где действительность этого блочного вектора (BVx, BVy) не зависит от (1) позиции (P, Q) блока отсчетов, и/или (2) реконструирован ли отсчет, находящийся в позиции (P,Q), и/или (3) позиции текущего видеоблока, где указанный блочный вектор (BVx, BVy) представляет смещение пикселей между текущим видеоблоком и указанным блоком отсчетов; и definition, to transform between the current video block of the current visual media image and the data bitstream representation of that current video block, a block vector (BVx,BVy), where the validity of that block vector (BVx, BVy) is independent of (1) position (P, Q) block of samples, and/or (2) whether the sample located at position (P,Q), and/or (3) position of the current video block, where the specified block vector (BVx, BVy) represents the pixel offset between the current video block and the specified block of readings; And

осуществление, с использованием этого блочного вектора, преобразования в режиме с внутрикадровым копированием блоков, которое базируется на том, что реконструированный блок, расположенный в той же самой видеообласти, где находится текущий видеоблок, содержит опорные отсчеты, используемые для формирования прогнозируемого блока для текущего видеоблока, где, в процессе преобразования, прогнозируемый отсчет в позиции (A, B) из совокупности опорных отсчетов, находящихся в буфере, определяют по меньшей мере в соответствии с размером буфера и/или блочным вектором (BVx, BVy).performing, using this block vector, an intra-block copy mode transformation which is based on the fact that the reconstructed block, located in the same video area as the current video block, contains reference samples used to form a predicted block for the current video block, where, during the transformation process, the predicted sample at position (A, B) from the set of reference samples located in the buffer is determined in accordance with at least the buffer size and/or the block vector (BVx, BVy).

L2. Способ обработки визуальных медиаданных, содержащий. L2. A method for processing visual media data, comprising:

определение, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных, является ли блочный вектор (BVx, BVy), соответствующий текущему видеоблоку, действительным, в соответствии с некоторым правилом, где этот блочный вектор (BVx, BVy) представляет смещение пикселей между текущим видеоблоком и блоком отсчетов; и determining, for the conversion between the current video block of the current visual media image and the representation of that visual media as a stream of data bits, whether the block vector (BVx, BVy) corresponding to the current video block is valid, in accordance with some rule, where this block vector (BVx , BVy) represents the pixel offset between the current video block and the sample block; And

осуществление, с использованием указанного блочного вектора, указанного преобразования на основе опорной области из текущего изображения, содержащей опорные отсчеты, используемые для формирования прогнозируемого блока для текущего видеоблока, где указанное правило специфицирует, что блочный вектор (BVx, BVy) действителен в случае, когда (1) один или несколько отсчетов из рассматриваемого блока отсчетов находятся вне текущего изображения, и/или (2) один или несколько отсчетов из рассматриваемого блока отсчетов находятся вне по меньшей мере одной единицы дерева кодирования (CTU), ассоциированной с текущим видеоблоком, и/или (3) один или несколько отсчетов из рассматриваемого блока отсчетов не удалось реконструировать.performing, using said block vector, said transformation based on a reference region from the current image containing reference samples used to form a predicted block for the current video block, wherein said rule specifies that the block vector (BVx, BVy) is valid when ( 1) one or more samples from the sample block in question are outside the current image, and/or (2) one or more samples from the sample block in question are outside at least one coding tree unit (CTU) associated with the current video block, and/or (3) one or more samples from the considered block of samples could not be reconstructed.

L3. Способ по статье L2, отличающийся тем, что, после идентификации, что блочный вектор (BVx, BVy) является действительным, прогнозируемый отсчет в позиции (A, B) из совокупности опорный отсчетов в буфере определяют по меньшей мере в соответствии с размером буфера и/или блочным вектором (BVx, BVy). L3. The method of Article L2, characterized in that, after identifying that the block vector (BVx, BVy) is valid, the predicted sample at position (A, B) from the plurality of reference samples in the buffer is determined at least in accordance with the size of the buffer and/ or block vector (BVx, BVy).

L4. Способ по какой-либо одной или нескольким из статей L1 или L3, отличающийся тем, что опорные отсчеты в буфере соответствуют реконструированным отсчетам из какой-либо области текущего изобретения.L4. The method according to any one or more of articles L1 or L3, characterized in that the reference samples in the buffer correspond to reconstructed samples from any area of the current invention.

L5. Способ по статье L4, отличающийся тем, что указанная область содержит строку единиц дерева кодирования (CTU), ассоциированную с текущим видеоблоком. L5. The method of Article L4, wherein said area contains a string of coding tree units (CTUs) associated with the current video block.

L6. Способ по какой-либо одной или нескольким из статей L1 – L5, отличающийся тем, что блочный вектор (BVx, BVy) определяют как действительный независимо от того, находится ли позиция (P, Q), вычисленная в соответствии с блочным вектором (BVx, BVy) и верхней левой позицией (x, y) текущего видеоблока, вне пределов границ изображения. L6. The method according to any one or more of clauses L1 to L5, characterized in that the block vector (BVx, BVy) is determined to be valid regardless of whether the position (P, Q) calculated in accordance with the block vector (BVx, BVy) and the top left position (x, y) of the current video block, outside the image boundaries.

L7. Способ по статье L6, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым x+BVx<0 или x+BVx>0.L7. The method according to Article L6, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities x+BVx<0 or x+BVx>0 is valid.

L8. Способ по статье L6, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым x+W+BVx > Wpic или x+W+BVx < Wpic , где W обозначает ширину текущего видеоблока и Wpic обозначает ширину изображения. L8. The method according to article L6, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid x+W+BVx > W pic or x+W+BVx < W pic , where W denotes the width of the current video block and W pic denotes the width of the image.

L9. Способ по статье L6, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым y+BVy<0 или y+BVy>0. L9. The method according to article L6, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid y+BVy<0 or y+BVy>0.

L10. Способ по статье L6, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым x+H+BVx > Hpic или x+H+BVx < Hpic , где H обозначает высоту текущего видеоблока и Hpic обозначает высоту изображения. L10. Method according to article L6, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid x+H+BVx > H pic or x+H+BVx < H pic , where H denotes the height of the current video block and H pic denotes the height of the image.

L11. Способ по какой-либо одной или нескольким из статей L1 – L5, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, находится ли позиция (P, Q), вычисленная в соответствии с блочным вектором (BVx, BVy) и верхней левой позицией (x, y) текущего видеоблока, вне единицы дерева кодирования, содержащей текущий видеоблок.L11. The method according to any one or more of clauses L1 to L5, characterized in that the block vector (BVx, BVy) is valid regardless of whether the position (P, Q) calculated in accordance with the block vector (BVx, BVy) is ) and the top left position (x, y) of the current video block, outside the coding tree unit containing the current video block.

L12. Способ по статье L11, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым y+BVy<floor(y/Hctu)* Hctu или y+BVy>floor(y/Hctu)* Hctu, где Hctu обозначает высоту единицы дерева кодирования, и функция floor(a) равна наибольшему целому числу не больше a. L12. Method according to Article L11, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid y+BVy<floor(y/H ctu )* H ctu or y+BVy>floor(y/ H ctu )* H ctu , where H ctu denotes the unit height of the coding tree, and the function floor(a) is equal to the largest integer not greater than a.

L13. Способ по статье L11, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым y+H+BVy<floor(y/Hctu)*Hctu или y+H+BVy>floor(y/Hctu)*Hctu, где H обозначает высоту текущего видеоблока, и Hctu обозначает высоту единицы дерева кодирования, и функция floor(a) равна наибольшему целому числу не больше a. L13. Method according to Article L11, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid y+H+BVy<floor(y/H ctu )*H ctu or y+H+BVy> floor(y/H ctu )*H ctu , where H denotes the height of the current video block, and H ctu denotes the height of the coding tree unit, and the function floor(a) is equal to the largest integer not greater than a.

L14. Способ по какой-либо одной или нескольким из статей L1 – L5, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, находится ли позиция (P, Q), вычисленная в соответствии с блочным вектором (BVx, BVy) и верхней левой позицией (x, y) текущего видеоблока, вне единицы дерева кодирования, содержащей текущий видеоблок, и (n-1) единицами дерева кодирования в направлении влево.L14. The method according to any one or more of clauses L1 to L5, characterized in that the block vector (BVx, BVy) is valid regardless of whether the position (P, Q) calculated in accordance with the block vector (BVx, BVy) is ) and the top left position (x, y) of the current video block, outside the coding tree unit containing the current video block, and (n-1) coding tree units in the direction to the left.

L15. Способ по статье L14, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым x+BVx<floor(x/Wctu)*Wctu-(n-1)*Wctu или x+BVx>floor(X/Wctu)*Wctu-(n-1)*Wctu, где Wctu обозначает вес единицы дерева кодирования, и функция floor(a) равна наибольшему целому числу не больше a. L15. Method according to Article L14, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid x+BVx<floor(x/W ctu )*W ctu -(n-1)*W ctu or x+BVx>floor(X/W ctu )*W ctu -(n-1)*W ctu , where W ctu denotes the unit weight of the coding tree, and the function floor(a) is equal to the largest integer not greater than a.

L16. Способ по статье L14, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым x+W+BVx>floor(X/Wctu)*Wctu+Wctu или x+W+BVx<floor(X/Wctu)*Wctu+Wctu, где W обозначает ширину текущего видеоблока, Wctu обозначает вес единицы дерева кодирования, и функция floor(a) равна наибольшему целому числу не больше a.L16. Method according to Article L14, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid x+W+BVx>floor(X/W ctu )*W ctu +W ctu or x+W +BVx<floor(X/W ctu )*W ctu +W ctu , where W denotes the width of the current video block, W ctu denotes the unit weight of the coding tree, and the function floor(a) is equal to the largest integer not greater than a.

L17. Способ по какой-либо одной или нескольким из статей L1 – L5, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, находится ли позиция (P, Q), вычисленная в соответствии с блочным вектором (BVx, BVy) и верхней левой позицией (x, y) текущего видеоблока, за пределами текущей строки единиц CTU, включая текущую единицу дерева кодирования, содержащую текущий видеоблок.L17. The method according to any one or more of clauses L1 to L5, characterized in that the block vector (BVx, BVy) is valid regardless of whether the position (P, Q) calculated in accordance with the block vector (BVx, BVy) is ) and the top left position (x, y) of the current video block, beyond the current string of CTUs, including the current coding tree unit containing the current video block.

L18. Способ по статье L17, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, какое из неравенств является справедливым Y+BVy<floor(Y/ Hctu)* Hctu или Y+H+BVy>=floor(Y/ Hctu)*Hctu+ Hctu, где, Wctu и Hctu обозначают ширину и высоту единицы CTU соответственно, и функция floor(a) равна наибольшему целому числу не больше a. L18. Method according to Article L17, characterized in that the block vector (BVx, BVy) is valid regardless of which of the inequalities is valid Y+BVy<floor(Y/ Hctu)* Hctu or Y+H+BVy>=floor(Y / Hctu)*Hctu+ Hctu, where, W ctu and H ctu denote the width and height of the CTU unit, respectively, and the function floor(a) is equal to the largest integer not greater than a.

L19. Способ по какой-либо одной или нескольким из статей L1 – L5, отличающийся тем, что блочный вектор (BVx, BVy) определяют в качестве действительного независимо от того, удалось или нет реконструировать отсчет.L19. The method according to any one or more of articles L1 - L5, characterized in that the block vector (BVx, BVy) is determined as valid regardless of whether it was possible or not to reconstruct the sample.

L20. Способ по статье L19, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, имеет ли функция isRec(x+BVx, y+ BVy) значение «ложно» (false), где функция isRec(x,y) имеет значение «истинно» (true), если пиксель в позиции (x,y) реконструируют в режиме внутрикадрового копирования блоков. L20. Method according to Article L19, characterized in that the block vector (BVx, BVy) is valid regardless of whether the function isRec(x+BVx, y+ BVy) is false, where the function isRec(x,y) is true if the pixel at position (x,y) is reconstructed using intra-frame block copy mode.

L21. Способ по статье L19, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, имеет ли функция isRec(x+BVx+W-1, y+BVy) значение «ложно», где isRec(x,y) имеет значение «истинно», если пиксель в позиции (x,y) реконструируют в режиме внутрикадрового копирования блоков, и W обозначает ширину текущего видеоблока.L21. Method according to Article L19, characterized in that the block vector (BVx, BVy) is valid regardless of whether the function isRec(x+BVx+W-1, y+BVy) is false, where isRec(x,y ) is true if the pixel at position (x,y) is reconstructed in intra-frame block copy mode, and W denotes the width of the current video block.

L22. Способ по статье L19, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, имеет ли функция isRec(x+BVx, y+BVy+H-1) значение «ложно», где isRec(x,y) имеет значение «истинно», если пиксель в позиции (x,y) реконструируют в режиме внутрикадрового копирования блоков, и H обозначает высоту текущего видеоблока. L22. Method according to Article L19, characterized in that the block vector (BVx, BVy) is valid regardless of whether the function isRec(x+BVx, y+BVy+H-1) is false, where isRec(x,y ) is true if the pixel at position (x,y) is reconstructed in intra-frame block copy mode, and H denotes the height of the current video block.

L23. Способ по статье L19, отличающийся тем, что блочный вектор (BVx, BVy) является действительным независимо от того, имеет ли функция isRec(x+BVx+W-1, y+BVy+H-1) значение «ложно», где isRec(x, y) имеет значение «истинно», если пиксель в позиции (x,y) реконструируют в режиме внутрикадрового копирования блоков, W обозначает ширину текущего видеоблока, и H обозначает высоту текущего видеоблока.L23. Method according to Article L19, characterized in that the block vector (BVx, BVy) is valid regardless of whether the function isRec(x+BVx+W-1, y+BVy+H-1) is false, where isRec (x, y) is true if the pixel at position (x,y) is reconstructed in intra-frame block copy mode, W denotes the width of the current video block, and H denotes the height of the current video block.

L24. Способ по какой-либо одной или нескольким из статей L1 – L5 отличающийся тем, что блочный вектор (BVx, BVy) определяют в качестве действительного независимо от того, входит ли текущий видеоблок в первую единицу дерева кодирования из строки единиц дерева кодирования.L24. The method according to any one or more of clauses L1 to L5, characterized in that the block vector (BVx, BVy) is determined to be valid regardless of whether the current video block is included in the first coding tree unit of a row of coding tree units.

L25. Способ по какой-либо одной или нескольким из статей L1 – L5, отличающийся тем, что блочный вектор (BVx, BVy) определяют в качестве действительного, когда удовлетворяются все следующие условия: (i) x + BVx >= 0, (ii) y + BVy >= floor(y / Hctu), и (iii) функция isRec(x + BVx + W - 1, y + BVy + H - 1) имеет значение «истинно», где функция isRec(x, y) имеет значение «истинно», если отсчет в точке (x, y) реконструируют в режиме внутрикадрового кодирования блоков, W обозначает ширину текущего видеоблока, H обозначает высоту текущего видеоблока, где функция floor(a) равна наибольшему целому числу не больше a.L25. The method according to any one or more of clauses L1 - L5, characterized in that the block vector (BVx, BVy) is determined to be valid when all of the following conditions are satisfied: (i) x + BVx >= 0, (ii) y + BVy >= floor(y / Hctu), and (iii) the function isRec(x + BVx + W - 1, y + BVy + H - 1) is true, where the function isRec(x, y) is "true" if the sample at point (x, y) is reconstructed in intra-frame block coding mode, W denotes the width of the current video block, H denotes the height of the current video block, where the function floor(a) is equal to the largest integer not greater than a.

L26. Способ по статье L25, отличающийся тем, что блочный вектор расположен в первой единице CTU в строке единиц CTU.L26. Method according to Article L25, characterized in that the block vector is located in the first CTU in the row of CTUs.

L27. Способ по статье L3, отличающийся тем, что прогнозируемый отсчет, находящийся в позиции (A, B), определяют в соответствии с размером буфера, блочным вектором (BVx, BVy) и верхней левой позицией (x, y).L27. The method according to article L3, characterized in that the predicted sample located at position (A, B) is determined in accordance with the buffer size, the block vector (BVx, BVy) and the top left position (x, y).

L28. Способ по статье L27, отличающийся тем, что прогнозируемый отсчет, находящийся в позиции (A, B), представляет собой прогнозируемый отсчет, находящийся в позиции, вычисленной в соответствии ((X+BVx)%Wbuf, (Y+BVy)%Hbuf), где Wbuf и Hbuf обозначают ширину буфера и высоту буфера, соответственно.L28. Method according to Article L27, characterized in that the predicted sample located in position (A, B) is the predicted sample located in the position calculated according to ((X+BVx)%Wbuf, (Y+BVy)%Hbuf) , where Wbuf and Hbuf denote the buffer width and buffer height, respectively.

L29. Способ по какой-либо одной или нескольким из статей L1 – L28, отличающийся тем, что указанное преобразование осуществляется в режиме внутрикадрового копирования блоков.L29. A method according to any one or more of articles L1 - L28, characterized in that the specified conversion is carried out in the mode of intra-frame block copying.

M1. Способ обработки визуальных медиаданных, содержащий: M1. A method for processing visual media data, comprising:

осуществление преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных, performing a conversion between the current video block of the current image of the visual media data and a representation of that visual media data as a stream of data bits,

где, это преобразование осуществляется на основе опорной области из текущего изображения, содержащей опорные отсчеты, используемые для формирования прогнозируемого блока для текущего видеоблока, иwhere, this transformation is performed based on a reference region from the current image containing reference samples used to generate a predicted block for the current video block, and

где виртуальный буфер заданного размера используется для отслеживания доступности опорных отсчетов для формирования прогнозируемого блока.where a virtual buffer of a given size is used to track the availability of reference samples to form a prediction block.

M2. Способ по статье M1, отличающийся тем, что виртуальный буфер поддерживают с использованием единицы данных виртуального конвейера (VPDU), и отличающийся тем, что размер виртуального буфера равен m*WVPDU x n*HVPDU, где WVPDU и HVPDU обозначают ширину и высоту единицы VPDU.M2. The method of Article M1, characterized in that the virtual buffer is maintained using a virtual pipeline data unit (VPDU), and characterized in that the size of the virtual buffer is m*W VPDU xn*H VPDU , where W VPDU and H VPDU denote width and height VPDU units.

M3. Способ по статье M2, отличающийся тем, что m=4 и n=2.M3. The method according to article M2, characterized in that m=4 and n=2.

M4. Способ по статье M2, отличающийся тем, что m и/или n определяют по меньшей мере частично на основе разрешения изображения, ассоциированного с текущим видеоблоком, или размера единицы дерева кодирования, содержащий текущий видеоблок.M4. The method of Article M2, wherein m and/or n are determined at least in part based on the resolution of an image associated with the current video block or the size of a coding tree unit containing the current video block.

M5. Способ по статье M2, отличающийся тем, что m и/или n являются предварительно заданными значениями.M5. Method according to article M2, characterized in that m and/or n are predefined values.

M6. Способ по статье M2, отличающийся тем, что m и/или n передают в виде сигнализации в форме полей в представлении в виде потока битов данных.M6. Method according to article M2, characterized in that m and/or n are signaled in the form of fields in a data bit stream representation.

M7. Способ по статье M1, отличающийся тем, что отсчет в текущем видеоблоке отображают в точку (x%(m*WVPDU), y%(n*HVPDU)) в виртуальном буфере, где этот отсчет в текущем видеоблоке расположен в точке с координатами (x, y) относительно верхнего левого угла изображения; “x%y” определено как y = x – y*floor(x/y), где функция floor(a) равна наибольшему целому числу не больше a, и WVPDU и HVPDU обозначают ширину и высоту единицы VPDU.M7. The method according to article M1, characterized in that the sample in the current video block is mapped to a point (x%(m*W VPDU ), y%(n*H VPDU )) in the virtual buffer, where this sample in the current video block is located at the point with coordinates (x, y) relative to the top left corner of the image; “x%y” is defined as y = x – y*floor(x/y), where the function floor(a) is equal to the largest integer not greater than a, and W VPDU and H VPDU denote the width and height of the VPDU unit.

M8. Способ по статье M1, дополнительно содержащий:M8. The method according to article M1, additionally containing:

использование массива для отслеживания доступности отсчетов, сохраняемых в виртуальном буфере. using an array to track the availability of samples stored in a virtual buffer.

M9. Способ по статье M8, отличающийся тем, что указанный массив содержит флаг для индикации, используются ли один или несколько отсчетов, сохраняемых в буфере, для прогнозирования в режиме внутрикадрового копирования блоков.M9. The method according to article M8, characterized in that the specified array contains a flag for indicating whether one or more samples stored in the buffer are used for prediction in intra-frame block copy mode.

M10. Способ по статье M8, отличающийся тем, что указанный массив соответствует одной или нескольким единицам VPDU размером 3x2 каждая.M10. The method according to article M8, characterized in that the specified array corresponds to one or more VPDU units of size 3x2 each.

M11. Способ по статье M8, отличающийся тем, что указанный массив соответствует одной или нескольким единицам VPDU размером 4x2 каждая.M11. Method according to article M8, characterized in that the specified array corresponds to one or more VPDU units of size 4x2 each.

M12. Способ по статье M1, отличающийся тем, что подмножество отсчетов, сохраняемых в виртуальном буфере, отмечено флагами как недоступное для прогнозирования.M12. The method according to article M1, characterized in that a subset of samples stored in the virtual buffer is flagged as unavailable for prediction.

M13. Способ по статье M12, отличающийся тем, что указанное подмножество отсчетов, отмеченное флагами как недоступное для прогнозирования, основано на позиции самой последней обработанной единицы VPDU.M13. The method of clause M12, wherein said subset of samples flagged as unavailable for prediction is based on the position of the most recently processed VPDU.

M14. Способ по статье M13, отличающийся тем, что отсчеты маркируют флагами в качестве недоступных в начале обработки единицы VPDU.M14. Method according to article M13, characterized in that the samples are flagged as unavailable at the beginning of VPDU processing.

M15. Способ по статье M14, отличающийся тем, что, если yPrevVPDU%(n*HVPDU) равно 0, тогда подмножество отсчетов, расположенных в позициях (x, y), маркируют флагами в качестве недоступных, где x находится в первом заданном диапазоне и y находится во втором заданном диапазоне, где (xPrevVPDU, yPrevVPDU) обозначает верхний левый угол единицы дерева кодирования самой последней обработанной единицы VPDU, и WVPDU и HVPDU обозначают ширину и высоту единицы этой VPDU.M15. The method of article M14, characterized in that if yPrevVPDU%(n*H VPDU ) is 0, then a subset of samples located at positions (x, y) are flagged as unavailable, where x is in the first specified range and y is in the second specified range, where (xPrevVPDU, yPrevVPDU) denotes the upper left corner of the coding tree unit of the most recently processed VPDU, and W VPDU and H VPDU denote the unit width and height of that VPDU.

M16. Способ по статье M15, отличающийся тем, что первый диапазон выражен как [xPrevVPDU - 2WVPDU + 2mWVPDU)% mWVPDU, ((xPrevVPDU - 2*WVPDU + 2*m*WVPDU)% (m*WVPDU))-1+WVPDU], и второй диапазон выражен как [yPrevVPDU%(n*HVPDU), (yPrevVPDU%(n*HVPDU))-1+HVPDU].M16. The method according to article M15, characterized in that the first range is expressed as [xPrevVPDU - 2W VPDU + 2mW VPDU )% mW VPDU , ((xPrevVPDU - 2*W VPDU + 2*m*W VPDU )% (m*W VPDU )) -1+W VPDU ], and the second range is expressed as [yPrevVPDU%(n*H VPDU ), (yPrevVPDU%(n*H VPDU ))-1+H VPDU ].

M17. Способ по статье M15, отличающийся тем, что первый диапазон выражен как [xPrevVPDU - 2*WVPDU+ 2*m*WVPDU)% mWVPDU, ((xPrevVPDU - 2*WVPDU+ 2*m*WVPDU)% (m*WVPDU))-1+WVPDU], и второй диапазон выражен как [yPrevVPDU%(n*HVPDU), (yPrevVPDU%(n*HVPDU))-1+ HVPDU].M17. The method according to Article M15, characterized in that the first range is expressed as [xPrevVPDU - 2*W VPDU + 2*m*W VPDU )% mW VPDU , ((xPrevVPDU - 2*W VPDU + 2*m*W VPDU )% ( m*W VPDU ))-1+W VPDU ], and the second range is expressed as [yPrevVPDU%(n*H VPDU ), (yPrevVPDU%(n*H VPDU ))-1+ H VPDU ].

M18. Способ по статье M14, отличающийся тем, что, если yPrevVPDU%(n*HVPDU) не равно 0, тогда подмножество отсчетов, расположенных в позициях (x, y), отмечено флагами как недоступное, где x лежит в первом заданном диапазоне и y лежит во втором заданном диапазоне, где (xPrevVPDU, yPrevVPDU) обозначает верхний левый угол единицы дерева кодирования для самой последней обработанной единицы VPDU, и WVPDU и HVPDU обозначают ширину и высоту указанной единицы VPDU.M18. The method according to article M14, characterized in that if yPrevVPDU%(n*H VPDU ) is not equal to 0, then a subset of samples located at positions (x, y) is flagged as unavailable, where x lies in the first specified range and y lies in the second specified range, where (xPrevVPDU, yPrevVPDU) denotes the upper left corner of the coding tree unit for the most recently processed VPDU, and W VPDU and H VPDU denote the width and height of the specified VPDU.

M19. Способ по статье M18, отличающийся тем, что первый диапазон выражен как [xPrevVPDU - WVPDU + 2*m*WVPDU)% (m*WVPDU), ((xPrevVPDU - WVPDU + 2*m*WVPDU)% (m*WVPDU))-1+WVPDU], и второй диапазон выражен как [yPrevVPDU%(n*HVPDU), (yPrevVPDU%(n*HVPDU))-1+ HVPDU].M19. The method according to Article M18, characterized in that the first range is expressed as [xPrevVPDU - W VPDU + 2*m*W VPDU )% (m*W VPDU ), ((xPrevVPDU - W VPDU + 2*m*W VPDU )% ( m*W VPDU ))-1+W VPDU ], and the second range is expressed as [yPrevVPDU%(n*H VPDU ), (yPrevVPDU%(n*H VPDU ))-1+ H VPDU ].

M20. Способ по статье M18, отличающийся тем, что первый диапазон выражен как [xPrevVPDU - WVPDU + 2*m*WVPDU)% mWVPDU, ((xPrevVPDU - WVPDU + 2*m*WVPDU)% (m*WVPDU))-1+WVPDU], и второй диапазон выражен как [yPrevVPDU%(n*HVPDU), (yPrevVPDU%(n*HVPDU))-1+ HVPDU].M20. Method according to Article M18, characterized in that the first range is expressed as [xPrevVPDU - W VPDU + 2*m*W VPDU )% mW VPDU , ((xPrevVPDU - W VPDU + 2*m*W VPDU )% (m*W VPDU ))-1+W VPDU ], and the second range is expressed as [yPrevVPDU%(n*H VPDU ), (yPrevVPDU%(n*H VPDU ))-1+ H VPDU ].

M21. Способ по статье M12, отличающийся тем, что, когда единица дерева кодирования содержит единицы VPDU, подмножество отсчетов, маркированное флагами как недоступное для прогнозирования, основано на позиции самой последней обработанной единицы дерева кодирования.M21. The method of clause M12, wherein when a coding tree unit contains VPDUs, the subset of samples flagged as not available for prediction is based on the position of the most recently processed coding tree unit.

M22. Способ по статье M21, отличающийся тем, что отсчеты маркируют флагами в качестве недоступных в начале обработки единицы дерева кодирования.M22. The method according to article M21, characterized in that the samples are marked with flags as unavailable at the beginning of processing of the coding tree unit.

M23. Способ по какой-либо одной или нескольким из статей M1-M22, дополнительно содержащий: M23. The method according to any one or more of articles M1-M22, additionally containing:

определение доступности блочного вектора, соответствующего текущему видеоблоку, на основе верхней левой позиции текущего видеоблока, нижней левой позиции текущего видеоблока и нижней правой позиции текущего видеоблока, где процедура определения исключает использование верхней правой позиции текущего видеоблока.determining the availability of a block vector corresponding to the current video block based on the top left position of the current video block, the bottom left position of the current video block, and the bottom right position of the current video block, where the determination procedure excludes the use of the top right position of the current video block.

M24. Способ по какой-либо одной или нескольким из статей M1 – M23, отличающийся тем, что указанное преобразование осуществляется в режиме внутрикадрового копирования блоков. M24. A method according to one or more of articles M1 - M23, characterized in that the specified conversion is carried out in the mode of intra-frame block copying.

N1. Способ обработки визуальных медиаданных, содержащий:N1. A method for processing visual media data, comprising:

поддержание, для преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных, буфера, содержащего опорные отсчеты из текущего изображения для формирования прогнозируемого блока для текущего видеоблока, maintaining, for conversion between the current video block of the current image of the visual media data and a representation of that visual media data as a stream of data bits, a buffer containing reference samples from the current image to form a predicted block for the current video block,

где один или несколько опорных отсчетов в буфере, которые маркированы как недоступные для формирования, имеют значения вне диапазона значений пикселей. where one or more reference samples in the buffer that are marked as unavailable for generation have values outside the range of pixel values.

N2. Способ по статье N1, отличающийся тем, что указанный диапазон значений пикселей выражен как [0, 1<<(bit_depth) – 1], где bit_depth представляет собой положительное целое число.N2. The method of Article N1, characterized in that the specified range of pixel values is expressed as [0, 1<<(bit_depth) – 1], where bit_depth is a positive integer.

N3. Способ по статье N2, отличающийся тем, что параметр bit_depth обозначает уровень точности, используемый для обработки отсчетов.N3. The method according to article N2, characterized in that the bit_depth parameter indicates the level of accuracy used to process the samples.

N4. Способ по статье N1, отличающийся тем, что способ далее содержит:N4. The method according to Article N1, characterized in that the method further contains:

инициализацию множества отсчетов в буфере с заданным значением, указывающим недоступность этого множества отсчетов.initializing a plurality of samples in the buffer with a specified value indicating that the plurality of samples is unavailable.

N5. Способ по статье N4, отличающийся тем, что указанная заданное значение равна -1.N5. The method according to article N4, characterized in that the specified set value is equal to -1.

N6. Способ по какой-либо одной или нескольким из статей N4 – N5, отличающийся тем, что позиции указанного множества отсчетов и/или следует ли инициализировать это множество с заданным значением, основано на одном или нескольких из следующих факторов: позиции текущего видеоблока, размера текущего видеоблока, размера единицы VPDU, содержащей текущий видеоблок, и/или размера единицы дерева кодирования, содержащей текущей видеоблок.N6. The method according to any one or more of articles N4 - N5, characterized in that the position of the specified set of samples and/or whether this set should be initialized with a given value is based on one or more of the following factors: the position of the current video block, the size of the current video block , the size of the VPDU containing the current video block, and/or the size of the coding tree unit containing the current video block.

N7. Способ по статье N6, отличающийся тем, что, если (xCb%vSize) равно 0 и (yCb%vSize) равно 0, указанное множество отсчетов маркируют как недоступные, где xCb, yCb обозначает позицию текущего видеоблока относительно указанного отсчета и vSize= min(ctbSize, 64), где ctbSize обозначает ширину или высоту единицы дерева кодирования.N7. The method according to article N6, characterized in that if (xCb%vSize) is equal to 0 and (yCb%vSize) is equal to 0, the specified set of samples is marked as unavailable, where xCb, yCb denotes the position of the current video block relative to the specified sample and vSize= min( ctbSize, 64), where ctbSize denotes the width or height of the coding tree unit.

N8. Способ по статье N1, отличающийся тем, что, если размер текущего блока меньше min(ctbSize, 64), указанное множество отсчетов в буфере маркируют как недоступные, где ctbSize обозначает ширину или высоту единицы дерева кодирования.N8. The method according to article N1, characterized in that if the size of the current block is less than min(ctbSize, 64), the specified set of samples in the buffer is marked as unavailable, where ctbSize denotes the width or height of a coding tree unit.

N9. Способ по статье N8, отличающийся тем, что позиции указанных нескольких отсчетов связаны с размером единицы VPDU.N9. The method according to article N8, characterized in that the positions of these several samples are associated with the size of the VPDU unit.

N10. Способ по статье N8, отличающийся тем, что позиции указанных нескольких отсчетов связаны с размером единицы дерева кодирования, содержащей текущий видеоблок.N10. The method according to article N8, characterized in that the positions of these several samples are associated with the size of the coding tree unit containing the current video block.

N11. Способ по статье N4, отличающийся тем, что указанное множество отсчетов в буфере имеют позиции, выраженные как (x%wIbcBuf, y%hIbcBuf), где x = xV, …,xV+ctbSize-1 и y=yV,…,yV+ctbSize-1, и xV, yV обозначают верхнюю левую позицию единицы VPDU относительно верхней левой позиции изображения, где ctbSize обозначает размер единицы дерева кодирования, и wIbcBuf и hIbcBuf обозначают ширину буфера и высоту буфера. N11. The method according to article N4, characterized in that the specified set of samples in the buffer have positions expressed as (x%wIbcBuf, y%hIbcBuf), where x = xV, ..., xV+ctbSize-1 and y = yV, ..., yV+ ctbSize-1, and xV, yV denote the top left position of the VPDU unit relative to the top left position of the image, where ctbSize denotes the size of the coding tree unit, and wIbcBuf and hIbcBuf denote the buffer width and buffer height.

N12. Способ по статье N11, отличающийся тем, что указанное множество отсчетов в буфере инициализируют значением -1.N12. The method according to article N11, characterized in that the specified set of samples in the buffer is initialized with the value -1.

N13. Способ по статье N4, отличающийся тем, что указанное множество отсчетов инициализируют в начале декодирования единицы видео.N13. The method according to article N4, characterized in that the specified set of samples is initialized at the beginning of decoding the video unit.

N14. Способ по какой-либо одной или нескольким из статей N1 – N13, отличающийся тем, что указанное преобразование осуществляется в режиме внутрикадрового копирования блоков.N14. The method according to any one or more of articles N1 - N13, characterized in that the specified conversion is carried out in the mode of intra-frame block copying.

O1. Способ обработки визуальных медиаданных, содержащий:O1. A method for processing visual media data, comprising:

осуществление преобразования между текущим видеоблоком текущего изображения визуальных медиаданных и представлением этих визуальных медиаданных в виде потока битов данных с использованием буфера, содержащего опорные отсчеты из текущего изображения для формирования прогнозируемого блока для текущего видеоблока, performing a conversion between the current video block of the current visual media image and a representation of that visual media data as a stream of data bits using a buffer containing reference samples from the current image to form a predicted block for the current video block,

где это преобразование выполняют на основе правила, которое специфицирует что, для того, чтобы представление в виде потока битов данных соответствовало этому правилу, опорный отсчет в буфере должен удовлетворять ограничению соответствия потока битов данных. where this conversion is performed based on a rule that specifies that, in order for a data bitstream representation to conform to this rule, a reference sample in the buffer must satisfy a data bitstream compliance constraint.

O2. Способ по статье O1, отличающийся тем, что указанное ограничение соответствия потока битов данных основано по меньшей мере на одном из факторов (1) значении рассматриваемого опорного отсчета в буфере, и/или (2) информации о доступности этого отсчета в буфере.O2. The method of Clause O1, wherein said constraint on matching the data bit stream is based on at least one of the factors (1) the value of the reference sample in question in the buffer, and/or (2) information about the availability of that sample in the buffer.

O3. Способ по какой-либо одной или нескольким из статей O1 – O2, отличающийся тем, что указанное ограничение соответствия потока битов данных специфицирует, что представление в виде потока битов данных является несоответствующим, если рассматриваемый отсчет в буфере имеет значение вне диапазона пикселей. O3. The method of any one or more of clauses O1 to O2, wherein said bitstream compliance constraint specifies that the data bitstream representation is non-compliant if the sample in the buffer in question has a value outside the pixel range.

O4. Способ по статье O3, отличающийся тем, что указанный диапазон имеет вид [K0, K1], где K0 установлено равным 0 и K1 устанавливают равным (1<<BitDepth-1), где BitDepth представляет уровень точности прогнозируемого отсчета.O4. The method according to Article O3, characterized in that the specified range is of the form [K0, K1], where K0 is set equal to 0 and K1 is set equal to (1<<BitDepth-1), where BitDepth represents the level of accuracy of the predicted sample.

O5. Способ по какой-либо одной или нескольким из статей O1 – O2, отличающийся тем, что указанное ограничение соответствия потока битов данных специфицирует, что представление в виде потока битов данных является несоответствующим, если информация о доступности рассматриваемого отсчета в буфере указывает, что этот отсчет недоступен для текущего видеоблока.O5. A method according to any one or more of clauses O1 to O2, wherein said data bit stream compliance constraint specifies that the data bit stream representation is non-compliant if information about the availability of the sample in question in the buffer indicates that the sample is not available for the current video block.

O6. Способ по какой-либо одной или нескольким из статей O1 – O2, отличающийся тем, что рассматриваемый отсчет является отсчетом яркостной составляющей, и отличающийся тем, что указанное ограничение соответствия потока битов данных специфицирует, что представление в виде потока битов данных является несоответствующим, если информация о доступности рассматриваемого отсчета в буфере указывает, что этот отсчет недоступен для текущего видеоблока, и для текущего видеоблока используется разбиение в структуре одиночного дерева.O6. A method according to any one or more of clauses O1 to O2, characterized in that the sample in question is a luminance component sample, and characterized in that said data bitstream compliance constraint specifies that the data bitstream representation is inconsistent if the information The availability of the sample in question in the buffer indicates that the sample is not available for the current video block, and a split in a single tree structure is used for the current video block.

O7. Способ по какой-либо одной или нескольким из статей O1 – O6, дополнительно содержащий: O7. A method according to any one or more of articles O1 – O6, additionally containing:

маркировку информации о доступности отсчета в соответствии со значением этого отсчета в буфере. marking information about the availability of a sample in accordance with the value of this sample in the buffer.

O8. Способ по статье O7, отличающийся тем, что, если значение рассматриваемого отсчета лежит в интервале, обозначенном как [K0, K1], информацию о доступности этого отсчета маркируют как доступный.O8. The method according to Article O7, characterized in that if the value of the sample in question lies in the interval designated as [K0, K1], information about the availability of this sample is marked as available.

O9. Способ по статье O8, отличающийся тем, что K0 устанавливают равным 0 и K1 устанавливают равным (1<<BitDepth-1), где BitDepth представляет уровень точности прогнозируемого отсчета.O9. The method according to Article O8, characterized in that K0 is set equal to 0 and K1 is set equal to (1<<BitDepth-1), where BitDepth represents the level of accuracy of the predicted sample.

O10. Способ по какой-либо одной или нескольким из статей O1 – O8, отличающийся тем, что указанное ограничение соответствия потока битов данных далее основано на типе разбиения и типе дерева для единицы кодирования, ассоциированной с текущим видеоблоком.O10. The method of any one or more of clauses O1 to O8, wherein said data bitstream matching constraint is further based on a partitioning type and a tree type for a coding unit associated with the current video block.

O11. Способ по статье O10, отличающийся тем, что, если тип разбиения соответствует двойному дереву и тип дерева является одиночным деревом, тогда ограничение соответствия потока битов данных специфицирует проверку, все ли цветовые составляющие рассматриваемого отсчета маркированы как недоступные.O11. The method of Clause O10, wherein if the partition type corresponds to a double tree and the tree type is a single tree, then the data bitstream matching constraint specifies a check to see whether all color components of the sample in question are marked as unavailable.

O12. Способ по статье O10, отличающийся тем, что если тип разбиения соответствует двойному дереву и тип дерева является двойным деревом, тогда ограничение соответствия потока битов данных специфицирует исключение проверки, маркирована ли цветностная составляющая рассматриваемого отсчета как недоступная.O12. The method of Clause O10, wherein if the partition type corresponds to a binary tree and the tree type is a binary tree, then the data bitstream matching constraint specifies an exception to check whether the chrominance component of the sample in question is marked as unavailable.

O13. Способ по какой-либо одной или нескольким из статей O1 – O12, отличающийся тем, что указанное преобразование осуществляется в режиме внутрикадрового копирования блоков.O13. A method according to any one or more of articles O1 - O12, characterized in that the specified conversion is carried out in the mode of intra-frame block copying.

XX. Способ по какой-либо из статей L1 – XX, отличающийся тем, что процедура преобразования содержит генерацию представления в виде потока битов данных из текущего видеоблока.XX. The method according to any of the articles L1 - XX, characterized in that the conversion procedure contains the generation of a representation in the form of a stream of data bits from the current video block.

XX. Способ по какой-либо из статей L1 – XX, отличающийся тем, что процедура преобразования содержит генерацию значений пикселей текущего видеоблока из представления в виде потока битов данных. XX. The method according to any of the articles L1 - XX, characterized in that the conversion procedure contains the generation of pixel values of the current video block from a representation in the form of a stream of data bits.

XX. Кодирующее устройство для видео содержит процессор, конфигурированный для реализации способа в соответствии с какой-либо одной или нескольких статей L1 – XX. XX. The video encoder comprises a processor configured to implement a method in accordance with any one or more of clauses L1 through XX.

XX. Декодирующее устройство для видео содержит процессор, конфигурированный для реализации способа в соответствии с какой-либо одной или нескольких статей L1 – XX.XX. The video decoding device includes a processor configured to implement a method in accordance with any one or more of clauses L1 to XX.

XX. Читаемый компьютером носитель, имеющий записанный на нем код, где этот код содержит выполняемые процессором команды для реализации способа в соответствии с какой-либо одной или нескольких статей L1 – XX.XX. A computer-readable medium having code written on it, where this code contains instructions executable by a processor to implement a method in accordance with any one or more clauses L1 - XX.

В настоящем документе термин «обработка видео» может обозначать кодирование видео, декодирование видео, сжатие видео или расширение (декомпрессию) видео. Например, алгоритмы сжатия видео могут быть применены в процессе преобразования от пиксельного представления видео в соответствующее представление в виде потока битов данных или наоборот. Представление текущего видеоблока в виде потока битов данных может, например, соответствовать битам, которые либо расположены в одном месте, либо распределены в разных местах в потоке битов данных, как это определено в синтаксисе. Например, макроблок может быть кодирован в терминах трансформированных и кодированных остаточных значений ошибок, а также использования битов в заголовках и в других полях в потоке битов данных.As used herein, the term "video processing" may refer to video encoding, video decoding, video compression, or video expansion (decompression). For example, video compression algorithms may be applied in the process of converting from a pixel representation of a video to a corresponding bitstream representation or vice versa. The representation of the current video block as a data bitstream may, for example, correspond to bits that are either located in one location or distributed in different locations in the data bitstream, as defined in the syntax. For example, a macroblock may be encoded in terms of transformed and encoded error residuals, as well as the use of bits in headers and other fields in the data bitstream.

Из изложенного выше должно быть понятно, что конкретные варианты рассматриваемой в настоящий момент технологии были описаны здесь для целей иллюстрации, однако могут быть сделаны разнообразные модификации без отклонения от объема настоящего изобретения. Соответственно, предлагаемая здесь технология ничем не ограничена за исключением прилагаемой Формулы изобретения.From the foregoing, it will be understood that specific embodiments of the presently contemplated technology have been described herein for purposes of illustration, but various modifications may be made without departing from the scope of the present invention. Accordingly, the technology proposed herein is not limited in any way except by the appended Claims.

Реализация предмета настоящего изобретения и функциональных операций, описываемых в этом патентном документе, может быть осуществлена в различных системах, цифровых электронных схемах или в компьютерном загружаемом программном обеспечении, встроенном программном обеспечении или аппаратуре, включая структуры, рассматриваемые в настоящем описании, и их структурные эквиваленты, или в комбинациях одного или нескольких из перечисленных компонентов. Реализация предмета настоящего изобретения, рассматриваемого в настоящем описании, может быть осуществлена в виде одного или нескольких компьютерных программных продуктов, т.е. одного или нескольких модулей компьютерных программных команд, кодированных на материальном и энергонезависимом читаемом компьютером носителе информации, для выполнения посредством или для управления работой устройства обработки данных. Читаемый компьютером носитель информации может представлять собой машиночитаемое устройство для хранения информации, машиночитаемую подложку для хранения информации, запоминающее устройство, совокупность объектов, создающих машиночитаемый распространяющийся сигнал, или комбинацию одного или нескольких перечисленных компонентов. Термин «модуль обработки данных» или «устройство для обработки данных» или «аппаратура для обработки данных» охватывает всю аппаратуру, устройства и машины для обработки данных, включая, например, программируемый процессор, компьютер, либо несколько процессоров или компьютеров. Аппаратура и устройства могут содержать, в дополнение к оборудованию, код, создающий среду для выполнения рассматриваемых компьютерных программ, например, код, образующий встроенное программное обеспечение процессора, стек протоколов, систему управления базами данных, операционную систему или комбинацию одного или нескольких из перечисленных объектов.Implementation of the subject matter of the present invention and the functional operations described in this patent document may be implemented in various systems, digital electronic circuits, or computer downloadable software, firmware or hardware, including the structures discussed herein and their structural equivalents, or in combinations of one or more of the listed components. The implementation of the subject matter of the present invention, discussed in this description, can be carried out in the form of one or more computer program products, i.e. one or more modules of computer program instructions encoded on a tangible and non-volatile computer-readable storage medium for execution by or to control the operation of a data processing device. The computer-readable storage medium may be a computer-readable storage device, a computer-readable storage substrate, a storage device, a collection of objects that create a computer-readable propagated signal, or a combination of one or more of these components. The term "data processing unit" or "data processing device" or "data processing apparatus" covers all data processing equipment, devices and machines, including, for example, a programmable processor, a computer, or multiple processors or computers. Hardware and devices may contain, in addition to hardware, code that provides an environment for executing the computer programs in question, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these.

Компьютерная программа (также известная как программа, программное обеспечение, программное приложение, сценарий (скрипт) или код) может быть написана на каком-либо языке программирования, включая компилируемые или интерпретируемые языки, и может быть развернута в любой форме, включая автономную программу или в виде модуля, компонента, подпрограммы или другой единицы, подходящей для использования в компьютерной среде. Компьютерная программа необязательно соответствует файлу в файловой системе. Программа может быть сохранена в части файла, который содержит также другие программы или данные (например, один или несколько сценариев сохраняются в документе на языке разметки), в одном файле, специально предназначенном только для рассматриваемой программы, или в нескольких координированных файлах (например, в файлах, сохраняющих один или несколько модулей, подпрограмм или фрагментов кода). Компьютерная программа может быть развернута для выполнения на одном компьютере или на нескольких компьютерах, расположенных в одном пункте или распределенных по нескольким пунктам и соединенных посредством сети связи.A computer program (also known as a program, software, software application, script or code) may be written in any programming language, including compiled or interpreted languages, and may be deployed in any form, including a stand-alone program or in form of a module, component, subroutine, or other unit suitable for use in a computer environment. A computer program does not necessarily correspond to a file on a file system. A program may be stored in a portion of a file that also contains other programs or data (for example, one or more scripts are stored in a markup language document), in a single file specifically dedicated only to the program in question, or in multiple coordinated files (for example, files that save one or more modules, subroutines or code fragments). A computer program may be deployed for execution on a single computer or on multiple computers located at a single location or distributed over multiple locations and connected through a communications network.

Процедуры и логические схемы, описываемые в настоящем документе, могут быть осуществлены одним или несколькими программируемыми процессорами, выполняющими одну или несколько компьютерных программ для реализации функций путем оперирования над входными данными и генерации выходных данных. Эти процедуры и логические схемы могут также быть осуществлены посредством, и аппаратура может также быть реализована в виде, логической схемы специального назначения, например, программируемой пользователем вентильной матрицы (FPGA (field programmable gate array)) или специализированной интегральной схемы (ASIC (application specific integrated circuit)).The procedures and logic described herein may be implemented by one or more programmable processors executing one or more computer programs to implement functions by operating on input data and generating output data. These procedures and logic circuits may also be implemented by, and the hardware may also be implemented in, the form of special-purpose logic circuitry, such as a field programmable gate array (FPGA) or application specific integrated circuit (ASIC). circuit)).

К процессорам, подходящим для выполнения компьютерной программы, относятся, например, микропроцессоры общего и специального назначения и какие-либо один или несколько процессоров цифрового компьютера какого-либо типа. В общем случае, процессор будет принимать команды и данные из постоянного запоминающего устройства и/или из запоминающего устройства с произвольной выборкой. Основными элементами компьютера являются процессор для выполнения команд и одно или несколько запоминающих устройств для сохранения команд и данных. В общем случае, компьютер должен также содержать или быть оперативно связанным для приема данных и/или для передачи данных, с одним или несколькими запоминающими устройствами большой емкости для хранения данных, например, магнитными устройствами, магнитооптическими дисками или оптическими дисками. Однако компьютеру необязательно иметь такие устройства. К читаемым компьютером носителям для сохранения команд компьютерных программ и данных относятся все формы энергонезависимых запоминающих устройств и носителей информации, включая, например, полупроводниковые запоминающие устройства, например, стираемое, программируемое постоянное запоминающее устройство (СППЗУ (EPROM)), электрически стираемое программируемое запоминающее устройство (ЭСППЗУ (EEPROM)) и устройства флэш-памяти. Процессор и запоминающее устройство могут быть дополнены посредством или встроены в логическую схему специального назначения.Processors suitable for executing a computer program include, for example, general purpose and special purpose microprocessors and any one or more digital computer processors of any type. In general, the processor will receive instructions and data from read only memory and/or random access memory. The main elements of a computer are a processor for executing commands and one or more storage devices for storing commands and data. In general, a computer will also comprise or be operatively coupled to receive data and/or transmit data with one or more mass storage devices for storing data, such as magnetic devices, magneto-optical disks, or optical disks. However, the computer does not need to have such devices. Computer-readable media for storing computer program instructions and data includes all forms of non-volatile storage devices and storage media, including, for example, semiconductor storage devices, such as erasable programmable read-only memory (EPROM), electrically erasable programmable memory (EPROM). EEPROM) and flash memory devices. The processor and storage device may be complemented by or integrated into special purpose logic circuitry.

Настоящее описание вместе с прилагаемыми чертежами следует рассматривать только в качестве примеров. Как используется здесь, применение союза «или» должно также охватывать «и/или», если только контекст ясно не указывает иное.This description, together with the accompanying drawings, should be considered as examples only. As used here, the application of the conjunction "or" must also include "and/or" unless the context clearly indicates otherwise.

Хотя настоящий патентный документ содержит много специфических деталей, их не следует толковать в качестве каких-либо ограничений объема какого-либо нововведения или того, что может быть заявлено в качестве изобретения, а просто как описания признаков, которые могут быть специфичными для конкретных вариантов конкретных нововведений. Некоторые признаки, описываемые в настоящем патентном документе в контексте раздельных вариантов, могут быть также реализованы в виде комбинации в одном варианте. Напротив, различные признаки, описываемые в контексте одного варианта, могут быть также реализованы в нескольких вариантах по отдельности или в какой-либо подходящей субкомбинации. Более того, хотя признаки могут быть описаны выше как действующие в определенных комбинациях и даже первоначально заявлены как таковые, один или несколько признаков из заявляемой комбинации могут быть в некоторых случаях исключены из этой заявляемой комбинации, так что эта заявляемая комбинация может быть превращена в субкомбинацию или вариации такой субкомбинации.Although this patent document contains many specific details, they should not be construed as any limitation on the scope of any innovation or what may be claimed as an invention, but merely as descriptions of features that may be specific to particular embodiments of particular innovations . Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of one embodiment may also be implemented in multiple embodiments individually or in some suitable subcombination. Moreover, although features may be described above as operating in certain combinations and even initially claimed as such, one or more features from a claimed combination may in some cases be excluded from that claimed combination such that the claimed combination may be converted into a subcombination or variations of such a subcombination.

Аналогично, тогда как операции изображены на чертежах в конкретном порядке, это не следует понимать как требование, что такие операции должны выполняться в показанном конкретном порядке или в последовательном порядке или что все показанные операции должны быть выполнены для достижения желаемых результатов. Более того, разделение различных системных компонентов, описываемых в настоящем патентном документе, не следует понимать как требование такого разделения во всех вариантах.Likewise, while operations are depicted in the drawings in a particular order, this should not be construed as a requirement that such operations must be performed in the specific order shown or in a sequential order or that all operations shown must be performed to achieve the desired results. Moreover, the separation of the various system components described in this patent document should not be understood as requiring such separation in all embodiments.

Здесь описаны только несколько вариантов и примеров, однако и другие варианты реализации, усовершенствования и вариации могут быть созданы на основе того, что описано и иллюстрировано в настоящем документе.Only a few embodiments and examples are described herein, however, other embodiments, improvements and variations may be created based on what is described and illustrated herein.

Claims (46)

1. Способ обработки видеоданных, содержащий этапы, на которых:1. A method for processing video data, comprising the steps of: определяют, для преобразования между текущим видеоблоком текущего изображения видео и потоком битов данных видео, что к текущему видеоблоку применяется первый режим прогнозирования;determining, for conversion between the current video block of the current video image and the video data bitstream, that a first prediction mode is applied to the current video block; поддерживают, для первого режима прогнозирования, виртуальный буфер заданного размера, содержащий опорные отсчеты, полученные из опорной области текущего изображения;maintain, for the first prediction mode, a virtual buffer of a given size containing reference samples obtained from the reference region of the current image; получают, для текущего видеоблока, прогнозируемый блок, определяемый блочным вектором в виртуальном буфере; иobtaining, for the current video block, a predicted block defined by a block vector in the virtual buffer; And выполняют преобразование по меньшей мере на основе прогнозируемого блока,perform a transformation based on at least the predicted block, при этом поднабор опорных отсчетов в виртуальном буфере недоступен для получения прогнозируемого блока,in this case, a subset of reference samples in the virtual buffer is not available to obtain the predicted block, местоположения поднабора опорных отсчетов определяются на основе размера виртуальной единицы,the locations of a subset of reference samples are determined based on the size of the virtual unit, когда текущий видеоблок содержит одну или более виртуальных единиц, местоположения поднабора опорных отсчетов дополнительно определяются на основе размера текущего видеоблока,when the current video block contains one or more virtual units, the locations of a subset of reference samples are further determined based on the size of the current video block, местоположения поднабора опорных отсчетов определяются на основе (x0, y0), где y0 % Vsize = 0, (x0, y0) задает местоположение на текущем изображении, где Vsize обозначает размер виртуальной единицы, причем местоположения поднабора опорных отсчетов дополнительно определяются на основе значения x0 % Vsize, где % представляет собой операцию по модулю.the reference sample subset locations are determined based on (x0, y0), where y0 % Vsize = 0, (x0, y0) specifies a location in the current image, where Vsize denotes the size of the virtual unit, and the reference sample subset locations are further determined based on the x0 % value Vsize, where % represents the modulo operation. 2. Способ по п.1, в котором размер виртуального буфера составляет mхW х nхH, где W обозначает ширину виртуальной единицы, H обозначает высоту виртуальной единицы, и m и n являются целыми числами.2. The method of claim 1, wherein the size of the virtual buffer is mxW x nxH, where W denotes the width of the virtual unit, H denotes the height of the virtual unit, and m and n are integers. 3. Способ по п.2, в котором значения m и n зависят от размера блока дерева кодирования.3. The method according to claim 2, wherein the values of m and n depend on the block size of the coding tree. 4. Способ по п.3, в котором m=4 и n=2.4. The method according to claim 3, in which m=4 and n=2. 5. Способ по п.1, в котором поднабор опорных отсчетов расположен в позициях (x, y) в виртуальном буфере, причем x находится в первом заданном диапазоне в виртуальном буфере, определяемом на основе x0, а y находится во втором заданном диапазоне в виртуальном буфере, определяемом на основе y0, где (x0, y0) обозначает верхний левый угол виртуальной единицы.5. The method of claim 1, wherein the subset of reference samples is located at positions (x, y) in the virtual buffer, wherein x is in a first specified range in the virtual buffer determined based on x0, and y is in a second specified range in the virtual buffer defined based on y0, where (x0, y0) denotes the upper left corner of the virtual unit. 6. Способ по п.5, в котором первый заданный диапазон и второй заданный диапазон дополнительно определяются на основе Vsize.6. The method of claim 5, wherein the first predetermined range and the second predetermined range are further determined based on Vsize. 7. Способ по п.1, в котором виртуальный буфер сбрасывается перед кодированием изображения или слайса.7. The method of claim 1, wherein the virtual buffer is reset before encoding the image or slice. 8. Способ по п.1, в котором на этапе преобразования кодируют текущий видеоблок в поток битов данных.8. The method according to claim 1, wherein the conversion step encodes the current video block into a stream of data bits. 9. Способ по п.1, в котором на этапе преобразования декодируют текущий видеоблок из потока битов данных.9. The method according to claim 1, wherein the conversion step decodes the current video block from the data bit stream. 10. Способ по п.1, в котором размер виртуальной единицы равен 64 или равен размеру блока дерева кодирования, включающего в себя текущий видеоблок.10. The method of claim 1, wherein the size of the virtual unit is 64 or equal to the block size of the coding tree including the current video block. 11. Устройство обработки видеоданных, содержащее процессор и энергонезависимую память с инструкциями, причем инструкции при их исполнении процессором вызывают выполнение процессором:11. A video data processing device containing a processor and non-volatile memory with instructions, wherein the instructions, when executed by the processor, cause the processor to execute: определения, для преобразования между текущим видеоблоком текущего изображения видео и потоком битов данных видео, что к текущему видеоблоку применяется первый режим прогнозирования;determining, for conversion between the current video block of the current video image and the video data bitstream, that a first prediction mode is applied to the current video block; поддержки, для первого режима прогнозирования, виртуального буфера заданного размера, содержащего опорные отсчеты, полученные из опорной области текущего изображения;maintaining, for the first prediction mode, a virtual buffer of a given size containing reference samples obtained from the reference region of the current image; получения, для текущего видеоблока, прогнозируемого блока, определенного блочным вектором в виртуальном буфере; иobtaining, for the current video block, a predicted block defined by a block vector in the virtual buffer; And выполнения преобразования по меньшей мере на основе прогнозируемого блока,performing a transformation based on at least a predicted block, при этом поднабор опорных отсчетов в виртуальном буфере недоступен для получения прогнозируемого блока,in this case, a subset of reference samples in the virtual buffer is not available to obtain the predicted block, местоположения поднабора опорных отсчетов определяются на основе размера виртуальной единицы,the locations of a subset of reference samples are determined based on the size of the virtual unit, когда текущий видеоблок содержит одну или более виртуальных единиц, местоположения поднабора опорных отсчетов дополнительно определяются на основе размера текущего видеоблока,when the current video block contains one or more virtual units, the locations of a subset of reference samples are further determined based on the size of the current video block, местоположения поднабора опорных отсчетов определяются на основе (x0, y0), где y0 % Vsize = 0, (x0, y0) задает местоположение на текущем изображении, где Vsize обозначает размер виртуальной единицы, причем местоположения поднабора опорных отсчетов дополнительно определяются на основе значения x0 % Vsize, где % представляет собой операцию по модулю.the reference sample subset locations are determined based on (x0, y0), where y0 % Vsize = 0, (x0, y0) specifies a location in the current image, where Vsize denotes the size of the virtual unit, and the reference sample subset locations are further determined based on the x0 % value Vsize, where % represents the modulo operation. 12. Энергонезависимый читаемый компьютером носитель для записи информации, хранящий инструкции, которые вызывают выполнение процессором:12. A non-volatile computer-readable recording medium that stores instructions that cause the processor to execute: определения, для преобразования между текущим видеоблоком текущего изображения видео и потоком битов данных видео, что к текущему видеоблоку применяется первый режим прогнозирования;determining, for conversion between the current video block of the current video image and the video data bit stream, that a first prediction mode is applied to the current video block; поддержки, для первого режима прогнозирования, виртуального буфера заданного размера, содержащего опорные отсчеты, полученные из опорной области текущего изображения;maintaining, for the first prediction mode, a virtual buffer of a given size containing reference samples obtained from the reference region of the current image; получения, для текущего видеоблока, прогнозируемого блока, определенного блочным вектором в виртуальном буфере; иobtaining, for the current video block, a predicted block defined by a block vector in the virtual buffer; And выполнения преобразования по меньшей мере на основе прогнозируемого блока,performing a transformation based on at least a predicted block, при этом поднабор опорных отсчетов в виртуальном буфере недоступен для получения прогнозируемого блока,in this case, a subset of reference samples in the virtual buffer is not available to obtain the predicted block, местоположения поднабора опорных отсчетов определяются на основе размера виртуальной единицы,the locations of a subset of reference samples are determined based on the size of the virtual unit, когда текущий видеоблок содержит одну или более виртуальных единиц, местоположения поднабора опорных отсчетов дополнительно определяются на основе размера текущего видеоблока,when the current video block contains one or more virtual units, the locations of a subset of reference samples are further determined based on the size of the current video block, местоположения поднабора опорных отсчетов определяются на основе (x0, y0), где y0 % Vsize = 0, (x0, y0) задает местоположение на текущем изображении, где Vsize обозначает размер виртуальной единицы, причем местоположения поднабора опорных отсчетов дополнительно определяются на основе значения x0 % Vsize, где % представляет собой операцию по модулю.the reference sample subset locations are determined based on (x0, y0), where y0 % Vsize = 0, (x0, y0) specifies a location in the current image, where Vsize denotes the size of the virtual unit, and the reference sample subset locations are further determined based on the x0 % value Vsize, where % represents the modulo operation. 13. Способ сохранения потока битов данных видео, содержащий этапы, на которых:13. A method for storing a video data bit stream, comprising the steps of: определяют, что к текущему видеоблоку текущего изображения видео применяется первый режим прогнозирования;determining that a first prediction mode is applied to the current video block of the current video image; поддерживают, для первого режима прогнозирования, виртуальный буфер заданного размера, содержащий опорные отсчеты, полученные из опорной области текущего изображения;maintain, for the first prediction mode, a virtual buffer of a given size containing reference samples obtained from the reference region of the current image; получают, для текущего видеоблока, прогнозируемый блок, определяемый блочным вектором в виртуальном буфере; obtaining, for the current video block, a predicted block defined by a block vector in the virtual buffer; генерируют поток битов данных из текущего видеоблока по меньшей мере на основе прогнозируемого блока; иgenerating a stream of data bits from the current video block at least based on the predicted block; And сохраняют поток битов данных на энергонезависимом читаемом компьютером носителе для записи информации, storing a stream of data bits on a non-volatile computer-readable medium for recording information, при этом поднабор опорных отсчетов в виртуальном буфере недоступен для получения прогнозируемого блока,in this case, a subset of reference samples in the virtual buffer is not available to obtain the predicted block, местоположения поднабора опорных отсчетов определяются на основе размера виртуальной единицы,the locations of a subset of reference samples are determined based on the size of the virtual unit, когда текущий видеоблок содержит одну или более виртуальных единиц, местоположения поднабора опорных отсчетов дополнительно определяются на основе размера текущего видеоблока,when the current video block contains one or more virtual units, the locations of a subset of reference samples are further determined based on the size of the current video block, местоположения поднабора опорных отсчетов определяются на основе (x0, y0), где y0 % Vsize = 0, (x0, y0) задает местоположение на текущем изображении, где Vsize обозначает размер виртуальной единицы, причем местоположения поднабора опорных отсчетов дополнительно определяются на основе значения x0 % Vsize, где % представляет собой операцию по модулю.the reference sample subset locations are determined based on (x0, y0), where y0 % Vsize = 0, (x0, y0) specifies a location in the current image, where Vsize denotes the size of the virtual unit, and the reference sample subset locations are further determined based on the x0 % value Vsize, where % represents the modulo operation.
RU2021139676A 2019-07-06 2020-07-01 Virtual buffer for prediction when coding video in intra-frame block copying mode RU2811460C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/094957 2019-07-06
CNPCT/CN2019/095297 2019-07-09

Publications (2)

Publication Number Publication Date
RU2021139676A RU2021139676A (en) 2023-06-29
RU2811460C2 true RU2811460C2 (en) 2024-01-11

Family

ID=

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008067734A1 (en) * 2006-12-05 2008-06-12 Huawei Technologies Co., Ltd. An encoding/decoding method and device, a fractional pixel interpolation processing method and device
US8295361B2 (en) * 2009-03-11 2012-10-23 Quanta Computer Inc. Video compression circuit and method thereof
RU2587420C2 (en) * 2011-09-23 2016-06-20 Квэлкомм Инкорпорейтед Control of buffer of decoded images
US20160227222A1 (en) * 2015-02-02 2016-08-04 Mediatek Inc. Multi-Standard Video Decoder with Novel Intra Prediction Decoding
US20160330474A1 (en) * 2014-02-21 2016-11-10 Shan Liu Method of Video Coding Using Prediction based on Intra Picture Block Copy
US20180160122A1 (en) * 2015-05-29 2018-06-07 Hfi Innovation Inc. Method of Decoded Picture Buffer Management for Intra Block Copy Mode
WO2019017694A1 (en) * 2017-07-18 2019-01-24 엘지전자 주식회사 Intra-prediction mode-based image processing method and apparatus for same
US20190191167A1 (en) * 2017-12-18 2019-06-20 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008067734A1 (en) * 2006-12-05 2008-06-12 Huawei Technologies Co., Ltd. An encoding/decoding method and device, a fractional pixel interpolation processing method and device
US8295361B2 (en) * 2009-03-11 2012-10-23 Quanta Computer Inc. Video compression circuit and method thereof
RU2587420C2 (en) * 2011-09-23 2016-06-20 Квэлкомм Инкорпорейтед Control of buffer of decoded images
US20160330474A1 (en) * 2014-02-21 2016-11-10 Shan Liu Method of Video Coding Using Prediction based on Intra Picture Block Copy
US20160227222A1 (en) * 2015-02-02 2016-08-04 Mediatek Inc. Multi-Standard Video Decoder with Novel Intra Prediction Decoding
US20180160122A1 (en) * 2015-05-29 2018-06-07 Hfi Innovation Inc. Method of Decoded Picture Buffer Management for Intra Block Copy Mode
WO2019017694A1 (en) * 2017-07-18 2019-01-24 엘지전자 주식회사 Intra-prediction mode-based image processing method and apparatus for same
US20190191167A1 (en) * 2017-12-18 2019-06-20 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method

Similar Documents

Publication Publication Date Title
CN113383541B (en) Buffer access method for intra block copy in video encoding and decoding
KR102653088B1 (en) Buffer initialization for intra block copy in video coding
CN114097221B (en) Bit stream consistency constraints for intra block copying in video codec
CN114175645B (en) Virtual prediction buffering for intra block copying in video codec
JP7288084B2 (en) Signaling in conversion skip mode
JP7288083B2 (en) Encoding mode based on encoding tree structure type
CN114175633B (en) Sample identification for intra block copying in video codec
WO2021004496A1 (en) Bitstream conformance constraints for intra block copy in video coding
EP3981148A1 (en) Sample identification for intra block copy in video coding
RU2811460C2 (en) Virtual buffer for prediction when coding video in intra-frame block copying mode
WO2021004348A1 (en) Virtual prediction buffer for intra block copy in video coding
RU2811517C2 (en) Identification of samples for intra-frame block copying mode during video coding
RU2811022C2 (en) Buffer management method for intra-frame block copying mode when encoding video
JP7384910B2 (en) Buffer management for intra block copy in video encoding